HTTPS ei ole alati nii turvaline, nagu näib. Haavatavusi leiti 5,5% HTTPS veebisaitidest

HTTPS ei ole alati nii turvaline, nagu näib. Haavatavusi leiti 5,5% HTTPS veebisaitidest
Üks Alexa tippveebisaitidest (keskne ring), mille kaitseb HTTPS, alamsaitidega (hall) ja sõltuvustega (valge), sealhulgas haavatavad (tõmmatud täitevärviga)

Meie ajal on HTTPS-i turvalise ühenduse ikoon saanud standardseks ja isegi hädavajalikuks atribuudiks iga tõsise veebisaidi jaoks. Kui sertifikaat on puudulik, näitavad enamik uusi brausereid hoiatust, et ühendus veebisaidiga "ei ole kaitstud" ja soovitavad mitte edastada sellele konfidentsiaalset teavet.

Kuid selgub, et ainuüksi aadressiriba lukku olemasolu ei taga alati kaitset. 10 000 juhtiva veebisaidi kontroll Alexa edetabelist näitas: paljud neist on vastuvõtlikud SSL/TLS protokollide kriitilistele haavatavustele, tavaliselt läbi alamsaitide või sõltuvuste. Uuringu autorite sõnul suurendab kaasaegsete veebirakenduste keerukus rünnakupinda mitmekordselt.

Uuringu tulemused

Uuringu viisid läbi Veneetsia Ka’ Foscari Ülikooli (Itaalia) ja Viini Tehnikaülikooli spetsialistid. Üksikasjaliku aruande esitavad nad 40. IEEE turvalisuse ja privaatsuse sümpoosionil, mis toimub 20-22. mai 2019 San Franciscos.

Kontrolliti 10 000 kõige populaarsemat HTTPS veebisaiti Alexa nimekirjast ja 90 816 seotud hosti. Haavatavad krüptograafilised konfiguratsioonid tuvastati 5574 hostis, mis tähendab umbes 5,5% koguarvust:

  • 4818 on vastuvõtlikud MITM rünnakule
  • 733 on täieliku TLS-i dešifreerimise riskiga
  • 912 on osalise TLS-i dešifreerimise riskiga

898 veebisaiti on täielikult avatud häkkimisele, st lubavad kolmandate osapoolte skriptide süstimist, ning 977 veebisaiti laadivad sisu nõrgalt kaitstud lehtedelt, millega ründajal võib olla võimalik suhelda.

Uurijad rõhutavad, et 898 "täielikult kompromiteeritud" ressursi seas on veebipoed, finantsteenused ja teised suured saidid. 660 898-st veebisaidist laadivad väliseid skripte haavatavatelt hostidelt: see on peamine ohuallikas. Autorite sõnul suurendab kaasaegsete veebirakenduste keerukus rünnakupinda mitmekordselt.

Leiti ja muid probleeme: 10% autoriseerimise vormidest on kaitsmisega seotud probleemid, mis toovad kaasa paroolide lekkimise, 412 veebisaiti lubavad küpsiste ülevõtmist ja 'seansi kaaperdamist', ning 543 veebisaiti on tundlikud küpsiste terviklikkuse rünnakute suhtes (alamdomeenide kaudu).

Probleem seisneb selles, et viimastel aastatel on SSL/TLS protokollides ja tarkvaras tuvastatud mitmeid haavatavusi: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) ja Heartbleed (CVE-2014-0160). Nende vastu kaitsmiseks on vajalikud teatud seadistused serveri ja kliendi poolel, et vältida vanade haavatavate versioonide kasutamist. Kuid see on üsna mittetriviaalne protseduur, sest sellised seadistused eeldavad laia valiku šifreid ja protokolle, milles on keeruline orienteeruda. Ei ole alati selge, milliseid šifreid ja protokolle pidada 'piisavalt turvalisteks'.

Soovitatavad seadistused

Ühtegi ametlikult heaks kiidetud ja kooskõlastatud HTTPS soovitatavate seadistuste nimekirja ei eksisteeri. Niisiis, Mozilla SSL Configuration Generator pakub mitmeid seadistamisvõimalusi, olenevalt nõutud turvatasemest. Näiteks siin on soovitatavad seadistused nginx serveri jaoks versioonile 1.14.0:

Kaasaegne režiim

Kõige vanemad toetatud kliendid: Firefox 27, Chrome 30, IE 11 Windows 7-l, Edge, Opera 17, Safari 9, Android 5.0 ja Java 8

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

# Suuna kõik HTTP päringud HTTPS-ile 301 Moved Permanently vastusega.
return 301 https://$host$request_uri;
}

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

# klientidele SERVER HELLO-s saadetud sertifikaadid on ühendatud ssl_certificate-s
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;


# kaasaegne seadistus. kohandage vastavalt oma vajadustele.
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 on vajalik) (15768000 sekundit = 6 kuud)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# tõmmatakse OCSP kirjed ssl_certificate URL-ist ja vahepeal neid salvestatakse
ssl_stapling on;
ssl_stapling_verify on;

## kontrollige OCSP vastuse usaldusväärsuse ahelat Root CA ja Vahe-sertifikaatide abil
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Keskmine tugi

Kõige vanemad toetatud kliendid: 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;

# Suunake kõik HTTP päringud HTTPS-ile 301 Moved Permanently vastusega.
return 301 https://$host$request_uri;
}

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

# kliendile SERVER HELLO-s saadetud sertifikaadid on ühendatud ssl_certificate'is
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-Hellmani parameeter DHE krüptosuitide jaoks, soovitatav 2048 bitti
ssl_dhparam /path/to/dhparam.pem;

# vahekonfiguratsioon. kohandage oma vajadustele.
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 on vajalik) (15768000 sekundit = 6 kuud)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# tõmmake OCSP kirjed ssl_certificate'i URL-ist ja salvestage need
ssl_stapling on;
ssl_stapling_verify on;

## kontrollige OCSP vastuse usaldusketti Root CA ja vahesertifikaatide abil
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Vana tugi

Kõige vanemad toetatud kliendid: Windows XP IE6, Java 6

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

# Suunake kõik HTTP päringud HTTPS-ile 301 Moved Permanently vastusega.
return 301 https://$host$request_uri;
}

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

# kliendile SERVER HELLO-s saadetud sertifikaadid on ühendatud ssl_certificate'is
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-Hellmani parameeter DHE krüptosuitide jaoks, soovitatav 2048 bitti
ssl_dhparam /path/to/dhparam.pem;

# vana konfiguratsioon. kohandage oma vajadustele.
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 on vajalik) (15768000 sekundit = 6 kuud)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# tõmmake OCSP kirjed ssl_certificate'i URL-ist ja salvestage need
ssl_stapling on;
ssl_stapling_verify on;

## kontrollige OCSP vastuse usaldusketti Root CA ja vahesertifikaatide abil
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Soovitav on alati kasutada täielikku krüptosüsteemide komplekti ja OpenSSL-i viimast versiooni. Serveri seadetes määratletud krüptosüsteemide komplekt näitab prioriteeti, milles neid kasutatakse, sõltuvalt kliendi seadistustest.

Uuringud näitavad, et HTTPS-sertifikaadi lihtsalt paigaldamine ei ole piisav. "Kuigi me ei käsitle küpsiseid enam 2005. aastal nagu varem, ja 'sobiv TLS' on saanud tavaliseks, selgub, et need baasasjad ei ole üllataval arvul väga populaarsete veebisaitide turvalisuse tagamiseks piisavad," ütlevad töö autorid. Usaldusväärse kanali kaitsmiseks serveri ja kliendi vahel on oluline hoolikalt jälgida infrastruktuuri, mis koosneb oma alamdomeenidest ja kolmandate osapoolte hostidest, millest sisu veebisaidile tarnitakse. Võib-olla tasub tellida audit mõnelt kolmandalt ettevõttelt, mis spetsialiseerub infotehnoloogia turvalisusele.

HTTPS ei ole alati nii turvaline, nagu näib. Haavatavusi leiti 5,5% HTTPS veebisaitidest

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster