HTTPS non è sempre così sicuro come sembra. Sono state trovate vulnerabilità nel 5,5% dei siti HTTPS

HTTPS non è sempre così sicuro come sembra. Sono state trovate vulnerabilità nel 5,5% dei siti HTTPS
Uno dei siti top di Alexa (cerchio centrale), protetto da HTTPS, con sottodomini (grigio) e dipendenze (bianco), tra cui ci sono vulnerabili (riempimento a righe)

Al giorno d'oggi, l'icona della connessione sicura HTTPS è diventata un attributo standard e quasi necessario di qualsiasi sito serio. Se il certificato è assente, quasi tutti i browser moderni mostrano un avviso che la connessione al sito è “non sicura” e sconsigliano di inviare informazioni riservate.

Ma risulta che avere il “lucchetto” nella barra degli indirizzi non garantisce sempre protezione. Un controllo di 10.000 siti principali dalla classifica di Alexa ha mostrato: molti di essi sono soggetti a vulnerabilità critiche dei protocolli SSL/TLS, solitamente tramite sottodomini o dipendenze. Secondo gli autori dello studio, la complessità delle moderne applicazioni web aumenta esponenzialmente la superficie d'attacco.

Risultati dello studio

Lo studio è stato condotto da esperti dell'Università Ca' Foscari di Venezia (Italia) e dell'Università Tecnica di Vienna. Presenteranno un rapporto dettagliato al 40° simposio IEEE sulla sicurezza e privacy, che si terrà dal 20 al 22 maggio 2019 a San Francisco.

Sono stati verificati 10.000 dei siti HTTPS più popolari della lista Alexa e 90.816 host correlati. Configurazioni crittografiche vulnerabili sono state riscontrate su 5.574 host, cioè circa il 5,5% del totale:

  • 4.818 vulnerabili ai MITM
  • 733 vulnerabili a una completa decrittazione TLS
  • 912 vulnerabili a una parziale decrittazione TLS

898 siti sono completamente aperti agli attacchi, cioè consentono l'inserimento di script esterni, e 977 siti caricano contenuti da pagine poco sicure, con cui un malintenzionato può interagire.

I ricercatori sottolineano che tra le 898 risorse “completamente compromesse” ci sono negozi online, servizi finanziari e altri grandi siti. 660 dei 898 siti caricano script esterni da host vulnerabili: questa è la principale fonte di pericolo. Secondo gli autori, la complessità delle moderne applicazioni web aumenta esponenzialmente la superficie d'attacco.

Sono emersi anche altri problemi: il 10% dei moduli di autorizzazione presenta problemi con la trasmissione sicura delle informazioni, il che comporta il rischio di fuoriuscita delle password, 412 siti consentono l'intercettazione dei cookie e il "furto di sessione", e 543 siti sono vulnerabili ad attacchi all'integrità dei cookie (tramite sottodomini).

Il problema è che negli ultimi anni nei protocolli SSL/TLS e nel software sono state riscontrate diverse vulnerabilità: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) e Heartbleed (CVE-2014-0160). Per proteggersi da esse sono necessarie alcune impostazioni sul lato server e client, per evitare di utilizzare versioni vulnerabili obsolete. Ma si tratta di una procedura non triviale, poiché tali impostazioni prevedono la scelta tra un ampio set di algoritmi e protocolli, nei quali è piuttosto difficile orientarsi. Non è sempre chiaro quali set di algoritmi e protocolli considerare "sufficientemente sicuri".

Impostazioni raccomandate

Non esiste un elenco ufficialmente approvato e concordato di impostazioni HTTPS raccomandate. Così, Mozilla SSL Configuration Generator offre diverse opzioni di configurazione, a seconda del livello di protezione richiesto. Ad esempio, ecco le impostazioni raccomandate per il server nginx 1.14.0:

Modalità moderna

I clienti più vecchi supportati: Firefox 27, Chrome 30, IE 11 su Windows 7, Edge, Opera 17, Safari 9, Android 5.0 e Java 8

server {
listen 80 default_server;
listen [::]:80 default_server;

# Reindirizza tutte le richieste HTTP a HTTPS con una risposta 301 Moved Permanently.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# certificati inviati al client in SERVER HELLO sono concatenati 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;


# configurazione moderna. personalizza in base alle tue esigenze.
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 è richiesto) (15768000 secondi = 6 mesi)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# recupera i record OCSP dall'URL in ssl_certificate e memorizzali nella cache
ssl_stapling on;
ssl_stapling_verify on;

## verifica la catena di fiducia della risposta OCSP utilizzando Root CA e certificati intermedi
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Supporto medio

I clienti più vecchi supportati: 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;

# Reindirizza tutte le richieste HTTP a HTTPS con una risposta 301 Moved Permanently.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# I certificati inviati al client in SERVER HELLO sono concatenati 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;

# Parametro Diffie-Hellman per suite di cifratura DHE, raccomandato 2048 bit
ssl_dhparam /path/to/dhparam.pem;

# configurazione intermedia. adattala alle tue esigenze.
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 è richiesto) (15768000 secondi = 6 mesi)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# ottieni i record OCSP dall'URL in ssl_certificate e memorizzali nella cache
ssl_stapling on;
ssl_stapling_verify on;

## verifica la catena di fiducia della risposta OCSP utilizzando i certificati Root CA e Intermediate
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Supporto obsoleto

I clienti più vecchi supportati: Windows XP IE6, Java 6

server {
listen 80 default_server;
listen [::]:80 default_server;

# Reindirizza tutte le richieste HTTP a HTTPS con una risposta 301 Moved Permanently.
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;

# I certificati inviati al client in SERVER HELLO sono concatenati 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;

# Parametro Diffie-Hellman per suite di cifratura DHE, raccomandato 2048 bit
ssl_dhparam /path/to/dhparam.pem;

# vecchia configurazione. adattala alle tue esigenze.
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 è richiesto) (15768000 secondi = 6 mesi)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# ottieni i record OCSP dall'URL in ssl_certificate e memorizzali nella cache
ssl_stapling on;
ssl_stapling_verify on;

## verifica la catena di fiducia della risposta OCSP utilizzando i certificati Root CA e Intermediate
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Si consiglia di utilizzare sempre un set completo di algoritmi di crittografia e l'ultima versione di OpenSSL. Il set di algoritmi nelle impostazioni del server indica la priorità con cui verranno utilizzati, a seconda delle impostazioni del client.

La ricerca dimostra che non è sufficiente installare semplicemente un certificato HTTPS. «Sebbene non gestiamo i cookie come nel 2005, e il dicono autori del lavoro. Per una protezione affidabile del canale tra server e client, è necessario monitorare attentamente l'infrastruttura dei propri sottodomini e degli host esterni da cui viene fornito il contenuto per il sito. Potrebbe avere senso richiedere un audit a qualche azienda esterna specializzata in sicurezza informatica.

HTTPS non è sempre così sicuro come sembra. Sono state trovate vulnerabilità nel 5,5% dei siti HTTPS

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster