
Jeden z top webov Alexa (centrálny kruh), chránený HTTPS, so subdoménami (sivý) a závislosťami (biely), medzi ktorými sú zraniteľné (šrafovaná výplň)
Dnes sa ikona zabezpečeného pripojenia HTTPS stala štandardným a dokonca nevyhnutným atribútom akejkoľvek serióznej webovej stránky. Ak chýba, takmer všetky moderné prehliadače zobrazujú upozornenie, že a neodporúčajú posielať na ňu dôverné informácie.
Ale ukazuje sa, že prítomnosť „zámku“ v adresnom riadku neznamená vždy záruku ochrany. z rebríčka Alexa ukázala: mnohé z nich sú náchylné na kritické zraniteľnosti protokolov SSL/TLS, obvykle prostredníctvom subdomén alebo závislostí. Podľa autorov štúdie zložitost moderných webových aplikácií mnohonásobne zvyšuje povrch útoku.
Výsledky štúdie
Štúdiu vykonali odborníci z Benátskej univerzity Ca' Foscari (Taliansko) a Viedenskej technickej univerzity. Podrobnú správu predstavia na 40. sympóziu IEEE o bezpečnosti a súkromí, ktoré sa uskutoční 20.-22. mája 2019 v San Franciscu.
Bolo skontrolovaných 10 000 najpopulárnejších webových stránok HTTPS z rebríčka Alexa a 90 816 súvisiacich hostiteľov. Zraniteľné kryptografické konfigurácie boli zistené na 5574 hostiteľoch, teda približne na 5,5 % z celkového počtu:
- 4818 je zraniteľných voči MITM
- 733 je zraniteľných pre úplné dešifrovanie TLS
- 912 je zraniteľných pre čiastočné dešifrovanie TLS
898 stránok je úplne otvorených na hackovanie, teda dovoľujú injekciu cudzích skriptov, a 977 stránok načítava obsah z málo zabezpečených stránok, s ktorými môže interagovať útočník.
Výskumníci zdôrazňujú, že medzi 898 „úplne skompromitovanými“ zdrojmi sú internetové obchody, finančné služby a iné veľké stránky. 660 z 898 stránok načítava externé skripty z zraniteľných hostiteľov: to je hlavný zdroj nebezpečenstva. Podľa autorov zložitost moderných webových aplikácií mnohonásobne zvyšuje povrch útoku.
Boli zistené aj ďalšie problémy: 10 % formulárov pre autentifikáciu má problémy so zabezpečeným prenášaním informácií, čo hrozí únikom hesiel, 412 stránok umožňuje zachytávanie cookies a „únik relácií“, a 543 stránok je náchylných na útoky na integritu cookies (cez subdomény).
Problém je v tom, že v posledných rokoch boli v protokoloch SSL/TLS a softvéri : POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) a Heartbleed (CVE-2014-0160). Na ochranu pred nimi je potrebné množstvo nastavení na strane servera a klienta, aby sa predišlo používaniu starých zraniteľných verzií. No to je dosť netriviálna procedúra, pretože tieto nastavenia si vyžadujú výber z rozsiahlej škály šifrov a protokolov, v ktorých sa dosť ťažko orientuje. Nie vždy je jasné, ktoré sady šifrov a protokolov považovať za „dostatočne bezpečné“.
Odporúčané nastavenia
Neexistuje jeden oficiálne schválený a dohodnutý zoznam odporúčaných nastavení HTTPS. Tak napríklad, ponúka niekoľko variantov konfigurácie v závislosti od požadovanej úrovne ochrany. Napríklad, tu sú odporúčané nastavenia pre server nginx 1.14.0:
Moderný režim
Najstarší podporovaní klienti: Firefox 27, Chrome 30, IE 11 na Windows 7, Edge, Opera 17, Safari 9, Android 5.0 a Java 8
server {
listen 80 default_server;
listen [::]:80 default_server;
# Premeniť všetky HTTP požiadavky na HTTPS s odpoveďou 301 Presunuté natrvalo.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certifikáty zaslané klientovi v SERVER HELLO sú skombinované v 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á konfigurácia. prispôsobte si to podľa svojich potrieb.
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 je potrebný) (15768000 sekúnd = 6 mesiacov)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# načítať OCSP záznamy z URL v ssl_certificate a uložiť ich
ssl_stapling on;
ssl_stapling_verify on;
## overiť reťazec dôvery OCSP odpovede pomocou Root CA a intermediálnych certifikátov
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
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;
# Preveďte všetky požiadavky HTTP na HTTPS s odpoveďou 301 Presunuté natrvalo.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certifikáty poslané klientovi v SERVER HELLO sú skombinované v 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 pre DHE ciphersuites, odporúčaných 2048 bitov
ssl_dhparam /path/to/dhparam.pem;
# stredná konfigurácia. prispôsobte si to podľa svojich potrieb.
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 je potrebný) (15768000 sekúnd = 6 mesiacov)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# načítať OCSP záznamy z URL v ssl_certificate a uchovávať ich v cache
ssl_stapling on;
ssl_stapling_verify on;
## overiť reťazec dôvery OCSP odpovede pomocou Root CA a medzicertifikátov
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver ;
....
}Staršia podpora
Najstarší podporovaní klienti: Windows XP IE6, Java 6
server {
listen 80 default_server;
listen [::]:80 default_server;
# Preveďte všetky požiadavky HTTP na HTTPS s odpoveďou 301 Presunuté natrvalo.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certifikáty poslané klientovi v SERVER HELLO sú skombinované v 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 pre DHE ciphersuites, odporúčaných 2048 bitov
ssl_dhparam /path/to/dhparam.pem;
# stará konfigurácia. prispôsobte si to podľa svojich potrieb.
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 je potrebný) (15768000 sekúnd = 6 mesiacov)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# načítať OCSP záznamy z URL v ssl_certificate a uchovávať ich v cache
ssl_stapling on;
ssl_stapling_verify on;
## overiť reťazec dôvery OCSP odpovede pomocou Root CA a medzicertifikátov
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver ;
....
}Odporúča sa vždy používať kompletný súbor šifrov a najnovšiu verziu OpenSSL. Sada šifrov v nastaveniach servera určuje prioritu, v akej budú používané, v závislosti od nastavení klienta.
Skúmanie ukazuje, že nestačí len nainštalovať certifikát HTTPS. „Hoci už nenašeme cookies ako v roku 2005 a „slušný TLS” sa stal bežnou praxou, ukazuje sa, že tieto základné veci nestačia na zabezpečenie prekvapivo veľkého množstva veľmi populárnych webových stránok,“ autori štúdie. Pre spoľahlivú ochranu kanála medzi serverom a klientom je potrebné starostlivo sledovať infraštruktúru z vlastných subdomén a externých hostiteľov, z ktorých je dodávaný obsah pre stránku. Možno má zmysel objednať audit od nejakej externé spoločnosti, ktorá sa špecializuje na informačnú bezpečnosť.
Zdroj: habr.com
