Coders Conquer Security: Share & Learn Series - Verwendung von Komponenten mit bekannten Sicherheitslücken

Veröffentlicht Apr 25, 2019
von Jaap Karan Singh
FALLSTUDIE

Coders Conquer Security: Share & Learn Series - Verwendung von Komponenten mit bekannten Sicherheitslücken

Veröffentlicht Apr 25, 2019
von Jaap Karan Singh
Ressource anzeigen
Ressource anzeigen

Was ist die eine Sache, die alle Anwendungen haben? Komponenten, auch bekannt als Abhängigkeiten oder Bibliotheken. Es gibt nur sehr wenig Code auf der Welt, der nicht irgendwann von anderem Code abhängt. Sie beginnen sogar mit einem Berg von Abhängigkeiten ab dem Zeitpunkt, an dem Sie die Anwendung erstellen!

Da alle Anwendungen Komponenten verwenden, von denen Sie die meisten nicht geschrieben haben, können Schwachstellen in den von Ihnen verwendeten Komponenten zu Verbindlichkeiten werden. Lassen Sie uns besprechen, was die Verwendung von Komponenten mit bekannten Schwachstellen bedeutet, wie gefährlich sie ist und wie man sie beheben kann.

Die Verwendung von Komponenten mit bekannten Schwachstellen verstehen

Jede komplexe Software hat Schwachstellen. Das liegt in der Natur der Sache. Ihre Komponenten werden also nie 100 % sicher sein. Wenn jedoch Schwachstellen in Komponenten gefunden werden, wissen Sie dann davon? Sind Sie darauf vorbereitet?

Probleme treten am häufigsten auf, wenn Komponenten über ihre Nutzungsdauer hinaus verwendet werden oder nachdem Sicherheitslücken gefunden wurden. Die meisten Komponenten und Bibliotheken veröffentlichen Patches für Sicherheitslücken zur gleichen Zeit oder früher als die Schwachstelle bekannt gegeben wird. Wenn Sicherheitslücken in Komponenten entdeckt und bekannt gegeben werden, ist es daher von größter Bedeutung, die Komponenten so schnell wie möglich zu aktualisieren. Lassen Sie anfällige Software nicht in der Produktion.

Komponenten können aus verschiedenen Quellen stammen. Manchmal kaufen Sie Produkte von Drittanbietern, die sich direkt in Ihren benutzerdefinierten Code integrieren. Diese Komponenten werden zu einem Teil Ihres Codes und arbeiten auf der gleichen Berechtigungsebene. Eine weitere Quelle sind Open-Source-Projekte, die auf Websites wie GitHub gehostet werden. Offene Quellen können gefährlich sein, da nicht alle Open-Source-Bibliotheken sorgfältig geprüft oder auf Schwachstellen untersucht worden sind.

Angreifer nutzen die Informationen über Sicherheitslücken in Komponenten zu ihrem Vorteil. Da die Schwachstellen öffentlich bekannt gegeben werden, wissen Angreifer zur gleichen Zeit wie Sie von den Schwachstellen. Angreifer verfügen auch über Techniken, mit denen sie herausfinden können, welche Komponenten Sie verwenden. Sobald sie diese Informationen kennen, wissen sie, wie sie Ihre Anwendung angreifen können, wenn sie nicht gepatcht ist.

Wissen, warum anfällige Komponenten gefährlich sind

Wenn Sie nach einem Beweis dafür suchen, wie gefährlich die Verwendung von Komponenten mit bekannten Schwachstellen ist, suchen Sie nicht weiter als die Equifax-Verletzung von 2017.

Im Juli 2017 entdeckte Equifax, eine US-amerikanische Kreditauskunftei, eine massive Datenpanne, durch die die persönlichen Daten von über 147 Millionen Menschen bekannt wurden. Der Umfang und die Auswirkungen dieser Datenpanne sind beispiellos. Kürzlich wurden Nachrichten über die laxen Sicherheitspraktiken von Equifax bekannt.

Eine dieser laxen Praktiken war das Patch-Management. Equifax hatte keine gute Patch-Management-Praxis, was bedeutete, dass ihre Komponenten eine ganze Weile nicht gepatcht wurden. Dies war die direkte Ursache für die Sicherheitsverletzung.

Die Website von Equifax verwendete das Apache Struts-Webframework. Einige Monate bevor sich die Angreifer in das Netzwerk hackten, wurde eine Schwachstelle im Struts-Framework gefunden, Apache Struts CVE-2017-5638. Equifax hat die Sicherheitslücke jedoch nicht gepatcht. Die Angreifer nutzten diese Schwachstelle, um sich Zugang zum Netzwerk von Equifax zu verschaffen. Von dort aus verschafften sie sich Zugang zu einer Fundgrube persönlicher Daten.

Viele Websites basieren auf Web-Frameworks, die nicht vom Unternehmen selbst geschrieben wurden. Dies ist gängige Praxis, da es ein zu großes Unterfangen wäre, alle notwendigen Funktionen von Grund auf neu einzubauen. Die starke Abhängigkeit von einem Framework kann Sie jedoch für Sicherheitslücken öffnen. Werden Sie nicht das nächste Equifax.

So schützen Sie sich vor gefährdeten Komponenten

Es gibt kein Patentrezept zum Schutz vor der Verwendung anfälliger Komponenten. Es gibt jedoch Richtlinien und Kontrollen, mit denen Sie das Risiko verringern können, dass anfällige Komponenten zur Kompromittierung Ihrer Systeme verwendet werden.

Sie müssen wissen, welche Komponenten und welche Version der einzelnen Komponenten Sie zum Erstellen Ihrer Anwendungen verwenden. Tools zur Verwaltung von Abhängigkeiten, wie z. B. Dependency Check von OWASP, helfen Ihnen, die von Ihnen verwendeten Abhängigkeiten in den Griff zu bekommen. Dependency Check sagt Ihnen auch, ob eine dieser Komponenten eine öffentlich bekannte Schwachstelle aufweist.

Eine Patch-Management-Methodik ist ebenfalls unerlässlich. Wenn Schwachstellen entdeckt werden, muss ein System vorhanden sein, mit dem die Patches reibungslos heruntergeladen, getestet und für die Produktion freigegeben werden können. Wenn Sie Ihre Software gepatcht halten, verhindern Sie, dass Monate alte Schwachstellen von Angreifern ausgenutzt werden.

Schließlich sollten Sie über Richtlinien verfügen, die die Verwendung von Open-Source- und Drittanbieter-Komponenten regeln. Entwickler mögen keinen bürokratischen Aufwand, und das ist auch verständlich. Es muss jedoch einen Prüfprozess für Code geben, der nicht von Ihrem Unternehmen geschrieben wurde. Er muss nicht schwergewichtig sein, ist aber ein Muss, um zu verhindern, dass unbekannte Komponenten verwendet werden. Zumindest muss ein Inventar der verwendeten Komponenten aktuell gehalten werden.

Lassen Sie sich nicht von der Drittanbieter-Wanze anstecken

Komponenten werden Schwachstellen haben. Ihre Geschäftsanwendungen werden Komponenten verwenden, ob von einem Anbieter oder aus einer Open-Source-Bibliothek. Das bedeutet nicht, dass Ihr Unternehmen anfällig für Angriffe sein muss.

Auch wenn Angreifer zur gleichen Zeit wie Sie wissen, welche Schwachstellen existieren, werden Patches in der Regel zur gleichen Zeit wie die öffentlichen Ankündigungen zur Verfügung gestellt. Informieren Sie sich also unbedingt darüber, was Ihre Anwendung verwendet. Wissen Sie, was verwundbar ist. Halten Sie Ihre Komponenten gepatcht!

Sind Sie bereit, einige verwundbare Komponenten zu entdecken (und zu besiegen)? Begeben Sie sich in die Arena und nehmen Sie den Kampf auf: [Hier starten]

Ressource anzeigen
Ressource anzeigen

Autor

Jaap Karan Singh

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 Conquer Security: Share & Learn Series - Verwendung von Komponenten mit bekannten Sicherheitslücken

Veröffentlicht Apr 25, 2019
Von Jaap Karan Singh

Was ist die eine Sache, die alle Anwendungen haben? Komponenten, auch bekannt als Abhängigkeiten oder Bibliotheken. Es gibt nur sehr wenig Code auf der Welt, der nicht irgendwann von anderem Code abhängt. Sie beginnen sogar mit einem Berg von Abhängigkeiten ab dem Zeitpunkt, an dem Sie die Anwendung erstellen!

Da alle Anwendungen Komponenten verwenden, von denen Sie die meisten nicht geschrieben haben, können Schwachstellen in den von Ihnen verwendeten Komponenten zu Verbindlichkeiten werden. Lassen Sie uns besprechen, was die Verwendung von Komponenten mit bekannten Schwachstellen bedeutet, wie gefährlich sie ist und wie man sie beheben kann.

Die Verwendung von Komponenten mit bekannten Schwachstellen verstehen

Jede komplexe Software hat Schwachstellen. Das liegt in der Natur der Sache. Ihre Komponenten werden also nie 100 % sicher sein. Wenn jedoch Schwachstellen in Komponenten gefunden werden, wissen Sie dann davon? Sind Sie darauf vorbereitet?

Probleme treten am häufigsten auf, wenn Komponenten über ihre Nutzungsdauer hinaus verwendet werden oder nachdem Sicherheitslücken gefunden wurden. Die meisten Komponenten und Bibliotheken veröffentlichen Patches für Sicherheitslücken zur gleichen Zeit oder früher als die Schwachstelle bekannt gegeben wird. Wenn Sicherheitslücken in Komponenten entdeckt und bekannt gegeben werden, ist es daher von größter Bedeutung, die Komponenten so schnell wie möglich zu aktualisieren. Lassen Sie anfällige Software nicht in der Produktion.

Komponenten können aus verschiedenen Quellen stammen. Manchmal kaufen Sie Produkte von Drittanbietern, die sich direkt in Ihren benutzerdefinierten Code integrieren. Diese Komponenten werden zu einem Teil Ihres Codes und arbeiten auf der gleichen Berechtigungsebene. Eine weitere Quelle sind Open-Source-Projekte, die auf Websites wie GitHub gehostet werden. Offene Quellen können gefährlich sein, da nicht alle Open-Source-Bibliotheken sorgfältig geprüft oder auf Schwachstellen untersucht worden sind.

Angreifer nutzen die Informationen über Sicherheitslücken in Komponenten zu ihrem Vorteil. Da die Schwachstellen öffentlich bekannt gegeben werden, wissen Angreifer zur gleichen Zeit wie Sie von den Schwachstellen. Angreifer verfügen auch über Techniken, mit denen sie herausfinden können, welche Komponenten Sie verwenden. Sobald sie diese Informationen kennen, wissen sie, wie sie Ihre Anwendung angreifen können, wenn sie nicht gepatcht ist.

Wissen, warum anfällige Komponenten gefährlich sind

Wenn Sie nach einem Beweis dafür suchen, wie gefährlich die Verwendung von Komponenten mit bekannten Schwachstellen ist, suchen Sie nicht weiter als die Equifax-Verletzung von 2017.

Im Juli 2017 entdeckte Equifax, eine US-amerikanische Kreditauskunftei, eine massive Datenpanne, durch die die persönlichen Daten von über 147 Millionen Menschen bekannt wurden. Der Umfang und die Auswirkungen dieser Datenpanne sind beispiellos. Kürzlich wurden Nachrichten über die laxen Sicherheitspraktiken von Equifax bekannt.

Eine dieser laxen Praktiken war das Patch-Management. Equifax hatte keine gute Patch-Management-Praxis, was bedeutete, dass ihre Komponenten eine ganze Weile nicht gepatcht wurden. Dies war die direkte Ursache für die Sicherheitsverletzung.

Die Website von Equifax verwendete das Apache Struts-Webframework. Einige Monate bevor sich die Angreifer in das Netzwerk hackten, wurde eine Schwachstelle im Struts-Framework gefunden, Apache Struts CVE-2017-5638. Equifax hat die Sicherheitslücke jedoch nicht gepatcht. Die Angreifer nutzten diese Schwachstelle, um sich Zugang zum Netzwerk von Equifax zu verschaffen. Von dort aus verschafften sie sich Zugang zu einer Fundgrube persönlicher Daten.

Viele Websites basieren auf Web-Frameworks, die nicht vom Unternehmen selbst geschrieben wurden. Dies ist gängige Praxis, da es ein zu großes Unterfangen wäre, alle notwendigen Funktionen von Grund auf neu einzubauen. Die starke Abhängigkeit von einem Framework kann Sie jedoch für Sicherheitslücken öffnen. Werden Sie nicht das nächste Equifax.

So schützen Sie sich vor gefährdeten Komponenten

Es gibt kein Patentrezept zum Schutz vor der Verwendung anfälliger Komponenten. Es gibt jedoch Richtlinien und Kontrollen, mit denen Sie das Risiko verringern können, dass anfällige Komponenten zur Kompromittierung Ihrer Systeme verwendet werden.

Sie müssen wissen, welche Komponenten und welche Version der einzelnen Komponenten Sie zum Erstellen Ihrer Anwendungen verwenden. Tools zur Verwaltung von Abhängigkeiten, wie z. B. Dependency Check von OWASP, helfen Ihnen, die von Ihnen verwendeten Abhängigkeiten in den Griff zu bekommen. Dependency Check sagt Ihnen auch, ob eine dieser Komponenten eine öffentlich bekannte Schwachstelle aufweist.

Eine Patch-Management-Methodik ist ebenfalls unerlässlich. Wenn Schwachstellen entdeckt werden, muss ein System vorhanden sein, mit dem die Patches reibungslos heruntergeladen, getestet und für die Produktion freigegeben werden können. Wenn Sie Ihre Software gepatcht halten, verhindern Sie, dass Monate alte Schwachstellen von Angreifern ausgenutzt werden.

Schließlich sollten Sie über Richtlinien verfügen, die die Verwendung von Open-Source- und Drittanbieter-Komponenten regeln. Entwickler mögen keinen bürokratischen Aufwand, und das ist auch verständlich. Es muss jedoch einen Prüfprozess für Code geben, der nicht von Ihrem Unternehmen geschrieben wurde. Er muss nicht schwergewichtig sein, ist aber ein Muss, um zu verhindern, dass unbekannte Komponenten verwendet werden. Zumindest muss ein Inventar der verwendeten Komponenten aktuell gehalten werden.

Lassen Sie sich nicht von der Drittanbieter-Wanze anstecken

Komponenten werden Schwachstellen haben. Ihre Geschäftsanwendungen werden Komponenten verwenden, ob von einem Anbieter oder aus einer Open-Source-Bibliothek. Das bedeutet nicht, dass Ihr Unternehmen anfällig für Angriffe sein muss.

Auch wenn Angreifer zur gleichen Zeit wie Sie wissen, welche Schwachstellen existieren, werden Patches in der Regel zur gleichen Zeit wie die öffentlichen Ankündigungen zur Verfügung gestellt. Informieren Sie sich also unbedingt darüber, was Ihre Anwendung verwendet. Wissen Sie, was verwundbar ist. Halten Sie Ihre Komponenten gepatcht!

Sind Sie bereit, einige verwundbare Komponenten zu entdecken (und zu besiegen)? Begeben Sie sich in die Arena und nehmen Sie den Kampf auf: [Hier starten]

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.