HTTPS nije uvijek toliko siguran koliko se čini. Ranjivosti su otkrivene na 5,5% HTTPS stranica

HTTPS nije uvijek toliko siguran koliko se čini. Ranjivosti su otkrivene na 5,5% HTTPS stranica
Jedna od vodećih web stranica prema Alexa (središnji krug), zaštićena HTTPS-om, s poddomenama (siva) i ovisnostima (bijela), među kojima su i ranjive (crtasta popuna)

U današnje vrijeme, ikona zaštićene veze HTTPS postala je standardni i čak neophodni atribut svake ozbiljne web stranice. Ako certifikat nedostaje, gotovo svi moderni preglednici prikazuju upozorenje da je veza s web stranicom "nezaštićena" i ne preporučuju slanje povjerljivih informacija na nju.

Međutim, ispostavlja se da prisutnost "katanca" u adresnoj traci ne jamči uvijek zaštitu. Istraživanje 10.000 vodećih web stranica iz Alexa ljestvice pokazalo je da su mnoge od njih podložne kritičnim ranjivostima SSL/TLS protokola, obično kroz poddomene ili ovisnosti. Prema riječima autora istraživanja, složenost današnjih web aplikacija višestruko povećava površinu napada.

Rezultati istraživanja

Istraživanje su proveli stručnjaci sa Sveučilišta Ca' Foscari u Veneciji (Italija) i Tehničkog sveučilišta u Beču. Detaljno izvješće predstavit će na 40. simpoziju IEEE o sigurnosti i privatnosti, koji će se održati od 20. do 22. svibnja 2019. u San Franciscu.

Istraženo je 10.000 najpopularnijih HTTPS web stranica s Alexa liste i 90.816 povezanih hosting računa. Ranjive kriptografske konfiguracije otkrivene su na 5574 hostinga, što čini približno 5,5% od ukupnog broja:

  • 4818 ranjivih na MITM
  • 733 ranjivih na potpunu dekriptaciju TLS-a
  • 912 ranjivih na djelomičnu dekriptaciju TLS-a

898 web stranica potpuno je otvoreno za hakiranje, što omogućava injekciju vanjskih skripti, a 977 web stranica učitava sadržaj s nedovoljno zaštićenih stranica s kojima može manipulisati zlonamjerni akter.

Istraživači ističu da među 898 "potpuno kompromitiranih" resursa postoje internet trgovine, financijske usluge i druge velike web stranice. 660 od 898 web stranica učitava vanjske skripte s ranjivih hostova: to je glavni izvor opasnosti. Prema riječima autora, složenost današnjih web aplikacija višestruko povećava površinu napada.

Otkriveni su i drugi problemi: 10% obrazaca za autorizaciju ima problema s sigurnim prijenosom informacija, što prijeti curenjem lozinki, 412 web stranica dopušta presretanje kolačića i "krađu sesije", a 543 web stranica podložne su napadima na integritet kolačića (putem poddomena).

Problem je u tome što su tijekom posljednjih godina u protokolima SSL/TLS i softveru otkrivene brojne ranjivosti: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) i Heartbleed (CVE-2014-0160). Za zaštitu od njih potrebna su određena podešavanja na strani poslužitelja i klijenta kako bi se izbjegla upotreba starih ranjivih verzija. No, to je prilično složen postupak jer takva podešavanja uključuju odabir iz širokog spektra šifri i protokola, što može biti teško razumjeti. Ponekad nije jasno koji su točno skupovi šifri i protokola dovoljno sigurni.

Preporučena podešavanja

Ne postoji službeno odobren i dogovoren popis preporučenih podešavanja HTTPS-a. Tako, Mozilla SSL Configuration Generator nudi nekoliko opcija konfiguracije, ovisno o potrebnoj razini zaštite. Na primjer, ovo su preporučena podešavanja za nginx poslužitelj 1.14.0:

Moderna konfiguracija

Najstariji podržani klijenti: Firefox 27, Chrome 30, IE 11 na Windows 7, Edge, Opera 17, Safari 9, Android 5.0 i Java 8

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

# Preusmjeri sve HTTP zahtjeve na HTTPS s 301 Moved Permanently odgovorom.
return 301 https://$host$request_uri;
}

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

# certifikati poslani klijentu u SERVER HELLO su spojeni u 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;


# moderna konfiguracija. prilagodite prema svojim potrebama.
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 je potreban) (15768000 sekundi = 6 mjeseci)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# preuzmi OCSP zapise s URL-a u ssl_certificate i pohrani ih
ssl_stapling on;
ssl_stapling_verify on;

## provjeri lanac povjerenja OCSP odgovora koristeći Root CA i Intermediate certifikate
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Srednja podrška

Najstariji podržani klijenti: 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;

# Preusmjeri sve HTTP zahtjeve na HTTPS s 301 Moved Permanently odgovorom.
return 301 https://$host$request_uri;
}

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

# certifikati poslani klijentu u SERVER HELLO su spojeni u 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 parametar za DHE ciphersuites, preporučeno 2048 bita
ssl_dhparam /path/to/dhparam.pem;

# srednja konfiguracija. prilagodite prema svojim potrebama.
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 je potreban) (15768000 sekundi = 6 mjeseci)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# dohvatite OCSP zapise s URL-a u ssl_certificate i pohranite ih
ssl_stapling on;
ssl_stapling_verify on;

## provjerite lanac povjerenja OCSP odgovora koristeći Root CA i Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Stara podrška

Najstariji podržani klijenti: Windows XP IE6, Java 6

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

# Preusmjeri sve HTTP zahtjeve na HTTPS s 301 Moved Permanently odgovorom.
return 301 https://$host$request_uri;
}

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

# certifikati poslani klijentu u SERVER HELLO su spojeni u 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 parametar za DHE ciphersuites, preporučeno 2048 bita
ssl_dhparam /path/to/dhparam.pem;

# stara konfiguracija. prilagodite prema svojim potrebama.
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 je potreban) (15768000 sekundi = 6 mjeseci)
add_header Strict-Transport-Security max-age=15768000;

# OCSP Stapling ---
# dohvatite OCSP zapise s URL-a u ssl_certificate i pohranite ih
ssl_stapling on;
ssl_stapling_verify on;

## provjerite lanac povjerenja OCSP odgovora koristeći Root CA i Intermediate certs
ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates;

resolver ;

....
}

Preporučuje se uvijek koristiti puni set šifri i najnoviju verziju OpenSSL-a. Set šifri u postavkama poslužitelja ukazuje na prioritet kojim će se koristiti, ovisno o postavkama klijenta.

Istraživanje pokazuje da nije dovoljno jednostavno instalirati HTTPS certifikat. "Iako ne obrađujemo kolačiće kao 2005. godine, a 'pristojni TLS' postao je opće mjesto, ispostavlja se da te osnovne stvari nisu dovoljne za osiguranje sigurnosti na iznenađujuće velikom broju vrlo popularnih web stranica", — kažu autori rada. Za pouzdanu zaštitu kanala između poslužitelja i klijenta potrebno je pomno pratiti infrastrukturu vlastitih poddomena i vanjskih hostova s kojih se dostavlja sadržaj za web stranicu. Možda ima smisla angažirati neku vanjsku tvrtku koja se specijalizirala za informatičku sigurnost.

HTTPS nije uvijek toliko siguran koliko se čini. Ranjivosti su otkrivene na 5,5% HTTPS stranica

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster