HTTPS ei pruugi alati olla nii turvaline nagu näib. Haavatavusi leiti 5,5% HTTPS veebilehtedest.

HTTPS ei pruugi alati olla nii turvaline nagu näib. Haavatavusi leiti 5,5% HTTPS veebilehtedest.
Üks Alexa tipp-saitidest (keskmine ring), mis on kaitstud HTTPS-iga, koos alamdomeenidega (hall) ja sõltuvustega (valge), millest mõned on haavatavad (triibuline täitmine)

Tänapäeval on HTTPS-i kaitstud ühenduse ikoon muutunud standardiks ja isegi vajalikuks atribuudi iga tõsise saidi jaoks. Kui sertifikaat puudub, siis peaaegu kõik kaasaegsed brauserid näitavad hoiatust, et ühendus saidiga on 'kaitsmata' ja ei soovita edastada sellele konfidentsiaalset teavet.

Kuid osutub, et 'luku' olemasolu aadressiribal ei garanteeri alati kaitset. 10 000 juhtiva saidi kontrollimine Alexa edetabelist näitas: paljud neist on SSL/TLS protokollide kriitilistele haavatavustele avatud, tavaliselt alamdomeenide või sõltuvuste kaudu. Uuringu autorite sõnul suureneb kaasaegsete veebirakenduste keerukus mitmekordselt rünnakupinda.

Uuringu tulemused

Uuringu tegid Venetsia Ca' Foscari ülikooli (Itaalia) ja Vienna Tehnikaülikooli spetsialistid. Üksikasjaliku raporti esitavad nad 40. IEEE turvalisuse ja privaatsuse simposioonil, mis toimub 20-22 mai 2019 San Franciscos.

Kontrollitud on 10 000 kõige populaarsemat HTTPS veebisaiti Alexa nimekirjast ja 90 816 seotud hosti. Haavatavad krüptograafilised konfiguratsioonid tuvastati 5574 hostis, mis on ligikaudu 5,5% koguarvust:

  • 4818 on haavatavad MITM rünnakute suhtes
  • 733 on haavatavad TLS täieliku dekrüpteerimise suhtes
  • 912 on haavatavad TLS osalise dekrüpteerimise suhtes

898 veebisaiti on täielikult häkitavad, see tähendab, et need võimaldavad kolmandate osapoolte skriptide sisestamist, ning 977 veebisaiti laadivad sisu aeglaselt kaitstud lehtedelt, millega saab suhelda kurjategija.

Uurijad rõhutavad, et 898 „täiesti kompromiteeritud” ressursi hulgas on e-poed, finantsteenused ja teised suured saidid. 660 898-st saidist laadivad väliseid skripte haavatavatelt hostidelt: see on peamine ohuallikas. Autorite sõnul suurendab kaasaegsete veebirakenduste keerukus rünnaku pinda mitmeid kordi.

Leiti ka teisi probleeme: 10% autoriseerimisvormidest on probleemid turvalise teabe edastamisega, mis ähvardab paroolide leket, 412 saidist lubavad cookie-de pealtkuulamist ja „sessiooni röövimist”, ning 543 saidi on vastuvõtlikud küpsiste terviklikkuse rünnakutele (alamdomeenide kaudu).

Probleem on see, et viimasel ajal on SSL/TLS protokollides ja tarkvaras avaldunud mitmeid haavatavusi: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) ja Heartbleed (CVE-2014-0160). Nendest kaitsmiseks on vaja teha mitmeid seadistusi serveri ja kliendi poolel, et vältida vanade haavatavate versioonide kasutamist. Kuid see on piisavalt mitmetahuline protseduur, kuna sellised seadistused hõlmavad ulatuslikest šifrite ja protokollide valikust valimist, milles on keeruline orienteeruda. Pole alati selge, milliseid šifrite ja protokollide komplekte pidada „piisavalt turvalisteks“.

Soovitatavad seadistused

Ühte ametlikult heakskiidetud ja kokkulepitud soovitatud HTTPS seadistuste nimekirja ei eksisteeri. Näiteks Mozilla SSL Configuration Generator pakub mitmeid konfiguratsioonivõimalusi, sõltuvalt nõutavast kaitsetasemest. Näiteks siin on soovitatud seadistused nginx 1.14.0 serveri jaoks:

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;

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

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

# kliendile SERVER HELLOS 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;


# kaasaegne konfiguratsioon. kohandage vastavalt vajadusele.
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 ---
# too OCSP kirjed URL-st ssl_certificate'is ja cache'i need
ssl_stapling on;
ssl_stapling_verify on;

## kontrollige OCSP vastuse usaldusväärsuse ahelat Root CA ja vahesertifikaatide 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;

# 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'is saadetavad sertifikaadid on ühendatud 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-Hellmani parameeter DHE krüptograafiliste algoritmide jaoks, soovitatav 2048 bitti
ssl_dhparam /path/to/dhparam.pem;

# vahepealne konfiguratsioon. kohanda vastavalt 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 sekundi = 6 kuud)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# toob OCSP kirjed URL-st, mis on ssl_certificate, ja salvestab need
ssl_stapling on;
ssl_stapling_verify on;

## kontrollib OCSP vastuse usaldusväärsuse ahelat Root CA ja vahesertifikaatide abil
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Vanem 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-i koos 301 Moved Permanently vastusega.
return 301 https://$host$request_uri;
}

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

# kliendi poole sertifikaadid, mis saadetakse SERVER HELLO-s, on kokku pandud 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üptoühenduste jaoks, soovitatav 2048 bitti
ssl_dhparam /path/to/dhparam.pem;

# vana konfiguratsioon. kohandage vastavalt 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 URL-ist, mis on ssl_certificate-is, ja salvestage need
ssl_stapling on;
ssl_stapling_verify on;

## kontrollige OCSP vastuse usaldusväärsuse ahelat, kasutades Root CA ja vahe sertifikaate
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Soovitatav on alati kasutada täielikku krüptovõtmete kogumit ja kõige uuemat OpenSSL versiooni. Serveri seadete krüptovõtmete kogum näitab eelistuse järjekorda, milles neid kasutatakse, sõltuvalt kliendi seadistustest.

Uuringud näitavad, et lihtsalt HTTPS sertifikaadi installimine ei ole piisav. "Kuigi me ei ravi küpsiseid nagu 2005. aastal, ja 'soliidne TLS' on saanud tavapäraseks, osutub, et need põhiasjad ei ole piisavad üllatavalt suure hulga väga populaarsete veebisaitide turvalisuse tagamiseks," — ütlevad töörühma autorid. Usaldusväärse kaitse tagamiseks serveri ja kliendi vahel on oluline hoolikalt jälgida isiklike alamsaadetiste ja kolmandate osaliste hostide infrastruktuuri, kust saitidele sisu tarnitakse. Võib-olla tasub tellida audit mõnelt kolmandalt ettevõttelt, mis spetsialiseerub infotehnoloogia turvalisusele.

HTTPS ei pruugi alati olla nii turvaline nagu näib. Haavatavusi leiti 5,5% HTTPS veebilehtedest.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster