HTTPS ei ole aina niin turvallinen kuin miltä näyttää. Haavoittuvuuksia löytyy 5,5 %:lta HTTPS-sivustoista

HTTPS ei ole aina niin turvallinen kuin miltä näyttää. Haavoittuvuuksia löytyy 5,5 %:lta HTTPS-sivustoista
Yksi Alexan suosituimmista sivustoista (keskiympyrä), suojattu HTTPS:llä, jossa on aliverkkotunnuksia (harmaa) ja riippuvuuksia (valkoinen), joiden joukossa on haavoittuvia (katkoviivavarjostus)

Nykyään HTTPS-suojatun yhteyden kuvakkeesta on tullut standardi ja jopa välttämätön ominaisuus kaikilla vakavilla sivustoilla. Jos todistus puuttuu, melkein kaikissa uusimmissa selaimissa on varoitus siitä yhteys sivustoon ei ole turvallinen äläkä suosittele luottamuksellisten tietojen siirtämistä sille.

Mutta käy ilmi, että "lukon" läsnäolo osoitepalkissa ei aina takaa suojaa. Tarkastetaan 10 000 johtavaa sivustoa Luokituksen perusteella Alexa osoitti, että monet heistä ovat alttiina kriittisille SSL/TLS-protokollien haavoittuvuuksille, yleensä aliverkkotunnusten tai riippuvuuksien kautta. Tutkimuksen tekijöiden mukaan nykyaikaisten verkkosovellusten monimutkaisuus lisää huomattavasti hyökkäyspintaa.

Tutkimuksen tulokset

Tutkimuksen suorittivat asiantuntijat Venetsian yliopiston Ca' Foscarista (Italia) ja Wienin teknisestä yliopistosta. He esittävät yksityiskohtaisen raportin 40. IEEE Symposium on Security and Privacy -tapahtumassa, joka pidetään 20.–22 San Franciscossa.

Testattiin Alexa-luettelon 10 000 suosituinta HTTPS-sivustoa ja 90 816 niihin liittyvää isäntä. Haavoittuvia salauskokoonpanoja havaittiin 5574 isännässä, mikä on noin 5,5 % kokonaismäärästä:

  • 4818 alttiina MITM:lle
  • 733 ovat alttiina täydelliselle TLS-salauksen purkamiselle
  • 912 ovat alttiina osittaiselle TLS-salauksen purkamiselle

898 sivustoa on täysin avoimia hakkerointiin, toisin sanoen ne sallivat ylimääräisten komentosarjojen lisäämisen, ja 977 sivustoa lataa sisältöä huonosti suojatuilta sivuilta, joiden kanssa hyökkääjä voi olla vuorovaikutuksessa.

Tutkijat korostavat, että 898 "täysin vaarantuneen" resurssin joukossa ovat verkkokaupat, rahoituspalvelut ja muut suuret sivustot. 660 sivustosta 898:sta lataa ulkoisia skriptejä haavoittuvilta isänniltä: tämä on tärkein vaaran lähde. Kirjoittajien mukaan nykyaikaisten verkkosovellusten monimutkaisuus lisää huomattavasti hyökkäyspintaa.

Myös muita ongelmia havaittiin: 10 %:lla valtuutuslomakkeista on ongelmia tiedonsiirrossa, mikä uhkaa salasanojen vuotamista, 412 sivustoa sallii evästeiden sieppaamisen ja istuntojen kaappauksen ja 543 sivustoa on alttiina evästeiden eheyshyökkäyksille (aliverkkotunnusten kautta). .

Ongelmana on, että viime vuosina SSL / TLS-protokollia ja ohjelmistoja tunnisti useita haavoittuvuuksia: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), rikollisuus (CVE-2012-4929), BREACH (CVE-2013-3587) ja Heartbleed (CVE-2014-0160). Niitä vastaan ​​suojaamiseksi palvelin- ja asiakaspuolella vaaditaan useita asetuksia, jotta vältetään vanhojen haavoittuvien versioiden käyttäminen. Mutta tämä on melko ei-triviaali menettely, koska tällaisiin asetuksiin kuuluu valinta laajasta salaus- ja protokollajoukosta, joita on melko vaikea ymmärtää. Aina ei ole selvää, mitkä salauspaketit ja protokollat ​​katsotaan "riittävän turvallisiksi".

Suositellut asetukset

Suositeltujen HTTPS-asetusten luetteloa ei ole virallisesti hyväksytty ja sovittu. Niin, Mozilla SSL Configuration Generator tarjoaa useita konfigurointivaihtoehtoja vaaditusta suojaustasosta riippuen. Tässä ovat esimerkiksi suositellut asetukset nginx 1.14.0 -palvelimelle:

Moderni tila

Vanhimmat tuetut asiakkaat: Firefox 27, Chrome 30, IE 11 Windows 7:ssä, Edge, Opera 17, Safari 9, Android 5.0 ja 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>;

....
}

Keskitasoinen tuki

Vanhimmat tuetut asiakkaat: 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>;

....
}

Vanha tuki

Vanhimmat tuetut asiakkaat: 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>;

....
}

On suositeltavaa, että käytät aina täydellistä salauspakettia ja uusinta OpenSSL-versiota. Palvelimen asetuksissa oleva salauspaketti määrittää prioriteetin, jossa niitä käytetään asiakkaan asetuksista riippuen.

Tutkimukset osoittavat, että pelkkä HTTPS-varmenteen asentaminen ei riitä. "Vaikka emme käsittele evästeitä kuten teimme vuonna 2005, ja "kunnollinen TLS" on tullut arkipäivää, on käynyt ilmi, että nämä perusasiat eivät riitä turvaamaan yllättävän suurta määrää erittäin suosittuja sivustoja." he sanovat teoksen kirjoittajat. Jotta palvelimen ja asiakkaan välinen kanava voidaan suojata luotettavasti, sinun on tarkkailtava huolellisesti omien aliverkkotunnustesi ja kolmannen osapuolen isäntien infrastruktuuria, joista sivuston sisältö toimitetaan. Ehkä on järkevää tilata auditointi joltain tietoturvaan erikoistuneelta kolmannelta osapuolelta.

HTTPS ei ole aina niin turvallinen kuin miltä näyttää. Haavoittuvuuksia löytyy 5,5 %:lta HTTPS-sivustoista

Lähde: will.com