
Jedna z topových stránek Alexa (střední kruh), chráněná HTTPS, s subdoménami (šedě) a závislostmi (bíle), mezi nimiž jsou zranitelné (šrafované).
Dnes je ikona zabezpečeného připojení HTTPS standardním a dokonce nezbytným atributem každé seriózní webové stránky. Pokud chybí, téměř všechny moderní prohlížeče zobrazují varování, že a nedoporučují na něj předávat citlivé informace.
Ukazuje se však, že přítomnost "zámku" v adresním řádku nezaručuje vždy zabezpečení. z žebříčku Alexa ukázala: mnohé z nich jsou náchylné k kritickým zranitelnostem protokolů SSL/TLS, obvykle prostřednictvím subdomén nebo závislostí. Podle autorů studie složitost moderních webových aplikací mnohonásobně zvyšuje útočnou plochu.
Výsledky výzkumu
Studii provedli odborníci z Benátské univerzity Ca' Foscari (Itálie) a Vídenské technické univerzity. Podrobnou zprávu představí na 40. sympoziu IEEE o bezpečnosti a ochraně soukromí, které se koná od 20. do 22. května 2019 v San Francisku.
Bylo zkontrolováno 10 000 nejoblíbenějších stránek HTTPS ze seznamu Alexa a 90 816 s nimi souvisejících hostitelů. Zranitelné kryptografické konfigurace byly zjištěny na 5574 hostitelích, což představuje přibližně 5,5 % z celkového počtu:
- 4818 zranitelných vůči MITM
- 733 zranitelných vůči úplné dešifrování TLS
- 912 zranitelných vůči částečné dešifrování TLS
898 stránek je zcela otevřeno k útokům, což znamená, že umožňují injekce cizích skriptů, a 977 stránek načítá obsah z nedostatečně zabezpečených stránek, se kterými může interagovat útočník.
Vědci zdůrazňují, že mezi 898 "zcela kompromitovanými" zdroji jsou internetové obchody, finanční služby a další velké stránky. 660 z 898 stránek načítá externí skripty z zranitelných hostitelů: to je hlavní zdroj nebezpečí. Podle autorů složitost moderních webových aplikací mnohonásobně zvyšuje útočnou plochu.
Byly nalezeny i další problémy: 10 % formulářů pro autorizaci má problémy s bezpečným přenosem informací, což hrozí únikem hesel, 412 stránek umožňuje odchyt cookies a "únik relace", a 543 stránek je náchylných k útokům na integritu cookies (přes subdomény).
Problém je v tom, že v posledních letech byly v protokolech SSL/TLS a softwaru odhaleny : POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) a Heartbleed (CVE-2014-0160). K ochraně před nimi je třeba provést řadu nastavení na straně serveru a klienta, aby se zabránilo používání starých zranitelných verzí. To však není zcela jednoduchý postup, jelikož vyžaduje výběr z rozsáhlé sady šifrovacích algoritmů a protokolů, kde se je obtížné orientovat. Není vždy jasné, které šifrovací sady a protokoly považovat za „dostatečně bezpečné“.
Doporučená nastavení
Neexistuje žádný oficiálně schválený a dohodnutý seznam doporučených nastavení HTTPS. Tak například nabízí několik variant konfigurace v závislosti na požadované úrovni ochrany. Například zde jsou doporučená nastavení pro server nginx 1.14.0:
Moderní režim
Nejstarší podporované klienty: 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;
# Přesměrovat všechny HTTP požadavky na HTTPS s odpovědí 301 Moved Permanently.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certifikáty zaslané klientovi v SERVER HELLO jsou zkonkatenovány 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í konfigurace. upravte podle svých potřeb.
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 vyžadován) (15768000 sekund = 6 měsíců)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# načíst OCSP záznamy z URL v ssl_certificate a ukládat je do cache
ssl_stapling on;
ssl_stapling_verify on;
## ověřit důvěru řetězce OCSP odpovědi pomocí Root CA a mezi certifikáty
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver ;
....
}Průměrná podpora
Nejstarší podporované klienty: 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;
# Přesměrovat všechny HTTP požadavky na HTTPS s odpovědí 301 Moved Permanently.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certifikáty zaslané klientovi v SERVER HELLO jsou sloučeny 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 parametry pro DHE šifrovací sady, doporučeno 2048 bitů
ssl_dhparam /path/to/dhparam.pem;
# střední konfigurace. přizpůsobte svým potřebám.
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 vyžadován) (15768000 sekund = 6 měsíců)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# načíst OCSP záznamy z URL v ssl_certificate a cache je
ssl_stapling on;
ssl_stapling_verify on;
## ověřit řetězec důvěry odpovědi OCSP pomocí kořenového CA a středního certifikátu
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver ;
....
}Starší podpora
Nejstarší podporované klienty: Windows XP IE6, Java 6
server {
listen 80 default_server;
listen [::]:80 default_server;
# Přesměrovat všechny HTTP požadavky na HTTPS s odpovědí 301 Moved Permanently.
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# certifikáty zaslané klientovi v SERVER HELLO jsou sloučeny 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 parametry pro DHE šifrovací sady, doporučeno 2048 bitů
ssl_dhparam /path/to/dhparam.pem;
# stará konfigurace. přizpůsobte svým potřebám.
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 vyžadován) (15768000 sekund = 6 měsíců)
add_header Strict-Transport-Security max-age=15768000;
# OCSP Stapling ---
# načíst OCSP záznamy z URL v ssl_certificate a cache je
ssl_stapling on;
ssl_stapling_verify on;
## ověřit řetězec důvěry odpovědi OCSP pomocí kořenového CA a středního certifikátu
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;
resolver ;
....
}Doporučuje se vždy používat plný soubor šifrovacích algoritmů a poslední verzi OpenSSL. Sada šifrovacích algoritmů v nastavení serveru určuje prioritu, ve které budou používány, v závislosti na nastavení klienta.
Studie ukazují, že nestačí pouze nainstalovat certifikát HTTPS. "I když nezpracováváme cookies jako v roce 2005 a 'slušný TLS' se stal běžnou praxí, ukazuje se, že tyto základní věci nestačí k zajištění bezpečnosti neuvěřitelně velkého počtu velmi populárních webů," - autoři studie. Pro spolehlivou ochranu kanálu mezi serverem a klientem je nutné pečlivě sledovat infrastrukturu vlastních subdomén a externích hostitelů, ze kterých je obsah dodáván na web. Možná by stálo za to objednat audit od nějaké externí společnosti, která se specializuje na informační bezpečnost.
Zdroj: habr.com
