
Jedna z najlepších stránok Alexa (stredový kruh), chránená protokolom HTTPS, so subdoménami (sivá) a závislosťami (biela), medzi ktorými sú zraniteľné (tieňované)
V súčasnosti sa ikona zabezpečeného pripojenia HTTPS stala štandardným a dokonca nevyhnutným atribútom každej serióznej webovej stránky. Ak chýba, takmer všetky najnovšie prehliadače zobrazujú varovanie, že a neodporúčajú mu prenášať dôverné informácie.
Ukazuje sa však, že prítomnosť „zámku“ v paneli s adresou nie vždy zaručuje ochranu. z rebríčka Alexa ukázali: mnohé z nich sú vystavené kritickým zraniteľnostiam protokolu SSL/TLS, zvyčajne prostredníctvom subdomén alebo závislostí. Podľa autorov štúdie zložitosť moderných webových aplikácií výrazne zvyšuje plochu útoku.
Výsledky štúdie
Štúdiu vykonali špecialisti z Univerzity Ca' Foscari v Benátkach (Taliansko) a Technickej univerzity vo Viedni. Podrobnú správu predstavia na 40. sympóziu IEEE o bezpečnosti a súkromí, ktoré sa bude konať 20. – 22. mája 2019 v San Franciscu.
Skontrolovalo sa 10 000 najlepších stránok HTTPS na Alexovom zozname a 90 816 pridružených hostiteľov. Zraniteľné kryptografické konfigurácie boli identifikované na 5574 hostiteľoch, čo je približne 5,5 % z celkového počtu:
- 4818 zraniteľné voči MITM
- 733 zraniteľné voči úplnému dešifrovaniu TLS
- 912 náchylné na čiastočné dešifrovanie TLS
898 stránok je úplne otvorených hackerstvu, to znamená, že umožňujú vkladanie skriptov tretích strán a 977 stránok sťahuje obsah zo slabo chránených stránok, s ktorými môže útočník interagovať.
Výskumníci zdôrazňujú, že medzi 898 „úplne ohrozenými“ zdrojmi sú internetové obchody, finančné služby a ďalšie veľké stránky. 660 z 898 stránok sťahuje externé skripty zo zraniteľných hostiteľov: toto je hlavný zdroj nebezpečenstva. Podľa autorov zložitosť moderných webových aplikácií značne zvyšuje plochu útoku.
Objavili sa aj ďalšie problémy: 10 % prihlasovacích formulárov má problémy s bezpečným prenosom informácií, čo ohrozuje únik hesiel, 412 stránok umožňuje zachytávanie súborov cookie a „zneškodnenie relácie“ a 543 stránok je náchylných na útoky na integritu súborov cookie (cez subdomény ).
Problémom je, že v posledných rokoch SSL/TLS protokoly a softvér : PUDLÍK (CVE-2014-3566), BEAST (CVE-2011-3389), ZLOČIN (CVE-2012-4929), PORUŠENIE (CVE-2013-3587) a Heartbleed (CVE-2014-0160). Na ochranu pred nimi je na strane servera a klienta potrebné množstvo nastavení, aby sa predišlo použitiu starých zraniteľných verzií. Ide však o pomerne netriviálny postup, pretože takéto nastavenia zahŕňajú výber z rozsiahleho súboru šifier a protokolov, ktorým je dosť ťažké porozumieť. Nie je vždy jasné, ktoré šifrovacie súpravy a protokoly sa považujú za „dostatočne bezpečné“.
Odporúčané nastavenia
Neexistuje nikto oficiálne schválený a schválený zoznam odporúčaných nastavení HTTPS. takže, ponúka niekoľko možností konfigurácie v závislosti od požadovanej úrovne ochrany. Tu sú napríklad odporúčané nastavenia pre server nginx 1.14.0:
Moderný režim
Najstarší podporovaní klienti: Firefox 27, Chrome 30, IE 11 v systéme Windows 7, Edge, Opera 17, Safari 9, Android 5.0 a 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>;
....
}Priemerná podpora
Najstarší podporovaní klienti: 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>;
....
}Stará podpora
Najstarší podporovaní klienti: 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>;
....
}Odporúča sa vždy používať úplnú šifrovaciu sadu a najnovšiu verziu OpenSSL. Sada šifier v nastaveniach servera označuje prioritu, v ktorej sa budú používať, v závislosti od nastavení klienta.
Výskum ukazuje, že jednoduchá inštalácia HTTPS certifikátu nestačí. „Hoci nezaobchádzame so súbormi cookie ako v roku 2005 a ‚slušné TLS‘ sa stalo samozrejmosťou, ukazuje sa, že tieto základné veci nestačia na zabezpečenie prekvapivo veľkého počtu veľmi populárnych stránok.“ autorov diela. Ak chcete spoľahlivo chrániť kanál medzi serverom a klientom, musíte starostlivo monitorovať infraštruktúru svojich vlastných subdomén a hostiteľov tretích strán, z ktorých sa dodáva obsah pre stránku. Možno by malo zmysel objednať si audit od nejakej tretej strany, ktorá sa špecializuje na informačnú bezpečnosť.
Zdroj: hab.com
