HTTPS ne vienmēr ir tik drošs, kā šķiet. Vainojamības atrastas 5,5% HTTPS vietnēs.

HTTPS ne vienmēr ir tik drošs, kā šķiet. Vainojamības atrastas 5,5% HTTPS vietnēs.
Viens no topiem Alexa vietnēm (centrālais apļa simbols), ko aizsargā HTTPS, ar apakšdomēniem (pelēkā krāsā) un atkarībām (balta krāsā), starp kurām ir «vulnerable» (svītrota aizpildījuma krāsa)

Mūsu laikā HTTPS aizsargātā savienojuma simbols ir kļuvis par standartu un pat nepieciešamu atribūtu jebkurai nopietnai vietnei. Ja sertifikāts nav pieejams, gandrīz visi jaunākie pārlūki parāda brīdinājumu, ka savienojums ar vietni «nav aizsargāts» un neiesaka nodot tajā konfidenciālu informāciju.

Bet izrādās, ka «atslēdziņas» klātbūtne adreses rindā ne vienmēr garantē aizsardzību. Pārbaude 10 000 vadošajām vietnēm no Alexa reitinga parādīja: daudzas no tām ir pakļautas kritiskām SSL/TLS protokola ievainojamībām, parasti caur apakšdomēniem vai atkarībām. Kaut ko tādu norādījuši pētījuma autori, mūsdienu tīmekļa lietojumprogrammu sarežģītība daudzkārt palielina uzbrukuma virsmas laukumu.

Pētījuma rezultāti

Pētījumu veica speciālisti no Venēcijas Universitātes Ка’ Foscari (Itālija) un Viņas tehniskā universitāte. Detalizētu ziņojumu viņi prezentēs 40. IEEE simpozijā par drošību un privātumu, kas notiks no 20. līdz 22. maijam, 2019. gadā Sanfrancisko.

Tika pārbaudītas 10 000 populārākās HTTPS vietnes no Alexa saraksta un 90 816 saistīto hostu. Ievainojamās kriptogrāfiskās konfigurācijas tika atklātas 5574 hostos, t.i., apmēram 5,5% no kopējā skaita:

  • 4818 ir ievainojami pret MITM
  • 733 ir ievainojami pilnīgai TLS atšifrēšanai
  • 912 ir ievainojami daļējai TLS atšifrēšanai

898 vietnes ir pilnībā atvērtas uzbrukumiem, t.i., dod iespēju ievietot trešo pušu skriptus, bet 977 vietnes ielādē saturu no vāji aizsargātām lapām, ar kurām var mijiedarboties uzbrucējs.

Pētnieki uzsver, ka starp 898 «pilnībā kompromitētajiem» resursiem ir interneta veikali, finanšu pakalpojumi un citas lielas vietnes. 660 no 898 vietnēm ielādē ārējus skriptus no ievainojamiem hostiem: tas ir galvenais bīstamības avots. Autori apgalvo, ka mūsdienu tīmekļa lietojumprogrammu sarežģītība daudzkārt palielina uzbrukuma virsmas laukumu.

Atklātas arī citas problēmas: 10% autorizācijas veidlapu saskaras ar problēmām drošā informācijas pārsūtīšanā, kas apdraud parolu noplūdi, 412 vietnes ļauj izsekot sīkdatnēm un «sesijas uzņemšanai», bet 543 vietnes ir pakļautas uzbrukumiem uz sīkdatņu integritāti (caur apakšdomēniem).

Problēma ir tāda, ka pēdējo gadu laikā SSL/TLS protokolos un programmatūrā ir atklātas vairākas ievainojamības tiek identificētas vairākas ievainojamības: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) un Heartbleed (CVE-2014-0160). Lai no tām pasargātu, ir nepieciešami noteikti iestatījumi servera un klienta pusē, lai izvairītos no vecu ievainojamu versiju izmantošanas. Tomēr tas ir diezgan netrivials process, jo šādi iestatījumi paredz izvēli no plaša šifrēšanas un protokolu klāsta, kurā ir grūti orientēties. Ne vienmēr ir skaidrs, kuri tieši šifrēšanas un protokolu komplekti ir uzskatāmi par "pietiekami drošiem".

Ieteicamie iestatījumi

Nav viena oficiāli apstiprināta un saskaņota HTTPS ieteicamo iestatījumu saraksta. Tādējādi Mozilla SSL Configuration Generator piedāvā vairākas konfigurācijas opcijas, atkarībā no prasītā aizsardzības līmeņa. Piemēram, šeit ir ieteicamie iestatījumi nginx 1.14.0 serverim:

Mūsdienu režīms

Visvecākie atbalstītie klienti: Firefox 27, Chrome 30, IE 11 Windows 7, Edge, Opera 17, Safari 9, Android 5.0, un Java 8

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

# Pāradresēt visas HTTP pieprasījumus uz HTTPS ar 301 Moved Permanently atbildi.
return 301 https://$host$request_uri;
}

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

# sertifikāti, kas sūtīti klientam SERVER HELLO, ir apkopoti 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;

# mūsdienu konfigurācija. pielāgojiet pēc savām vajadzībām.
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 ir nepieciešams) (15768000 sekundes = 6 mēneši)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# iegūt OCSP ierakstus no URL ssl_certificate un kešēt tos
ssl_stapling on;
ssl_stapling_verify on;

## pārbaudīt OCSP atbildes uzticamības ķēdi, izmantojot Root CA un starpniecības sertifikātus
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Vidēja atbalsta

Visvecākie atbalstītie klienti: 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;

# Novirza visus HTTP pieprasījumus uz HTTPS ar 301 Moved Permanently atbildi.
return 301 https://$host$request_uri;
}

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

# sertifikāti, kas nosūtīti klientam SERVER HELLO, tiek savienoti 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 parametri DHE šifru komplektiem, ieteicams 2048 biti
ssl_dhparam /path/to/dhparam.pem;

# starpposma konfigurācija. pielāgojiet pēc savām vajadzībā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 ir nepieciešams) (15768000 sekundes = 6 mēneši)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# iegūst OCSP ierakstus no URL ssl_certificate un kešē tos
ssl_stapling on;
ssl_stapling_verify on;

## pārbaudīt OCSP atbildes uzticības ķēdi, izmantojot saknes CA un starpsertifikātus
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Vecā atbalsta

Visvecākie atbalstītie klienti: Windows XP IE6, Java 6

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

# Novirza visus HTTP pieprasījumus uz HTTPS ar 301 Moved Permanently atbildi.
return 301 https://$host$request_uri;
}

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

# sertifikāti, kas nosūtīti klientam SERVER HELLO, tiek savienoti 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 parametri DHE šifru komplektiem, ieteicams 2048 biti
ssl_dhparam /path/to/dhparam.pem;

# vecā konfigurācija. pielāgojiet pēc savām vajadzībā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 ir nepieciešams) (15768000 sekundes = 6 mēneši)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# iegūst OCSP ierakstus no URL ssl_certificate un kešē tos
ssl_stapling on;
ssl_stapling_verify on;

## pārbaudīt OCSP atbildes uzticības ķēdi, izmantojot saknes CA un starpsertifikātus
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Vienmēr ieteicams izmantot pilnu šifru komplektu un jaunāko OpenSSL versiju. Šifru komplekta ieraksts servera iestatījumos norāda prioritāti, kādā tie tiks izmantoti atkarībā no klienta iestatījumiem.

Pētījums liecina, ka nav pietiekami vienkārši uzstādīt HTTPS sertifikātu. "Lai gan mēs vairs neapstrādājam sīkfailus tāpat kā 2005. gadā, un 'piemērots TLS' ir kļuvis par vispārpieņemtu, izrādās, ka šīs pamatlietas nav pietiekamas, lai nodrošinātu drošību neticami lielam skaitam ļoti populāru vietņu," — norāda darba autori. Lai nodrošinātu drošu kanālu starp serveri un klientu, rūpīgi jāpārrauga infrastruktūra no saviem apakšdomeniem un trešo pušu hostiem, no kuriem tiek piegādāts vietnes saturs. Varbūt ir vērts pasūtīt auditu pie kādas trešās puses uzņēmuma, kas specializējas informācijas drošībā.

HTTPS ne vienmēr ir tik drošs, kā šķiet. Vainojamības atrastas 5,5% HTTPS vietnēs.

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster