Eine sehr häufig auftretende Sicherheitslücke in Webanwendungen entsteht durch den Einsatz unsicherer Libraries. Wenn auch Ihr in Euren Webanwendungen fremde Libraries einsetzt, dann solltet ihr jetzt ganz genau zuhören!

Platz 9 der OWASP Top 10 nennt sich “Nutzung von Komponenten mit bekannten Schwachstellen”. Hier geht es um den Einsatz von 3rd-Party-Libraries, die bekannte Schwachstellen enthalten, und dadurch die Sicherheit unserer Anwendung gefährden. Ich werden Euch zeigen, die man das entdecken und vermeiden kann.

Problemstellung

Bei vielen Anwendungen besteht die Gefahr, dass kein Überblick besteht über die Libraries, die man im Lauf der Zeit hinzugefügt hat und verwendet. Manchmal werden fremde Komponenten sogar selbst angepasst und weiterentwickelt, so dass man diese auch gar nicht mehr so einfach auf eine neuere Version aktualisieren kann. Man sollte immer Komponenten aus vertrauenswürdigen Quellen einsetzen, die regelmäßig gepflegt und aktualisiert werden. Wichtig ist es dann natürlich, dass man sich immer die aktuellsten Sicherheitspatches besorgt, damit die Fixes für bekannte Schwachstellen auch in der eigenen Anwendung ankommen.

Das große Problem bei populären 3rd-Party-Libraries ist, dass deren Sicherheits-Schwachstellen von sehr vielen Analysten sehr gründlich untersucht werden. Für Angreifer lohnt sich das, da sie dann auf einen Schlag Hintertüren für tausende von Anwendungen bekommen. Nämlich genau die Anwendungen, die diese verwundbaren Libraries einsetzen. Für solche Schwachstellen werden dann von Hackern Exploits geschrieben und veröffentlicht. Exploits sind Programme, die diese Schwachstellen ausnützen und vollautomatisch ins System eindringen.

Die große Gefahr bei einem Exploit ist, dass sie jeder ohne tiefere Fachkenntnis verwenden kann. Dadurch kann jeder Möchtegern-Hacker und jedes Skript-Kiddie automatisiert diese Schwachstellen ausnutzen. Sorgt also dafür, dass ihr nicht zu den Opfern gehört, indem ihr Euch um Eure 3rd-Party-Libraries kümmert und die Übersicht behaltet. Wie man das macht, zeige ich Euch jetzt.

Prävention

Ich verrate Euch einige Präventionsmaßnahmen aus unserer Secure Coding Schulung:

Übersicht der Komponenten behalten

Nur durch eine vollständige Übersicht aller Komponenten und vor allem ihrer verwendeten Versionen, habe ich die Möglichkeit, überhaupt zu erkennen, ob ich mir potentielle Schwachstellen einfange. Durch transitive Abhängigkeiten haben die Libraries ihrerseits auch wieder Libraries, auf denen sie basieren und deren Schwachstellen sie vererbt bekommen. In Java kann man eine vollständige Übersicht bekommen, in dem man mit “Maven Site” sich die Baumstruktur der verwendeten Libraries generieren lässt. Die daraus resultierende Übersicht sieht folgendermaßen aus.

Tools einsetzen, die Komponenten mit bekannten Schwachstellen erkennen

Für Jar-Files kann das kostenlose Tool “OWASP Depencendy Check” eingesetzt werden. Das wird über Maven eingebunden und prüft alle verwendeten Libraries. Es checkt dabei die Einträge in einer Schwachstellen-Datenbank, in der die bekannten Schwachstellen katalogisiert und bewertet sind. OWASP Dependency Check liefert dann eine detailierte Liste mit den Findings samt Informationen zu den Schwachstellen und unter welchen Bedingungen diese tatsächlich angreifbar sind.

Die Integration von OWASP Dependency Check am Beispiel von Maven , indem man im pom.xml das Plugin integriert. 

Auf der Kommandozeile kann man sich mit „mvn site” den Report erstellen lassen, der dann unter target/site/dependency-check-report.html abgelegt wird. Der Report listet dann die verwundbaren Libraries auf, sowie deren Kritikalität und weiteren Infos.

Für eingesezte JavaScript-Libraries gibt es das kostenlose Tool Retire.js, das ganz ähnlich funktioniert. Eingebunden wird es am besten über ein Browser-Plugin. Im Browser wird dann darauf hingewiesen, dass die Seite bekannte verwundbare JavaScript-Libraries einsetzt.

Fazit

Beim Einsatz von Softwarekomponenten für Webapplikationen gilt: „So viel wie nötig, so wenig wie möglich“ .

Wichtige Aspekte für die Sicherheit der eigenen Anwendung sind:

  • Übersicht über die tatsächlich eingesetzten Komponenten behalten
  • die Klärung von Zuständigkeiten und Abläufen, falls ein Update der Komponenten nötig ist
  • Um den Einsatz unsicherer Komponenten festzustellen, bieten sich ein Audit des Quellcodes der Webapplikation durch Sicherheitsexperten an. Tools wie OWASP Dependency Check und Retire.js können hier aber auch für weniger Erfahrene große Dienste leisten.

Hier die Zusammenfassung dieses Artikels als Video: