Coders erobern die Sicherheit Infrastruktur als Code Serie: Unzureichender Schutz der Transportschicht

Veröffentlicht Jun 01, 2020
von Matias Madou, Ph.D.
FALLSTUDIE

Coders erobern die Sicherheit Infrastruktur als Code Serie: Unzureichender Schutz der Transportschicht

Veröffentlicht Jun 01, 2020
von Matias Madou, Ph.D.
Ressource anzeigen
Ressource anzeigen

Wenn Sie ein Entwickler sind, der mehr über die Schritte erfahren möchte, die Sie unternehmen können, um mit der Bereitstellung einer sicheren Infrastruktur als Code (IaC) in Ihrem Unternehmen zu beginnen, dann sind Sie hier genau richtig. Dies ist das nächste Kapitel unserer IaC-Reihe, das Sie in die Best Practices für IaC-Sicherheit einführen soll.

Bevor wir beginnen, wie sind Sie mit der Herausforderung aus der letzten Folge zurechtgekommen? Wenn Sie die unsichere Kryptografie beherrschen, lassen Sie uns sehen, wie Sie mit dem unzureichenden Schutz der Transportschicht zurechtkommen, bevor wir uns den Details widmen:

Möchten Sie mehr erfahren und eine perfekte Punktzahl erreichen? Lesen Sie weiter:

In unserem letzten Artikel haben wir darüber gesprochen, wie wichtig eine sichere Verschlüsselung ist, um alle wichtigen oder persönlichen Daten zu schützen, die von Anwendungen und Programmen gespeichert werden. Wenn Sie über eine starke Verschlüsselung verfügen, fungiert sie als perfekte letzte Verteidigungslinie. Selbst wenn ein Angreifer in der Lage ist, diese Daten zu stehlen, sind die in diesen Dateien gespeicherten Informationen geschützt, wenn sie stark verschlüsselt sind.

Der Schutz von Daten im Ruhezustand ist jedoch nur ein Teil einer vollständigen Datenverteidigung. Wann immer gültige Benutzer auf geschützte Daten zugreifen müssen, müssen diese an sie gesendet werden. Gelegentlich werden Anwendungen auch Daten mit anderen Programmen als Teil einer Gesamtarbeitslast austauschen. Wenn die Transportschicht nicht geschützt ist, ist sie sowohl für das Ausspähen von außen als auch für unautorisierte interne Zugriffe anfällig. Daher kann ein unzureichender Schutz der Transportschicht zu ernsthaften Problemen führen.

Es ist ein weit verbreitetes Problem. Die Sicherheitsorganisation OWASP unterhält sogar eine ganze Seite über unzureichenden Transportschichtschutz.

Warum ist ein unzureichender Schutz der Transportschicht gefährlich?

Wenn Sie Ihre Transportschichten nicht ausreichend schützen, ist es für geschickte Hacker relativ einfach, Informationen, die zwischen Ihren Benutzern und Ihren Anwendungen fließen, mit Techniken wie Man-in-the-Middle-Angriffen abzufangen. Der wahrscheinlich gefährlichste Aspekt dieser Art von Schnüffelei ist, dass sie für interne Cybersicherheitsplattformen oder Scans fast völlig unsichtbar ist, da sie außerhalb Ihres Netzwerks und Ihrer Kontrolle stattfindet.

Zum Beispiel in einer Docker-Umgebung, in der ein Nginx-Dienst bereitgestellt wird:

services:
nginx:
image: localhost:5000/scw_nginx
build: ./nginx
secrets:
- nginx_cert
- nginx_key
volumes:
- type: bind
source: ./nginx/nginx.conf
target: /etc/nginx/nginx.conf
read_only: yes
ports:
- 80:8443
networks:
- frontend
deploy:
restart_policy: *default-restart_policy
resources: *default-resources_policy

Die Nginx-Dienstkonfiguration verschlüsselt oder schützt die Verbindung nicht, wodurch alle über die Verbindung ausgetauschten Informationen anfällig für eine Vielzahl von Angriffen oder Schnüffeleien sind.

server {
       server_name scw-dev-blog.org;
       listen 8443;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
       ssl_prefer_server_ciphers on;
       ssl_certificate /run/secrets/nginx_cert;
       ssl_certificate_key /run/secrets/nginx_key;
       access_log /dev/stdout;
       error_log /dev/stderr;
       location / {
           proxy_pass http://wordpress:8080;
           proxy_set_header Host $http_host;
           proxy_set_header X-Forwarded-Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
   }

Oftmals ist das erste Signal, dass jemand in Ihren Transportschichten schnüffelt, wenn eine große Anzahl gestohlener Benutzerpasswörter in nachfolgenden Angriffen verwendet wird. Wenn andere Daten wie Kundeninformationen, Finanzdaten oder wichtige Firmengeheimnisse über eine unsichere Transportschicht gestohlen werden, merken Sie vielleicht nicht einmal, dass Sie kompromittiert wurden.

Und es ist nicht nur die Transportschicht zwischen Benutzern und Anwendungen, die geschützt werden muss. Am Backend kommunizieren viele Anwendungen untereinander und mit Servern, die weiter hinten in der Workflow-Kette stehen. Diese interne Kommunikation ist zwar in der Regel nicht anfällig für das Ausspähen von außen, kann aber Daten für Benutzer offenlegen, die zwar Zugang zum Netzwerk haben, aber nicht autorisiert sind, bestimmte streng geschützte oder sensible Informationen einzusehen.

Ordnungsgemäße Sicherung der Transportschichten für vollständigen Datenschutz

Der Schutz von Transportschichten wird am besten während der Erstellung von Anwendungen vorgenommen. Dieser Prozess beginnt damit, eine sichere Backend-Infrastruktur zu haben. Für Websites sollte alles über HTTPS erfolgen. Mischen Sie niemals HTTP- und HTTPS-Infrastruktur. Sie sollten Ihre Websites sogar so einstellen, dass ungesicherte HTTP-Anfragen automatisch an die HTTPS-Infrastruktur weitergeleitet werden.

In dem Beispiel von oben wäre eine korrekte Methode zum Schutz der Transportschicht folgende:

server {
       server_name scw-dev-blog.org;
       listen 8443 ssl;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
       ssl_prefer_server_ciphers on;
       ssl_certificate /run/secrets/nginx_cert;
       ssl_certificate_key /run/secrets/nginx_key;
       access_log /dev/stdout;
       error_log /dev/stderr;
       location / {
           proxy_pass http://wordpress:8080;
           proxy_set_header Host $http_host;
           proxy_set_header X-Forwarded-Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
   }

In diesem Beispiel sind alle Verbindungen mit dem Nginx-Dienst stark verschlüsselt. Der Server-Abschnitt der Nginx-Konfiguration enthält nur listen 8443 ssl , um SSL zum Schutz der Verbindungen zu erzwingen.

Um Ihre Daten vor Insider-Bedrohungen zu schützen, sollten Entwickler ein starkes Transportschicht-Verschlüsselungsprotokoll wie TLS 1.2 verwenden. Sobald Sie TLS 1.2 oder ein gleichwertiges Protokoll einsetzen, sollten schwächere Protokolle wie SSL v2 vollständig aus Ihrer Infrastruktur entfernt und automatisch von der Verwendung ausgeschlossen werden.

Und denken Sie immer daran, dass die Absicherung einer Anwendung erst dann vollständig ist, wenn sowohl die Daten im Ruhezustand als auch die Transportschichten ausreichend geschützt sind. Auf diese Weise können Sie einen vollständigen Ende-zu-Ende-Schutz für Daten sowohl intern als auch bei der Weitergabe an autorisierte externe Benutzer gewährleisten.
Besuchen Sie die Secure Code Warrior Blog-Seiten, um mehr über diese Schwachstelle zu erfahren und zu erfahren, wie Sie Ihr Unternehmen und Ihre Kunden vor den Folgen anderer Sicherheitslücken schützen können. Sie können auch eine Demo der Schulungsplattform Secure Code Warrior ausprobieren, um alle Ihre Cybersecurity-Kenntnisse zu schärfen und auf dem neuesten Stand zu halten.

Ressource anzeigen
Ressource anzeigen

Autor

Matias Madou, Ph.D.

Matias ist ein Forscher und Entwickler mit mehr als 15 Jahren praktischer Erfahrung im Bereich der Softwaresicherheit. Er hat Lösungen für Unternehmen wie Fortify Software und sein eigenes Unternehmen Sensei Security entwickelt. Im Laufe seiner Karriere hat Matias mehrere Forschungsprojekte zur Anwendungssicherheit geleitet, die zu kommerziellen Produkten geführt haben, und kann auf über 10 Patente verweisen. Wenn er nicht am Schreibtisch sitzt, ist Matias als Ausbilder für fortgeschrittene Anwendungssicherheitstrainings courses tätig und hält regelmäßig Vorträge auf globalen Konferenzen wie RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec und BruCon.

Matias hat einen Doktortitel in Computertechnik von der Universität Gent, wo er die Sicherheit von Anwendungen durch Programmverschleierung untersuchte, um die innere Funktionsweise einer Anwendung zu verbergen.

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Coders erobern die Sicherheit Infrastruktur als Code Serie: Unzureichender Schutz der Transportschicht

Veröffentlicht Jun 01, 2020
Von Matias Madou, Ph.D.

Wenn Sie ein Entwickler sind, der mehr über die Schritte erfahren möchte, die Sie unternehmen können, um mit der Bereitstellung einer sicheren Infrastruktur als Code (IaC) in Ihrem Unternehmen zu beginnen, dann sind Sie hier genau richtig. Dies ist das nächste Kapitel unserer IaC-Reihe, das Sie in die Best Practices für IaC-Sicherheit einführen soll.

Bevor wir beginnen, wie sind Sie mit der Herausforderung aus der letzten Folge zurechtgekommen? Wenn Sie die unsichere Kryptografie beherrschen, lassen Sie uns sehen, wie Sie mit dem unzureichenden Schutz der Transportschicht zurechtkommen, bevor wir uns den Details widmen:

Möchten Sie mehr erfahren und eine perfekte Punktzahl erreichen? Lesen Sie weiter:

In unserem letzten Artikel haben wir darüber gesprochen, wie wichtig eine sichere Verschlüsselung ist, um alle wichtigen oder persönlichen Daten zu schützen, die von Anwendungen und Programmen gespeichert werden. Wenn Sie über eine starke Verschlüsselung verfügen, fungiert sie als perfekte letzte Verteidigungslinie. Selbst wenn ein Angreifer in der Lage ist, diese Daten zu stehlen, sind die in diesen Dateien gespeicherten Informationen geschützt, wenn sie stark verschlüsselt sind.

Der Schutz von Daten im Ruhezustand ist jedoch nur ein Teil einer vollständigen Datenverteidigung. Wann immer gültige Benutzer auf geschützte Daten zugreifen müssen, müssen diese an sie gesendet werden. Gelegentlich werden Anwendungen auch Daten mit anderen Programmen als Teil einer Gesamtarbeitslast austauschen. Wenn die Transportschicht nicht geschützt ist, ist sie sowohl für das Ausspähen von außen als auch für unautorisierte interne Zugriffe anfällig. Daher kann ein unzureichender Schutz der Transportschicht zu ernsthaften Problemen führen.

Es ist ein weit verbreitetes Problem. Die Sicherheitsorganisation OWASP unterhält sogar eine ganze Seite über unzureichenden Transportschichtschutz.

Warum ist ein unzureichender Schutz der Transportschicht gefährlich?

Wenn Sie Ihre Transportschichten nicht ausreichend schützen, ist es für geschickte Hacker relativ einfach, Informationen, die zwischen Ihren Benutzern und Ihren Anwendungen fließen, mit Techniken wie Man-in-the-Middle-Angriffen abzufangen. Der wahrscheinlich gefährlichste Aspekt dieser Art von Schnüffelei ist, dass sie für interne Cybersicherheitsplattformen oder Scans fast völlig unsichtbar ist, da sie außerhalb Ihres Netzwerks und Ihrer Kontrolle stattfindet.

Zum Beispiel in einer Docker-Umgebung, in der ein Nginx-Dienst bereitgestellt wird:

services:
nginx:
image: localhost:5000/scw_nginx
build: ./nginx
secrets:
- nginx_cert
- nginx_key
volumes:
- type: bind
source: ./nginx/nginx.conf
target: /etc/nginx/nginx.conf
read_only: yes
ports:
- 80:8443
networks:
- frontend
deploy:
restart_policy: *default-restart_policy
resources: *default-resources_policy

Die Nginx-Dienstkonfiguration verschlüsselt oder schützt die Verbindung nicht, wodurch alle über die Verbindung ausgetauschten Informationen anfällig für eine Vielzahl von Angriffen oder Schnüffeleien sind.

server {
       server_name scw-dev-blog.org;
       listen 8443;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
       ssl_prefer_server_ciphers on;
       ssl_certificate /run/secrets/nginx_cert;
       ssl_certificate_key /run/secrets/nginx_key;
       access_log /dev/stdout;
       error_log /dev/stderr;
       location / {
           proxy_pass http://wordpress:8080;
           proxy_set_header Host $http_host;
           proxy_set_header X-Forwarded-Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
   }

Oftmals ist das erste Signal, dass jemand in Ihren Transportschichten schnüffelt, wenn eine große Anzahl gestohlener Benutzerpasswörter in nachfolgenden Angriffen verwendet wird. Wenn andere Daten wie Kundeninformationen, Finanzdaten oder wichtige Firmengeheimnisse über eine unsichere Transportschicht gestohlen werden, merken Sie vielleicht nicht einmal, dass Sie kompromittiert wurden.

Und es ist nicht nur die Transportschicht zwischen Benutzern und Anwendungen, die geschützt werden muss. Am Backend kommunizieren viele Anwendungen untereinander und mit Servern, die weiter hinten in der Workflow-Kette stehen. Diese interne Kommunikation ist zwar in der Regel nicht anfällig für das Ausspähen von außen, kann aber Daten für Benutzer offenlegen, die zwar Zugang zum Netzwerk haben, aber nicht autorisiert sind, bestimmte streng geschützte oder sensible Informationen einzusehen.

Ordnungsgemäße Sicherung der Transportschichten für vollständigen Datenschutz

Der Schutz von Transportschichten wird am besten während der Erstellung von Anwendungen vorgenommen. Dieser Prozess beginnt damit, eine sichere Backend-Infrastruktur zu haben. Für Websites sollte alles über HTTPS erfolgen. Mischen Sie niemals HTTP- und HTTPS-Infrastruktur. Sie sollten Ihre Websites sogar so einstellen, dass ungesicherte HTTP-Anfragen automatisch an die HTTPS-Infrastruktur weitergeleitet werden.

In dem Beispiel von oben wäre eine korrekte Methode zum Schutz der Transportschicht folgende:

server {
       server_name scw-dev-blog.org;
       listen 8443 ssl;
       ssl_protocols TLSv1.2 TLSv1.3;
       ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
       ssl_prefer_server_ciphers on;
       ssl_certificate /run/secrets/nginx_cert;
       ssl_certificate_key /run/secrets/nginx_key;
       access_log /dev/stdout;
       error_log /dev/stderr;
       location / {
           proxy_pass http://wordpress:8080;
           proxy_set_header Host $http_host;
           proxy_set_header X-Forwarded-Host $http_host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header X-Forwarded-Proto $scheme;
       }
   }

In diesem Beispiel sind alle Verbindungen mit dem Nginx-Dienst stark verschlüsselt. Der Server-Abschnitt der Nginx-Konfiguration enthält nur listen 8443 ssl , um SSL zum Schutz der Verbindungen zu erzwingen.

Um Ihre Daten vor Insider-Bedrohungen zu schützen, sollten Entwickler ein starkes Transportschicht-Verschlüsselungsprotokoll wie TLS 1.2 verwenden. Sobald Sie TLS 1.2 oder ein gleichwertiges Protokoll einsetzen, sollten schwächere Protokolle wie SSL v2 vollständig aus Ihrer Infrastruktur entfernt und automatisch von der Verwendung ausgeschlossen werden.

Und denken Sie immer daran, dass die Absicherung einer Anwendung erst dann vollständig ist, wenn sowohl die Daten im Ruhezustand als auch die Transportschichten ausreichend geschützt sind. Auf diese Weise können Sie einen vollständigen Ende-zu-Ende-Schutz für Daten sowohl intern als auch bei der Weitergabe an autorisierte externe Benutzer gewährleisten.
Besuchen Sie die Secure Code Warrior Blog-Seiten, um mehr über diese Schwachstelle zu erfahren und zu erfahren, wie Sie Ihr Unternehmen und Ihre Kunden vor den Folgen anderer Sicherheitslücken schützen können. Sie können auch eine Demo der Schulungsplattform Secure Code Warrior ausprobieren, um alle Ihre Cybersecurity-Kenntnisse zu schärfen und auf dem neuesten Stand zu halten.

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Senden
Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.