A HTTPS nem mindig olyan biztonságos, mint amilyennek látszik. A HTTPS-webhelyek 5,5%-án találtak sebezhetőséget

A HTTPS nem mindig olyan biztonságos, mint amilyennek látszik. A HTTPS-webhelyek 5,5%-án találtak sebezhetőséget
Az Alexa egyik legnépszerűbb webhelye (központi kör), HTTPS-sel védett, aldomainekkel (szürke) és függőségekkel (fehér), amelyek között vannak sebezhetőek (szaggatott árnyékolás)

Napjainkra a HTTPS biztonságos kapcsolat ikonja minden komoly oldal szabványos, sőt szükséges attribútuma lett. Ha bizonyítvány hiányzik, szinte az összes legújabb böngésző figyelmeztet arra, hogy kapcsolat az oldallal "nem biztonságos" és ne ajánlja bizalmas információk átadását neki.

De kiderül, hogy a „zár” jelenléte a címsávban nem mindig garantálja a védelmet. 10 000 vezető webhely ellenőrzése Az értékelésből az Alexa kimutatta, hogy sok közülük az SSL/TLS protokollok kritikus sérülékenységének van kitéve, általában aldomaineken vagy függőségeken keresztül. A tanulmány készítői szerint a modern webes alkalmazások összetettsége nagymértékben megnöveli a támadási felületet.

Kutatási eredmények

A tanulmányt a Velencei Ca' Foscari Egyetem (Olaszország) és a Bécsi Műszaki Egyetem szakértői végezték. Részletes jelentést fognak bemutatni a 40. IEEE Symposium on Security and Privacy rendezvényen, amelyre 20. május 22-2019-én kerül sor San Franciscóban.

Az Alexa listán szereplő 10 000 legnépszerűbb HTTPS-webhelyet és 90 816 kapcsolódó gazdagépet teszteltek. Sebezhető kriptográfiai konfigurációkat 5574 gazdagépen észleltek, ami az összes számítógép körülbelül 5,5%-án:

  • 4818 sebezhető a MITM-mel szemben
  • A 733 sebezhető a teljes TLS visszafejtéssel szemben
  • A 912 sebezhető a részleges TLS visszafejtéssel szemben

898 webhely teljesen nyitott a feltörésre, azaz lehetővé teszik idegen szkriptek beszúrását, és 977 webhely tölt be olyan tartalmat a gyengén védett oldalakról, amelyekkel a támadó kapcsolatba léphet.

A kutatók hangsúlyozzák, hogy a 898 „teljesen kompromittált” forrás között vannak online áruházak, pénzügyi szolgáltatások és más nagy oldalak. 660 webhelyből 898 tölt le külső szkripteket sebezhető gazdagépről: ez a fő veszélyforrás. A szerzők szerint a modern webes alkalmazások összetettsége nagymértékben megnöveli a támadási felületet.

Egyéb problémákat is találtak: a meghatalmazási űrlapok 10%-ánál probléma van az információ biztonságos továbbításával, ami jelszavak kiszivárogtatásával fenyeget, 412 webhely lehetővé teszi a cookie-k lehallgatását és a munkamenet-eltérítést, és 543 webhelyen támadják meg a cookie-k integritását (aldomaineken keresztül) .

A probléma az, hogy az elmúlt években az SSL / TLS protokollok és szoftverek számos sebezhetőséget azonosított: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), BŰNÖZÉS (CVE-2012-4929), BREACH (CVE-2013-3587) és Heartbleed (CVE-2014-0160). Az ellenük való védekezés érdekében számos beállítás szükséges a szerver és a kliens oldalon, hogy elkerüljük a régi sebezhető verziók használatát. De ez egy meglehetősen nem triviális eljárás, mivel az ilyen beállítások magában foglalják a rejtjelek és protokollok széles készletéből történő választást, amelyeket meglehetősen nehéz megérteni. Nem mindig világos, hogy mely titkosítási csomagokat és protokollokat tekintik „eléggé biztonságosnak”.

Ajánlott beállítások

Nincs hivatalosan jóváhagyott és elfogadott HTTPS-beállítások listája. Így, Mozilla SSL konfigurációs generátor számos konfigurációs lehetőséget kínál a szükséges védelmi szinttől függően. Például itt vannak a javasolt beállítások egy nginx 1.14.0 kiszolgálóhoz:

Modern mód

Legrégebbi támogatott ügyfelek: Firefox 27, Chrome 30, IE 11 Windows 7, Edge, Opera 17, Safari 9, Android 5.0 és Java 8 rendszeren

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>;

....
}

Közepes támogatottság

Legrégebbi támogatott ügyfelek: 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>;

....
}

Régi támogatás

Legrégebbi támogatott ügyfelek: 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>;

....
}

Javasoljuk, hogy mindig a teljes titkosítási csomagot és az OpenSSL legújabb verzióját használja. A szerverbeállítások titkosítási csomagja határozza meg a használat prioritását, az ügyfél beállításaitól függően.

A kutatások azt mutatják, hogy nem elég csak egy HTTPS-tanúsítványt telepíteni. "Bár nem kezeljük a cookie-kat, mint 2005-ben, és a "tisztességes TLS" általánossá vált, kiderült, hogy ezek az alapvető dolgok nem elegendőek ahhoz, hogy meglepően sok nagyon népszerű webhelyet biztosítsanak." mond a mű szerzői. A szerver és a kliens közötti csatorna megbízható védelme érdekében gondosan figyelnie kell a saját aldomainjeiből és harmadik féltől származó gazdagépeiből származó infrastruktúrát, amelyről a webhely tartalma érkezik. Talán van értelme auditot rendelni egy harmadik féltől, amely információbiztonságra szakosodott.

A HTTPS nem mindig olyan biztonságos, mint amilyennek látszik. A HTTPS-webhelyek 5,5%-án találtak sebezhetőséget

Forrás: will.com