HTTPS není vždy tak bezpečný, jak se zdá. Zranitelnosti nalezeny u 5,5 % stránek HTTPS

HTTPS není vždy tak bezpečný, jak se zdá. Zranitelnosti nalezeny u 5,5 % stránek HTTPS
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 certifikát chybí, téměř všechny moderní prohlížeče zobrazují varování, že připojení k webu "není zabezpečeno" 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í. Kontrola 10 000 předních webových stránek 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 některé zranitelnosti: 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 Mozilla SSL Configuration Generator 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ů," - , že pokud Google, Apple, Facebook a makléři dat mají povoleno prodávat osobní údaje klientů bez jejich souhlasu, měla by mít tuto možnost i internetová poskytovatelé. Avšak stojí za zmínku, že na federální úrovni 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.

HTTPS není vždy tak bezpečný, jak se zdá. Zranitelnosti nalezeny u 5,5 % stránek HTTPS

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster