HTTPS ليس دائمًا آمنًا كما يبدو. تم العثور على ثغرات أمنية في 5,5٪ من مواقع HTTPS

HTTPS ليس دائمًا آمنًا كما يبدو. تم العثور على ثغرات أمنية في 5,5٪ من مواقع HTTPS
أحد أهم مواقع Alexa (الدائرة المركزية) ، مؤمن بواسطة HTTPS ، مع نطاقات فرعية (رمادية) وتبعيات (بيضاء) ، من بينها مواقع ضعيفة (تظليل متقطع)

في الوقت الحاضر ، أصبح رمز الاتصال الآمن HTTPS سمة قياسية وحتى ضرورية لأي موقع جاد. لو شهادة في عداد المفقودين ، تعرض جميع المتصفحات الحديثة تقريبًا تحذيرًا بأن الاتصال بالموقع "غير آمن" ولا تنصح بنقل المعلومات السرية إليها.

ولكن اتضح أن وجود "قفل" في شريط العناوين لا يضمن دائمًا الحماية. فحص 10 موقع رائد من التصنيف ، أظهر Alexa أن العديد منهم عرضة لنقاط ضعف حرجة في بروتوكولات SSL / TLS ، عادةً من خلال المجالات الفرعية أو التبعيات. وفقًا لمؤلفي الدراسة ، فإن تعقيد تطبيقات الويب الحديثة يزيد بشكل كبير من سطح الهجوم.

نتائج الدراسة

أجرى الدراسة خبراء من جامعة فينيسيا كا فوسكاري (إيطاليا) وجامعة فيينا التقنية. سيقدمون تقريرًا مفصلاً في ندوة IEEE الأربعين حول الأمن والخصوصية ، والتي ستعقد في الفترة من 40 إلى 20 مايو 22 في سان فرانسيسكو.

تم اختبار أفضل 10 موقع HTTPS بقائمة Alexa و 000 مضيفًا مرتبطًا. تم اكتشاف تكوينات تشفير ضعيفة على 90 مضيفًا ، أي حوالي 816٪ من الإجمالي:

  • 4818 عرضة لـ MITM
  • 733 عرضة لفك تشفير TLS الكامل
  • 912 عرضة لفك تشفير TLS الجزئي

898 موقعًا مفتوحًا تمامًا للقرصنة ، أي أنها تسمح بإدخال نصوص برمجية غريبة ، ويقوم 977 موقعًا بتحميل محتوى من صفحات ضعيفة الحماية يمكن للمهاجم التفاعل معها.

يؤكد الباحثون أنه من بين 898 من الموارد "المعرضة للخطر تمامًا" توجد متاجر عبر الإنترنت وخدمات مالية ومواقع كبيرة أخرى. 660 من أصل 898 موقعًا ينزلون نصوصًا خارجية من مضيفين معرضين للخطر: هذا هو المصدر الرئيسي للخطر. وفقًا للمؤلفين ، فإن تعقيد تطبيقات الويب الحديثة يزيد بشكل كبير من سطح الهجوم.

تم العثور أيضًا على مشكلات أخرى: 10٪ من نماذج التفويض بها مشاكل في النقل الآمن للمعلومات ، مما يهدد بتسريب كلمات المرور ، و 412 موقعًا تسمح باعتراض ملفات تعريف الارتباط واختطاف الجلسات ، و 543 موقعًا عرضة لهجمات على تكامل ملفات تعريف الارتباط (من خلال النطاقات الفرعية) .

المشكلة هي أنه في السنوات الأخيرة في بروتوكولات SSL / TLS والبرمجيات حددت عددا من نقاط الضعف: POODLE (CVE-2014-3566) و BEAST (CVE-2011-3389) و CRIME (CVE-2012-4929) و BREACH (CVE-2013-3587) و Heartbleed (CVE-2014-0160). للحماية منها ، يلزم وجود عدد من الإعدادات على جانب الخادم والعميل لتجنب استخدام الإصدارات القديمة التي تكون عرضة للإصابة بهجمات الفيروسات. لكن هذا إجراء غير تافه إلى حد ما ، لأن مثل هذه الإعدادات تتضمن الاختيار من بين مجموعة واسعة من الأصفار والبروتوكولات ، والتي يصعب فهمها. ليس من الواضح دائمًا ما هي مجموعات التشفير والبروتوكولات التي تعتبر "آمنة بدرجة كافية".

الإعدادات الموصى بها

لا توجد قائمة معتمدة ومتفق عليها رسميًا لإعدادات HTTPS الموصى بها. لذا، مولد تكوين Mozilla SSL يقدم العديد من خيارات التكوين ، اعتمادًا على مستوى الحماية المطلوب. على سبيل المثال ، فيما يلي الإعدادات الموصى بها لخادم nginx 1.14.0:

الوضع الحديث

أقدم العملاء المدعومين: Firefox 27 و Chrome 30 و IE 11 على Windows 7 و Edge و Opera 17 و Safari 9 و Android 5.0 و Java 8

server {
listen 80 default_server;
listen [::]:80 default_server;

# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;


# modern configuration. tweak to your needs.
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver <IP DNS resolver>;

....
}

دعم متوسط

أقدم العملاء المدعومين: Firefox 1 و Chrome 1 و IE 7 و Opera 5 و Safari 1 و Windows XP IE8 و Android 2.3 و Java 7

server {
listen 80 default_server;
listen [::]:80 default_server;

# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /path/to/dhparam.pem;

# intermediate configuration. tweak to your needs.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver <IP DNS resolver>;

....
}

الدعم القديم

أقدم العملاء المدعومين: نظام التشغيل Windows XP IE6 و Java 6

server {
listen 80 default_server;
listen [::]:80 default_server;

# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
ssl_certificate /path/to/signed_cert_plus_intermediates;
ssl_certificate_key /path/to/private_key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

# Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
ssl_dhparam /path/to/dhparam.pem;

# old configuration. tweak to your needs.
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:DES-CBC3-SHA:HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP';
ssl_prefer_server_ciphers on;

# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;

## verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver <IP DNS resolver>;

....
}

يوصى دائمًا باستخدام مجموعة التشفير الكاملة وأحدث إصدار من OpenSSL. تحدد مجموعة التشفير في إعدادات الخادم الأولوية التي سيتم استخدامها فيها ، اعتمادًا على إعدادات العميل.

تظهر الأبحاث أنه لا يكفي مجرد تثبيت شهادة HTTPS. "على الرغم من أننا لا نتعامل مع ملفات تعريف الارتباط كما فعلنا في عام 2005 ، وأصبح استخدام" TLS لائق "أمرًا شائعًا ، فقد اتضح أن هذه الأشياء الأساسية ليست كافية لتأمين عدد كبير بشكل مدهش من المواقع المشهورة جدًا ،" يقولون مؤلفو العمل. لحماية القناة بشكل موثوق بين الخادم والعميل ، تحتاج إلى مراقبة البنية التحتية بعناية من النطاقات الفرعية الخاصة بك ومضيفي الجهات الخارجية التي يتم توفير محتوى الموقع منها. ربما يكون من المنطقي طلب إجراء تدقيق من شركة خارجية متخصصة في أمن المعلومات.

HTTPS ليس دائمًا آمنًا كما يبدو. تم العثور على ثغرات أمنية في 5,5٪ من مواقع HTTPS

المصدر: www.habr.com