Eine der Top-Sites Alexa (der zentrale Kreis), geschützt durch HTTPS, mit Subdomains (grau) und Abhängigkeiten (weiß), unter denen sich gefährdete (gestrichelte Füllung) befinden.Heutzutage ist das HTTPS-Symbol für sichere Verbindungen zu einem Standard- und sogar notwendigen Attribut jeder seriösen Site geworden. Wenn das
Zertifikat fehlt, zeigen fast alle neueren Browser eine Warnung an, dass die
Verbindung zur Site "nicht sicher" ist, und empfehlen nicht, vertrauliche Informationen an
die Site zu übertragen.
Es stellt sich jedoch heraus, dass das Vorhandensein eines „Schlosses“ in der Adressleiste nicht immer den Schutz garantiert.
Eine Überprüfung von 10.000 führenden Websites aus dem Alexa-Ranking ergab, dass viele von ihnen kritischen Sicherheitslücken in den SSL / TLS-Protokollen unterliegen, normalerweise durch Subdomains oder Abhängigkeiten. Laut den Autoren der Studie erhöht die Komplexität moderner Webanwendungen die Angriffsfläche erheblich.
Forschungsergebnisse
Die Studie wurde von Experten der Universität von Venedig Ca 'Foscari (Italien) und der Technischen Universität Wien durchgeführt. Sie werden einen detaillierten Bericht auf dem 40. IEEE-Symposium für Sicherheit und Datenschutz präsentieren, das vom 20. bis 22. Mai 2019 in San Francisco stattfinden wird.
10.000 der beliebtesten HTTPS-Sites aus der Alexa-Liste und 90.816 verwandte Hosts wurden überprüft. Auf 5574 Hosts wurden anfällige kryptografische Konfigurationen festgestellt, d. H. Ungefähr 5,5% der Gesamtzahl:
- 4818 anfällig für MITM
- 733 anfällig für die vollständige Entschlüsselung von TLS
- 912 anfällig für teilweise TLS-Entschlüsselung
898 Websites sind vollständig für Hacking geöffnet, dh sie ermöglichen das Einfügen von externen Skripten, und 977 Websites laden Inhalte von schwach geschützten Seiten herunter, mit denen ein Angreifer interagieren kann.
Die Forscher betonen, dass unter 898 „vollständig gefährdeten“ Ressourcen Online-Shops, Finanzdienstleistungen und andere große Websites sind. 660 von 898 Websites laden externe Skripte von anfälligen Hosts herunter: Dies ist die Hauptgefahr. Laut den Autoren erhöht die Komplexität moderner Webanwendungen die Angriffsfläche erheblich.
Andere Probleme wurden entdeckt: 10% der Formulare für die Autorisierung haben Probleme mit der sicheren Übertragung von Informationen, die zu einem Kennwortleck führen können, 412 Websites ermöglichen das Abfangen von Cookies und "Sitzungsentführung", und 543 Websites sind anfällig für Angriffe auf die Integrität von Cookies (über Subdomänen).
Das Problem ist, dass in den letzten Jahren
eine Reihe von Sicherheitslücken in SSL / TLS-Protokollen und -Software
identifiziert wurden : POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE) -2013-3587) und Heartbleed (CVE-2014-0160). Zum Schutz vor ihnen sind auf Server- und Clientseite eine Reihe von Einstellungen erforderlich, um die Verwendung alter anfälliger Versionen zu vermeiden. Dies ist jedoch ein nicht triviales Verfahren, da solche Einstellungen die Auswahl aus einem umfangreichen Satz von Chiffren und Protokollen ermöglichen, die schwer zu verstehen sind. Es ist nicht immer klar, welche bestimmten Sätze von Chiffren und Protokollen als „ziemlich sicher“ gelten.
Empfohlene Einstellungen
Es gibt keine offiziell genehmigte und vereinbarte Liste der empfohlenen HTTPS-Einstellungen. Daher bietet
Mozilla SSL Configuration Generator je nach erforderlicher Schutzstufe verschiedene Konfigurationsoptionen. Hier sind beispielsweise die empfohlenen Einstellungen für den Nginx 1.14.0-Server:
Moderner Modus
Älteste unterstützte Clients: Firefox 27, Chrome 30, IE 11 unter Windows 7, Edge, Opera 17, Safari 9, Android 5.0 und 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>; .... }
Durchschnittliche Unterstützung
Älteste unterstützte Clients: 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>; .... }
Alte Unterstützung
Älteste unterstützte Clients: 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>; .... }
Es wird empfohlen, immer die vollständige Verschlüsselungssuite und die neueste Version von OpenSSL zu verwenden. Die Verschlüsselungssuite in den Servereinstellungen gibt die Priorität an, in der sie abhängig von den Clienteinstellungen verwendet werden.
Untersuchungen zeigen, dass die Installation eines HTTPS-Zertifikats nicht ausreicht. "Obwohl wir Cookies nicht wie im Jahr 2005 verarbeiten und das anständige TLS mittlerweile alltäglich ist, stellt sich heraus, dass diese grundlegenden Dinge nicht ausreichen, um die Sicherheit einer überraschend großen Anzahl sehr beliebter Websites zu gewährleisten",
sagen die Autoren der Arbeit. Um den Kanal zwischen Server und Client zuverlässig zu schützen, müssen Sie die Infrastruktur von Ihren eigenen Subdomains und Hosts von Drittanbietern, von denen der Inhalt für die Site bereitgestellt wird, sorgfältig überwachen. Vielleicht ist es sinnvoll, ein Audit bei einem auf Informationssicherheit spezialisierten Drittunternehmen zu bestellen.

