HTTPS is nie altyd so veilig soos dit lyk nie. Kwesbaarhede gevind in 5,5% van HTTPS-werwe

HTTPS is nie altyd so veilig soos dit lyk nie. Kwesbaarhede gevind in 5,5% van HTTPS-werwe
Een van Alexa se topwerwe (sentrale sirkel), beveilig deur HTTPS, met subdomeine (grys) en afhanklikhede (wit), waaronder daar kwesbares is (gestreepte skaduwee)

Deesdae het die HTTPS veilige verbinding-ikoon 'n standaard en selfs 'n noodsaaklike kenmerk van enige ernstige webwerf geword. As sertifikaat ontbreek, byna alle onlangse blaaiers wys 'n waarskuwing dat verbinding met die webwerf is "nie veilig nie" en beveel nie aan om vertroulike inligting daarheen oor te dra nie.

Maar dit blyk dat die teenwoordigheid van 'n "slot" in die adresbalk nie altyd beskerming waarborg nie. Gaan 10 000 toonaangewende werwe na uit die gradering het Alexa gewys dat baie van hulle onderhewig is aan kritieke kwesbaarhede in die SSL / TLS-protokolle, gewoonlik deur subdomeine of afhanklikhede. Volgens die skrywers van die studie verhoog die kompleksiteit van moderne webtoepassings die aanvaloppervlak aansienlik.

Navorsingsresultate

Die studie is uitgevoer deur kundiges van die Universiteit van Venesië Ca' Foscari (Italië) en die Wene Tegniese Universiteit. Hulle sal 'n gedetailleerde verslag aanbied by die 40ste IEEE Simposium oor Sekuriteit en Privaatheid, wat 20-22 Mei 2019 in San Francisco gehou sal word.

Die top 10 000 Alexa lys HTTPS-werwe en 90 816 verwante gashere is getoets. Kwesbare kriptografiese konfigurasies is op 5574 gashere opgespoor, dit wil sê ongeveer 5,5% van die totaal:

  • 4818 kwesbaar vir MITM
  • 733 is kwesbaar vir volledige TLS-dekripsie
  • 912 is kwesbaar vir gedeeltelike TLS-dekripsie

898 werwe is heeltemal oop vir inbraak, dit wil sê hulle laat die inspuiting van derdeparty-skrifte toe, en 977 werwe laai inhoud van swak beskermde bladsye waarmee 'n aanvaller kan interaksie hê.

Die navorsers beklemtoon dat onder die 898 "heeltemal gekompromitteerde" hulpbronne aanlynwinkels, finansiële dienste en ander groot webwerwe is. 660 uit 898 werwe laai eksterne skrifte af van kwesbare gashere: dit is die hoofbron van gevaar. Volgens die skrywers verhoog die kompleksiteit van moderne webtoepassings die aanvaloppervlak aansienlik.

Ander probleme is ook gevind: 10% van magtigingsvorms het probleme met die veilige oordrag van inligting, wat dreig om wagwoorde uit te lek, 412 werwe laat onderskepping van koekies en sessiekaping toe, en 543 werwe is onderhewig aan aanvalle op koekie-integriteit (deur subdomeine) .

Die probleem is dat in die afgelope jaar in die SSL / TLS protokolle en sagteware 'n aantal kwesbaarhede geïdentifiseer: POEDEL (CVE-2014-3566), BEAST (CVE-2011-3389), MISDAAD (CVE-2012-4929), BREACH (CVE-2013-3587), en Heartbleed (CVE-2014-0160). Om daarteen te beskerm, word 'n aantal instellings aan die bediener- en kliëntkant vereis om die gebruik van ou kwesbare weergawes te vermy. Maar dit is 'n taamlik nie-triviale prosedure, want sulke instellings behels die keuse uit 'n uitgebreide stel syfers en protokolle, wat redelik moeilik is om te verstaan. Dit is nie altyd duidelik watter syferreekse en protokolle as "veilig genoeg" beskou word nie.

Aanbevole instellings

Daar is niemand wat 'n amptelike lys van aanbevole HTTPS-instellings goedgekeur en ooreengekom het nie. Dus, Mozilla SSL-konfigurasie-opwekker bied verskeie konfigurasie-opsies, afhangende van die vereiste vlak van beskerming. Hier is byvoorbeeld die aanbevole instellings vir 'n nginx 1.14.0-bediener:

Moderne modus

Oudste ondersteunde kliënte: Firefox 27, Chrome 30, IE 11 op Windows 7, Edge, Opera 17, Safari 9, Android 5.0 en Java 8

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

....
}

Medium ondersteuning

Oudste ondersteunde kliënte: 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>;

....
}

Ou Ondersteuning

Oudste ondersteunde kliënte: 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>;

....
}

Dit word aanbeveel dat jy altyd die volledige kodepakket en die nuutste weergawe van OpenSSL gebruik. Die syferreeks in die bedienerinstellings spesifiseer die prioriteit waarin dit gebruik sal word, afhangende van die kliëntinstellings.

Navorsing toon dat dit nie genoeg is om net 'n HTTPS-sertifikaat te installeer nie. "Terwyl ons nie koekies hanteer soos in 2005 nie, en 'ordentlike TLS' algemeen geword het, blyk dit dat hierdie basiese dinge nie genoeg is om 'n verbasend groot aantal baie gewilde werwe te beveilig nie," hulle sê die skrywers van die werk. Om die kanaal tussen die bediener en die kliënt betroubaar te beskerm, moet u die infrastruktuur noukeurig monitor vanaf u eie subdomeine en derdeparty-gashere waaruit inhoud vir die webwerf verskaf word. Miskien maak dit sin om 'n oudit te bestel by een of ander derdepartymaatskappy wat in inligtingsekuriteit spesialiseer.

HTTPS is nie altyd so veilig soos dit lyk nie. Kwesbaarhede gevind in 5,5% van HTTPS-werwe

Bron: will.com