আজকের বিষয়: SSLv3 Vulnerability & POODLE Attack
SSLv3 Vulnerability বুঝতে, প্রথমেই আমাদেরকে কিভাবে ক্লায়েন্ট এবং সার্ভারের মধ্যে সিকিউর HTTPS কানেকশন তৈরি হয় সেটা সম্পর্কে সম্যক ধারণা থাকা দরকার এবং সেটা আমি নিচের চিত্রের মাধ্যমে বুঝানোর চেষ্টা করছি ইনশাল্লাহ-
যখন কোনো ব্রাউজারে https (HTTP+SSL) লিংক(https://www.google.com.bd)-এ ক্লিক করা হয় তখন যা ঘটে, তা হলো-
প্রথমেই ক্লায়েন্ট, সার্ভারের সাথে 443 পোর্টে TCP কানেকশন তৈরি করে | তারপর শুরু হয় SSL Handshake.
1. SSL Handshake-এর ক্ষেত্রে ক্লায়েন্ট প্রথমে SSL CLIENT HELLO মেসেজ পাঠায় সার্ভারের কাছে negotiate করার জন্য| এটার মাধ্যমে আসলে ক্লায়েন্ট সার্ভারকে জানায় যে, আমি এই এই জিনিস সাপোর্ট করি, তুমি এর মধ্য থেকে কোন গুলো দিয়ে আমার সাথে negotiate করবা |
CLIENT HELLO মেসেজ বহন করে-
1. SSL Handshake-এর ক্ষেত্রে ক্লায়েন্ট প্রথমে SSL CLIENT HELLO মেসেজ পাঠায় সার্ভারের কাছে negotiate করার জন্য| এটার মাধ্যমে আসলে ক্লায়েন্ট সার্ভারকে জানায় যে, আমি এই এই জিনিস সাপোর্ট করি, তুমি এর মধ্য থেকে কোন গুলো দিয়ে আমার সাথে negotiate করবা |
CLIENT HELLO মেসেজ বহন করে-
(i) Highest SSL ভার্সন যেটা সে সাপোর্ট করে
(ii) ডাটা কম্প্রেশন মেথড যেমন gzip
(iii) Ciphers for encryption যেমন MD5, SHA-1, DES
(iv) Random ভ্যালু যেটা পরবর্তীতে Symmetric Key তৈরিতে ব্যবহার করে |
2. তারপর সার্ভার response করে SERVER HELLO মেসেজের মাধ্যমে এবং এটার মাধ্যমে সার্ভার CLIENT HELLO মেসেজের against-এ যা যা সাপোর্ট করে তা বলে দেয় তার মানে negotiate করে |
SERVER HELLO মেসেজ বহন করে-
(i) Highest SSL ভার্সন যেটা ক্লায়েন্ট সাপোর্ট করে
(ii) ডাটা কম্প্রেশন মেথড যেটা ক্লায়েন্ট সাপোর্ট করে
(iii) Ciphers for encryption যেটা ক্লায়েন্ট সাপোর্ট করে
(iv) Random ভ্যালু যেটা পরবর্তীতে Symmetric Key তৈরিতে ব্যবহার করে |
(v) এবং Session ID এই SSL সেশনের জন্য
3. SERVER HELLO মেসেজের পর সার্ভার ক্লায়েন্ট-এর কাছে Certificate পাঠায় | এটাকে বলা হয় ডিজিটাল সার্টিফিকেট যেটা provide করে সার্টিফিকেট অথরিটি যেমন Verisign, Digicert ইত্যাদি | Certificate পাঠানোর উদ্দেশ্য দুইটি-
(i) এটার মাধ্যমে সার্ভার ক্লায়েন্ট-এর কাছে তার Public Key পাঠায় যেটা দিয়ে ক্লায়েন্ট ডাটা এনক্রিপ্ট করে সার্ভারের কাছে পাঠাবে |
(ii) এবং এটা সার্ভারের identity বহন করে
(ii) এবং এটা সার্ভারের identity বহন করে
4. তারপর সার্ভার HELLO DONE মেসেজের মাধ্যমে ক্লায়েন্টকে জানিয়ে দেয় যে negotiation শেষ |
5. তারপর ক্লায়েন্ট Client Key Exchange মেসেজের দ্বারা, সার্ভারের পাবলিক key ব্যবহার করে এনক্রিপ্টেড SSL Session Information সার্ভারকে পাঠায় |
6. তারপর ক্লায়েন্ট Change Cipher Spec মেসেজ পাঠায় সার্ভারকে এই জন্য যে ভবিষ্যতে তাদের মধ্যে সব মেসেজ আদান-প্রদান হবে এনক্রিপ্ট করে |
7. তারপর ক্লায়েন্ট, সার্ভারকে Finished মেসেজ পাঠায় এই জন্য যে SSL negotiation successfully verified.
8. তারপর সার্ভার Change Cipher Spec মেসেজ পাঠায় ক্লায়েন্টকে এই জন্য যে ভবিষ্যতে তাদের মধ্যে সব মেসেজ আদান-প্রদান হবে এনক্রিপ্ট করে |
9. তারপর সার্ভার, ক্লায়েন্টকে Finished মেসেজ পাঠায় এই জন্য যে SSL negotiation successfully verified.
তাহলে TLS(Transport Layer Security) কি ? TLS আসলে কিছুই না, TLS হলো SSL বা Secure Sockets Layer প্রোটোকলের latest ভার্সন |
আবার আসা যাক, SSLv3 Vulnerability কি ?
কয়েক দিন আগে গুগলের তিন সিকিউরিটি কুতুব Bodo Moller, Thai Doung এবং Krzysztof আবিস্কার করলেন যে, Cipher Block Changing (CBC) encryption algorithm(যেটা ব্যবহার করা হয়েছে SSL3.0 তে)-এর দুর্বলতার কারণে ব্রাউজার টু সার্ভার এবং সার্ভার টু ব্রাউজার-এর মধ্যকার এনক্রিপ্টেড ট্রাফিক, ডিক্রিপ্ট করা সম্ভব |এটাকে বলা হয় POODLE(Padding Oracle On Downgraded Legacy Encryption).
কিভাবে POODLE attack করা হয়:
যখন ক্লায়েন্ট এবং সার্ভারের মধ্যে নেগোশিয়েশন হয় তখন ক্লায়েন্ট সব সময়ই তার সাপোর্টকৃত highest সিকিউরিটি প্রোটোকল (TLSv1.1 or higher>SSLv3 ) দ্বারা negotiate করতে চাই | POODLE attack হলো man in middle attack যেটা ব্রাউজার এবং সার্ভারের মধ্যে সিকিউরিটি প্রোটোকল negotiation-এর সময়, ব্রাউজার বা সার্ভারকে ডাউনগ্রেড প্রোটোকল ব্যবহার করতে ফোর্স করে, SSL handshaking-এ বাধা দেয়ার মাধ্যমে যেমন TLSv1-এর পরিবর্তে SSLv3.
যেহেতু man in middle attack তার মানে হ্যাকার/attacker কে অবশ্যই ব্রাউজার বা সার্ভারের একই নেটওয়ার্কে থাকবে হবে অথবা malicious JavaScript কোড execute-এর মাধ্যমে |
Affected Systems:
- অধিকাংশ OS যেমন Windows, Redhat ইত্যাদি |
- অধিকাংশ ব্রাউজার যেমন মজিলা, গুগলক্রোম, IE ইত্যাদি |
কিভাবে Mitigate করা যায়:
সব ধরনের সিস্টেম(OS, ব্রাউজার) থেকে SSLv3 আপাতত disabled করে রাখায় ভালো এবং যে সমস্ত cipher suite, CBC mode ব্যবহার করে না তাদের সিস্টেমে enable রাখা যেমন TSL
1.0, TLS1.1, TLS1.2 ইত্যাদি |
সুখবর:
অধিকাংশ ব্রাউজার এই মাসের মধ্যেই POODLE attack থেকে বাচতে তারা তাদের সিস্টেমে TLS ডাউনগ্রেড মেকানিজম নিয়ে আসছে যেটাকে বলা হয় SCSV (Signaling Cipher Suite Value).


































