HTTPS ist nicht immer so sicher, wie es scheint. In 5,5 % der HTTPS-Sites wurden Sicherheitslücken gefunden

HTTPS ist nicht immer so sicher, wie es scheint. In 5,5 % der HTTPS-Sites wurden Sicherheitslücken gefunden
Eine der Top-Sites von Alexa (mittlerer Kreis), gesichert durch HTTPS, mit Subdomains (grau) und Abhängigkeiten (weiß), darunter auch anfällige (gestrichelte Schattierung)

Heutzutage ist das Symbol für eine sichere HTTPS-Verbindung zum Standard und sogar zu einem notwendigen Attribut jeder seriösen Website geworden. Wenn Zertifikat fehlt, zeigen fast alle neueren Browser eine entsprechende Warnung an Verbindung zur Website ist „nicht sicher“ und empfehlen nicht, vertrauliche Informationen dorthin zu übertragen.

Es stellt sich jedoch heraus, dass das Vorhandensein eines „Schlosses“ in der Adressleiste nicht immer Schutz garantiert. Überprüfung von 10 führenden Websites Aus der Bewertung ging hervor, dass viele von ihnen kritischen Schwachstellen in den SSL-/TLS-Protokollen unterliegen, meist durch Subdomains oder Abhängigkeiten. Laut den Autoren der Studie erhöht die Komplexität moderner Webanwendungen die Angriffsfläche erheblich.

Ergebnisse der Studie

Die Studie wurde von Experten der Universität Venedig Ca' Foscari (Italien) und der Technischen Universität Wien durchgeführt. Einen ausführlichen Bericht werden sie auf dem 40. IEEE Symposium on Security and Privacy vorstellen, das vom 20. bis 22. Mai 2019 in San Francisco stattfindet.

Getestet wurden die 10 HTTPS-Sites der Alexa-Liste und 000 zugehörige Hosts. Anfällige kryptografische Konfigurationen wurden auf 90 Hosts entdeckt, also etwa 816 % der Gesamtzahl:

  • 4818 anfällig für MITM
  • 733 sind anfällig für die vollständige TLS-Entschlüsselung
  • 912 sind anfällig für eine teilweise TLS-Entschlüsselung

898 Websites sind vollständig anfällig für Hackerangriffe, das heißt, sie ermöglichen das Einschleusen fremder Skripte, und 977 Websites laden Inhalte von schlecht geschützten Seiten, mit denen ein Angreifer interagieren kann.

Die Forscher betonen, dass zu den 898 „völlig kompromittierten“ Ressourcen Online-Shops, Finanzdienstleistungen und andere große Websites gehören. 660 von 898 Websites laden externe Skripte von anfälligen Hosts herunter: Dies ist die Hauptgefahrenquelle. Den Autoren zufolge erhöht die Komplexität moderner Webanwendungen die Angriffsfläche erheblich.

Es wurden auch andere Probleme festgestellt: 10 % der Autorisierungsformulare haben Probleme mit der sicheren Übertragung von Informationen, wodurch die Gefahr besteht, dass Passwörter verloren gehen, 412 Websites erlauben das Abfangen von Cookies und Session-Hijacking und 543 Websites sind Angriffen auf die Cookie-Integrität (über Subdomains) ausgesetzt. .

Das Problem ist, dass in den letzten Jahren in den SSL/TLS-Protokollen und Software eine Reihe von Schwachstellen festgestellt: POODLE (CVE-2014-3566), BEAST (CVE-2011-3389), CRIME (CVE-2012-4929), BREACH (CVE-2013-3587) und Heartbleed (CVE-2014-0160). Um sich davor zu schützen, sind auf Server- und Clientseite eine Reihe von Einstellungen erforderlich, um die Verwendung alter anfälliger Versionen zu vermeiden. Dies ist jedoch kein triviales Verfahren, da solche Einstellungen die Auswahl aus einem umfangreichen Satz von Chiffren und Protokollen erfordern, die recht schwer zu verstehen sind. Es ist nicht immer klar, welche Verschlüsselungssammlungen und Protokolle als „sicher genug“ gelten.

Empfohlene Einstellungen

Es gibt keine offiziell genehmigte und vereinbarte Liste empfohlener HTTPS-Einstellungen. So, Mozilla SSL-Konfigurationsgenerator bietet je nach erforderlichem Schutzniveau mehrere Konfigurationsmöglichkeiten. Hier sind beispielsweise die empfohlenen Einstellungen für einen Nginx 1.14.0-Server:

Moderner Modus

Älteste unterstützte Kunden: 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>;

....
}

Mittlere Unterstützung

Älteste unterstützte Kunden: 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>;

....
}

Alter Support

Älteste unterstützte Kunden: 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 Cipher Suite und die neueste Version von OpenSSL zu verwenden. Die Cipher-Suite in den Servereinstellungen gibt abhängig von den Client-Einstellungen die Priorität an, in der sie verwendet werden.

Untersuchungen zeigen, dass es nicht ausreicht, nur ein HTTPS-Zertifikat zu installieren. „Obwohl wir nicht wie 2005 mit Cookies umgehen und ‚anständiges TLS‘ alltäglich geworden ist, stellt sich heraus, dass diese grundlegenden Dinge nicht ausreichen, um eine überraschend große Anzahl sehr beliebter Websites zu sichern.“ sagen sie die Autoren des Werkes. Um den Kanal zwischen dem Server und dem Client zuverlässig zu schützen, müssen Sie die Infrastruktur Ihrer eigenen Subdomains und Drittanbieter-Hosts, von denen Inhalte für die Site bereitgestellt werden, sorgfältig überwachen. Möglicherweise ist es sinnvoll, ein Audit bei einem auf Informationssicherheit spezialisierten Drittunternehmen in Auftrag zu geben.

HTTPS ist nicht immer so sicher, wie es scheint. In 5,5 % der HTTPS-Sites wurden Sicherheitslücken gefunden

Source: habr.com