SSL چیست؟

SSL یک پروتکل رمزنگاری است که برای برقراری یک ارتباطات امن بین یک سرویس دهنده و یک سرویس گیرنده طراحی شده است. در اینترنت بسیاری از وب سایت‌ها از این پروتکل و البته جایگزین آن یعنی پروتکل TLS برای دریافت داده‌های حساس کاربر مانند، کلمه عبور، اطلاعات بانکی کاربر استفاده می‌کنند. استفاده از این پروتکل‌ها تضمین دهنده‌ی این است که یک نفوذگر نباید بتواند اطلاعات رمز شده را در طول مسیر رمز‌گشایی (تغییر و …) کند. SSL یک پروتکل قدیمی می‌باشد نسخه‌ی سوم آن مربوط به ۱۵ سال پیش می‌باشد اما همچنان در مرورگرها از آن پشتیبانی می‌شود. بیشتر وب‌سایت ها از نسخه‌های TLS استفاده می‌کنند اما در صورت عدم پشتیبانی مرورگر کاربر از TLS سعی می‌کنند از نسخه‌های قدیمی‌تر، مانند SSLv3 برای برقراری ارتباط استفاده کنند.

آسیب‌پذیری چیست؟

در هنگام اولین اتصال به سرویس‌دهنده (وب سرور)،  سرویس‌گیرنده (مرورگر کاربر) سعی می‌کند از طریق بالاترین نسخه‌ای که  پشتیبانی می‌کند (مثلاً TLS 1.2) ارتباط را ایجاد کند. اگر وب سرور نیز  قابلیت پشتیبانی از این نسخه را داشته باشد ارتباط برقرار می‌شود در غیر  این صورت اگر مثلاً وب سرور از نسخه‌ی TLS 1.0 استفاده کند، مرورگر کاربر  نیز به نسخه‌ی پایین‌تر یعنی TLS 1.0 سوییچ می‌کند. به این رویکرد  downgrade گفته می‌شود می‌تواند توسط یک نفوذگر داخل شبکه‌ی کاربر نیز  اتفاق بیافتد. که در اینجا نفوذگر مرورگر کاربر را وادار می‌کند تا از طریق  SSLv3 اتصال را برقرار نماید. در SSLv3 برای رمزنگاری از روش‌های RC4 و یا  یک روش رمز بلوکی در حالت CBC استفاده می‌شود. در ساختار رمز بلوکی در  حالت CBC این پروتکل مشکلی وجود دارد که باعث می‌شود نفوذگر بتواند با  آزمون خطا، با تعداد درخواست های اندکی، قسمتی از درخواست رمز شده بین  مرورگر و وب سرور را حدس بزند. این داده‌ی حدس زده شده می‌تواند کوکی کاربر  باشد که نفوذگر با استفاده از آن می‌تواند وارد حساب کاربر بشود.اصل مبنای تئوری این آسیب پذیری توسط Serge Vaudenay در سال ۲۰۰۱ مطرح شده بود، اما او فکر می‌کرده است که امکان استفاده عملی از این آسیب پذیری وجود ندارد و نهایتا این آسیب‌پذیری توسط مهندسان گوگل اعلام شد و Poodle نام گرفت.

چه کسی تحت تأثیر این آسیب‌پذیری قرار می‌گیرد؟

کاربران هر وب‌سایتی (سرویس دهنده) که از SSLv3 پشتیبانی کند (در تنظیمات وب سرور غیر فعال نکرده باشد)، آسیب‌پذیر می‌باشند. در‌ واقع حتی اگر وب سایت از نسخه‌های TLS استفاده کند به دلیل قابلیت downgrade (بازگشت به نسخه‌ی قبلی) آسیب‌پذیر می‌باشد زیرا نفوذگر داخل شبکه می‌تواند مرورگر کاربر را وادار کند تا از طریق SSLv3 اتصال برقرار کند.

کاربر چگونه تحت تأثیر این آسیب‌پذیری قرار می‌گیرد؟

نفوذگر (داخل شبکه‌ی کاربر) با بهره‌برداری از این آسیب‌پذیری می‌تواند اطلاعات حساس کاربر مانند (کوکی که هویت کاربر است) را برباید و در نهایت وارد حساب کاربر شود.

راه‌حل پیشنهادی چیست؟

همان‌طور که نیمه شب گذشته از طریق اکانت توییتر بیان اعلام شد بهترین راه حل برای این آسیب‌پذیریی عدم استفاده از SSLv3 توسط سرویس‌دهنده (وب سرور) و سرویس‌گیرنده (کاربر) می‌باشد. البته اگر سرویس دهنده‌ای تنها از SSLv3 استفاده کند، غیرفعال کردن آن در سمت کاربر (سرویس گیرنده) می‌تواند باعث عدم دسترسی به سرویس‌دهنده شود.

 

نحوه غیر فعال کردن SSL 3.0 در مرورگرهای مختلف در سیستم عامل ویندوز

مرورگر Internet Explorer

 

  1. از منوی Tools گزینه Internet Options را انتخاب کنید.
  2. صفحه Internet Options باز می شود.
  3. در این صفحه برگه Advanced را انتخاب کنید. (نام برگه ها به صورت افقی در بالای صفحه لیست شده است)
  4. در این برگه تعداد زیادی گزینه (چک باکس) وجود دارد که با کلیک بر روی هر کدام می توانید آن گزینه را تیک دار کنید یا تیک آن را بردارید. این گزینه ها در دسته های مختلفی دسته بندی شده اند.
  5. با اسکرول صفحه به سمت پایین به مجموعه گزینه هایی که در دسته Security قرار گرفته اند برسید.
  6. در این دسته، تیک مربوط به گزینه هایی که با عنوان Use SSL شروع شده اند را بردارید (اگر تیک دارند). معمولا دو گزینه Use SSL 2.0 و Use SSL 3.0 باید وجود داشته باشند.
  7. در همین دسته، گزینه هایی که با عنوان Use TLS شروع می شوند را تیک بزنید (اگر تیک ندارند). معمولا گزینه Use TLS 1.0 وجود دارد و ممکن است گزینه های Use TLS 1.1 و Use TLS 1.2 نیز وجود داشته باشند.
  8. در نهایت صفحه شما باید مشابه شکل زیر شده باشد (ممکن است بعضی از گزینه ها وجود نداشته باشند):
  9. دکمه Ok را بزنید تا تغییرات شما ذخیره شوند.

 

مرورگر Firefox

راه اول: استفاده از افزونه ارائه شده توسط موزیلا. توجه کنید که این راه فقط برای نسخه های 26 به بالای Firefox قابل استفاده است.
  1. توسط مرورگر خود به این آدرس بروید:
    https://addons.mozilla.org/en-US/firefox/addon/ssl-version-control
  2. در این صفحه، دکمه Add to Firefox را کلیک کنید.
  3. از پنجره ای که باز می شود دکمه Allow را انتخاب کنید.
  4. پس از مدتی پنجره دیگری باز می شود. در این پنجره دکمه Install Now (که در پایین پنجره قرار گرفته است) را کلیک کنید.
  5. پس از مدتی پیغامی مبتنی بر نصب موفقیت آمیز افزونه به شما داده می شود. 
  6. این افزونه به طور اتوماتیک همه کارها را انجام می دهد.

راه دوم: استفاده از تنظیمات پیشرفته (فقط برای کاربران حرفه ای)
  1. عبارت about:config را در قسمت آدرس بار مرورگر خود تایپ کنید.
  2. در صفحه باز شده در قسمت جستجو عبارت tls را وارد کنید و دکمه Enter را بزنید. 
  3. بر روی سطری که دارای عنوان security.tls.version.min می باشد "دبل کلیک" کنید.
  4. پنجره ای باز می شود که می توانید در آن مقدار وارد کنید.
  5.  عدد 1 را وارد کنید و سپس دکمه Ok را بفشارید.

مرورگر Chrome

در حال حاضر در مرورگر Chrome تنها می توان از طریق گزینه های خط فرمان SSL را غیر فعال کرد. راه حل زیر فقط برای حالتی مناسب است که شما مرورگر خود را از طریق میانبر (shortcut) موجود بر روی دسکتاپ اجرا می کنید.
  1. بر روی میانبر Chrome بر روی دسکتاپ کلیک راست کنید و گزینه Properties را از منوی باز شده انتخاب کنید.
  2. در صفحه باز شده به فیلد Target را پیدا کنید و بر روی جعبه ورودی مقابل آن کلیک کنید.
  3. به انتهای مقدار وارد شده در این جعبه بروید که عبارت chrome.exe” می باشد.
  4. با گذاشتن یک فاصله (space) این عبارت را پس از عبارت بالا وارد کنید:   --ssl-version-min=tls1
  5. دکمه Ok را بزنید.

توجه داشته باشید که برای استفاده از راه حل بالا، از این پس تنها باید از طریق این میانبر مرورگر خود را اجرا کنید. به عنوان مثال اگر کروم را از طریق میانبری که در منوی Start شما قرار گرفته است اجرا کنید طبیعتا در آن حالت مرورگر شما امن نخواهد بود. البته می توانید این کار را برای سایر میانبرهای کروم نیز اجرا کنید.

مدیران سایت‌ها چه کاری باید انجام دهند؟

بهترین راه حل برای گردانندگان سایت‌ها (یا وب مسترها) برای جلوگیری از این آسیب پذیری غیر فعال کردن SSLv3 در تنظیمات web-server است. البته این باعث می‌شود که مرورگر IE6 (که البته دیگر پشتیبانی هم نمی‌شود و سهم کمی در مرورگرها دارد) امکان اتصال به https سایت را نداشته باشد، اما اگر امنیت و راحتی کاربران مهم است (به دلیل وجود مشکلات امنیتی و کارکردی متعدد در IE6) بهتر است این مرورگر (حداقل برای اتصال امن با https) نادیده گرفته شود.

روش غیر فعال کردن SSLv3 در سرورهای مختلف به صورت زیر است.

ضمنا باید به نکات زیر نیز توجه نمود:

  • در مورد هر سرور، بعد از تغییر تنظیمات باید سرویس مربوط را restart کرد.
  • بهتر است طبق راهنمای موزیلا الگوریتم‌های مورد استفاده وب سرور خود را نیز تغییر دهید.

غیر فعال کردن SSL3 در Apache

کافیست تنظیم زیر در کنار بقیه تنظمیات SSL درج شود (دقت کنید که تنظیم SSLProtocol از قبل وجود نداشته باشد)

SSLProtocol All -SSLv2 -SSLv3

غیر فعال کردن SSL3 در Nginx

این خط باید به تنظیمات nginx اضافه شود: (در قسمت http یا server)

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

غیر فعال کردن SSL3 در Lighttpd

عبارات زیر باید به تنظیمات lighttpd و بعد از خط ssl.engine = "enable" اضافه شوند:

ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"

 

* به روز رسانی: ابزار بیان برای تشخیص آن لاین این آسیب پذیری در مرورگرها و وب سایت ها: