Salah satu situs teratas Alexa (lingkaran pusat), dilindungi oleh HTTPS, dengan subdomain (abu-abu) dan dependensi (putih), di antaranya ada yang rentan (putus putus)Saat ini, ikon koneksi aman HTTPS telah menjadi atribut standar dan bahkan perlu dari situs serius mana pun. Jika
sertifikat tidak ada, hampir semua peramban baru-baru ini menunjukkan peringatan bahwa
koneksi ke situs "tidak aman" dan tidak menyarankan mentransfer informasi rahasia ke sana.
Tetapi ternyata keberadaan "kunci" di bilah alamat tidak selalu menjamin perlindungan.
Pemeriksaan 10.000 situs terkemuka dari peringkat Alexa menunjukkan bahwa banyak dari mereka yang rentan terhadap kerentanan dalam protokol SSL / TLS, biasanya melalui subdomain atau dependensi. Menurut penulis penelitian, kompleksitas aplikasi web modern sangat meningkatkan permukaan serangan.
Hasil penelitian
Studi ini dilakukan oleh para ahli dari Universitas Venice Ca 'Foscari (Italia) dan Universitas Teknis Wina. Mereka akan menyajikan laporan terperinci pada Simposium IEEE ke-40 tentang Keamanan dan Privasi, yang akan diadakan pada 20-22 Mei 2019 di San Francisco.
10.000 dari situs HTTPS paling populer dari daftar Alexa dan 90.816 host terkait diperiksa. Konfigurasi kriptografi yang rentan terdeteksi pada 5574 host, yaitu sekitar 5,5% dari total:
- 4818 rentan terhadap MITM
- 733 rentan terhadap dekripsi penuh TLS
- 912 rentan terhadap dekripsi TLS parsial
898 situs benar-benar terbuka untuk peretasan, yaitu, mereka memungkinkan injeksi skrip asing, dan 977 situs mengunduh konten dari halaman yang dilindungi dengan lemah yang dapat digunakan penyerang untuk berinteraksi.
Para peneliti menekankan bahwa di antara 898 sumber daya yang "sepenuhnya dikompromikan" adalah toko online, layanan keuangan, dan situs besar lainnya. 660 dari 898 situs mengunduh skrip eksternal dari host yang rentan: ini adalah sumber bahaya utama. Menurut penulis, kompleksitas aplikasi web modern sangat meningkatkan permukaan serangan.
Masalah lain ditemukan: 10% formulir untuk otorisasi memiliki masalah dengan transmisi informasi yang aman, yang dapat menyebabkan kebocoran kata sandi, 412 situs memungkinkan intersepsi cookie dan "pembajakan sesi", dan 543 situs rentan terhadap serangan terhadap integritas cookie (melalui subdomain).
Masalahnya adalah bahwa dalam beberapa tahun terakhir,
sejumlah kerentanan telah
diidentifikasi dalam protokol dan perangkat lunak SSL / TLS: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE -2013-3587) dan Heartbleed (CVE-2014-0160). Untuk melindunginya, sejumlah pengaturan diperlukan di server dan sisi klien untuk menghindari penggunaan versi rentan yang lama. Tetapi ini adalah prosedur yang tidak sepele, karena pengaturan semacam itu menyediakan pilihan dari serangkaian cipher dan protokol yang luas, yang cukup sulit untuk dipahami. Tidak selalu jelas set cipher dan protokol tertentu mana yang dianggap βcukup amanβ.
Pengaturan yang Disarankan
Tidak ada satu pun pengaturan HTTPS yang disetujui dan disetujui secara resmi. Jadi,
Mozilla SSL Configuration Generator menawarkan beberapa opsi konfigurasi, tergantung pada tingkat perlindungan yang diperlukan. Sebagai contoh, berikut adalah pengaturan yang disarankan untuk server nginx 1.14.0:
Mode modern
Klien yang didukung paling lama: Firefox 27, Chrome 30, IE 11 pada Windows 7, Edge, Opera 17, Safari 9, Android 5.0, dan 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>; .... }
Dukungan rata-rata
Klien yang didukung paling lama: 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>; .... }
Dukungan lama
Klien yang didukung paling lama: 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>; .... }
Disarankan agar Anda selalu menggunakan suite sandi lengkap dan versi terbaru dari OpenSSL. Suite sandi di pengaturan server menunjukkan prioritas di mana mereka akan digunakan, tergantung pada pengaturan klien.
Penelitian menunjukkan bahwa menginstal sertifikat HTTPS tidak cukup. "Meskipun kami tidak memproses cookie seperti pada tahun 2005, dan TLS yang layak telah menjadi hal biasa, ternyata hal-hal mendasar ini tidak cukup untuk memberikan keamanan bagi sejumlah besar situs yang sangat populer," kata penulis karya tersebut. Untuk perlindungan yang andal atas saluran antara server dan klien, Anda perlu memonitor infrastruktur dengan hati-hati dari subdomain Anda sendiri dan host pihak ketiga dari mana konten untuk situs disediakan. Mungkin masuk akal untuk memesan audit dari beberapa perusahaan pihak ketiga yang berspesialisasi dalam keamanan informasi.

