¿Tu web está en riesgo? Descubre por qué las librerías obsoletas son una bomba de tiempo

Ist deine Website in Gefahr? Finde heraus, warum veraltete Bibliotheken eine Zeitbombe sind.

Celia Catalán


 Verwundbare und veraltete Komponenten

Einführung

Moderne Webanwendungen folgen Architekturen mit mehreren Softwarekomponenten wie Datenbanken, APIs (Application Programming Interface), Bibliotheken, Frameworks, Betriebssystemen usw. Das Management und die Inventarisierung der Softwarekomponenten stellen eine grundlegende und notwendige Aufgabe für Organisationen dar, angesichts ihrer Bedeutung für die Gewährleistung der Sicherheit, die Aufrechterhaltung der Kompatibilität, die Optimierung der Leistung, die Reduzierung operativer Risiken und die Sicherstellung der Einhaltung geltender Vorschriften und Lizenzen wie ISO oder GDPR. 

"Als Folge der mangelnden Wartung der Softwarekomponenten bestehen Risiken wie die Verwundbarkeit von verwundbaren und veralteten Komponenten, die eine der Hauptsicherheitsbedrohungen darstellt, die im OWASP Top Ten von 2021 identifiziert wurden, eingestuft auf dem sechsten Platz." 

Verwundbare Komponenten vs Veraltete Komponenten

Die verwundbaren Komponenten sind diejenigen, die über Sicherheitsanfälligkeiten verfügen, die Angreifer ausnutzen können, um auf sensible Informationen zuzugreifen oder Zugang zum System zu erhalten. 

Auf der anderen Seite beziehen sich die veralteten Komponenten auf die Verwendung von Softwarekomponenten, die keine Sicherheitsupdates mehr erhalten und daher keine Sicherheitspatches zur Behebung bestehender Schwachstellen haben.

Auswirkungen

Einige der Schwachstellen, die die anfälligen oder veralteten Komponenten betreffen und von böswilligen Benutzern ausgenutzt werden können, sind die folgenden:

  • Code-Injection: Sicherheitsanfälligkeit, die es einem Angreifer ermöglicht, schädlichen Code in eine Anwendung einzufügen (in der Regel über nicht validierte oder schlecht bereinigte Benutzereingaben), der von der Anwendung ausgeführt wird und es dem Angreifer ermöglicht, nicht autorisierte Aktionen durchzuführen. 
  • Bufferüberlauf: Bufferüberläufe treten auf, wenn die zugewiesene Speicherkapazität überschritten wird, wodurch Angreifer Daten im benachbarten Speicher ändern und beschädigen können. Dies kann zur Ausführung von schädlichem Code führen, der Systemabstürze verursacht, Sicherheitskontrollen verändert oder eine Erhöhung der Berechtigungen ermöglicht.
  • Cross Site Scripting: Cross-Site Scripting ist ein kritisches Risiko für moderne Webanwendungen, da es Angreifern ermöglicht, bösartige Skripte in vertrauenswürdige Seiten einzufügen. Ein gängiger Ansatz ist das gespeicherte XSS, bei dem Angreifer Skripte in anfällige Komponenten von Drittanbietern einfügen, indem sie die fehlenden Updates und Sicherheitsüberprüfungen ausnutzen, was zu anhaltenden Bedrohungen führen kann, die mehrere Benutzer und Systeme betreffen. 

Verwundbare und veraltete Komponenten identifizieren

Der erste Schritt zur Erkennung von verwundbaren Komponenten besteht darin, die vorhandenen Softwareprodukte in der Anwendung oder im System sowie deren Versionen zu identifizieren. Die Identifizierung dieser Versionen kann verschiedene Ansätze, Werkzeuge und Techniken erfordern, wie die im Folgenden beschriebenen:

  • Quellcode: Der Code ist das Rückgrat jeder Software und wenn er Sicherheitsfehler enthält, kann er ausgenutzt werden, um die Integrität, Vertraulichkeit und Verfügbarkeit eines Systems zu gefährden. Sicherheitsanfälligkeiten im Code entstehen häufig durch schlechte Programmierpraktiken oder durch die Integration veralteter Drittanbieterbibliotheken. 

Die statische Codeanalyse (SAST) ist eine Technik, die es ermöglicht, den Quellcode einer Anwendung zu überprüfen, ohne ihn auszuführen, mit dem Ziel, Muster zu identifizieren, die Sicherheitsanfälligkeiten darstellen. Diese Analyse erfolgt durch automatisierte Werkzeuge, die schlechte Praktiken, Verstöße gegen Standards für sichere Programmierung und die Verwendung kritischer Funktionen erkennen. 


  • Darstellung von Versionen im Frontend: Es ist häufig anzutreffen, dass in Webanwendungen Versionen der in der öffentlichen Benutzeroberfläche verwendeten Komponenten vorhanden sind.


  • HTTP-Header: Einige Webanwendungen und Server geben die Versionen der Software in den HTTP-Headern der Antworten an. Diese Header können Details wie den verwendeten Webserver (Apache, Nginx, IIS), Versionen von PHP, Python, ASP.NET oder sogar Informationen über Frameworks wie zum Beispiel Django oder Ruby on Rails enthalten.
Im Folgenden sind einige nützliche Kopfzeilen aufgeführt:
  • Server: Gibt den Typ und die Version des Webservers an.
    • Beispiel: Server: Apache/2.4.49 (Ubuntu)
  • X-Powered-By: Gibt die verwendete Programmiersprache oder das verwendete Framework an.
    • Beispiel: X-Powered-By: PHP/7.4.3 oder X-Powered-By: ASP.NET
  • Via: Kann Details zu verwendeten Proxys oder Gateways offenbaren.
    • Beispiel: Via: 1.1 vegur
  • X-AspNet-Version: Anwendungs-spezifisch für ASP.NET.
    • Beispiel: X-AspNet-Version: 4.0.30319
  • X-Drupal-Cache: In Drupal-basierten Systemen.
    • Beispiel: X-Drupal-Cache: HIT

  • Fehler provozieren: Die Praxis, ein System, eine Anwendung oder Software Situationen auszusetzen, die unerwartete Verhaltensweisen, Fehler oder ungewöhnliche Antworten auslösen, kann einige der verwendeten Technologien offenbaren.
Diese Technik ist im Bereich der Cybersicherheit als Fuzzing oder Fuzz-Testing bekannt und hat zum Ziel, Schwachstellen oder Fehler in der Robustheit der Software zu erkennen, indem zufällige, fehlerhafte oder anomale Eingaben eingeführt werden, um Fehler zu provozieren und die Antworten zu analysieren.


  • Banner Grabbing: Banner Grabbing ist eine weit verbreitete Technik, um Informationen über die Versionen von Diensten zu erhalten, die auf einem Server ausgeführt werden. Viele Dienste, wie Webserver, FTP, SSH oder SMTP, geben beim Verbinden Banner zurück, die den Namen der Software, ihre Version und manchmal zusätzliche Informationen enthalten.
  • Tools zur Schwachstellenscannung und Dienstenumerierung: Schwachstellenscan-Tools identifizieren häufig Versionen von Komponenten basierend auf den Antworten, die Server oder Dienste auf bestimmte Anfragen oder Merkmale geben.


  • Interaktion mit APIs: Viele Webanwendungen stellen APIs zur Verfügung, die Details über die Software, einschließlich Versionen, bereitstellen. Einige APIs geben diese Informationen in HTTP-Headern oder JSON-Antworten zurück.

Einige interessante Werkzeuge

Es gibt eine Vielzahl nützlicher Werkzeuge, die die Identifizierung von Versionen in einer Webanwendung erleichtern. Einige davon sind die folgenden:

Nmap

Eines der beliebtesten Werkzeuge zum Scannen von Netzwerken und Diensten. Seine NSE-Skripte (Nmap Scripting Engine) ermöglichen es, spezifische Versionen von Servern und Anwendungen zu erkennen. 
Um diese Skripte nutzen zu können, wird die Option --script verwendet. Einige interessante Skripte zur Identifizierung von Softwareversionen sind http-enum und http-server-header.

Nessus / OpenVAS

Diese Tools führen fortgeschrittene Schwachstellenscans durch, identifizieren Dienste, Versionen und bekannte Schwachstellen (CVE). 
Die größte Einschränkung des Tools Nessus, obwohl es vollständiger und benutzerfreundlicher als OpenVAS ist, ist die kommerzielle Nutzung mit hohen Lizenzkosten. Daher ist OpenVAS als Open-Source-Alternative verfügbar.

Niemand

Nikto ist ein Open-Source-Tool, das entwickelt wurde, um Sicherheitsscans auf Webservern durchzuführen. Es wird häufig bei Audits und Penetrationstests eingesetzt, um häufige Schwachstellen, falsche Konfigurationen, veraltete Softwareversionen und andere Sicherheitsprobleme auf Webservern zu identifizieren.
Die Datenbank wird regelmäßig aktualisiert, um neue Schwachstellen und unsichere Konfigurationen einzuschließen.

WhatWeb

WhatWeb ist ein in Kali Linux enthaltenes Erkennungswerkzeug, das entwickelt wurde, um Technologien zu identifizieren, die auf Websites verwendet werden. WhatWeb untersucht Websites und extrahiert Details zu Webservern, Frameworks, Content-Management-Systemen (CMS), Programmiersprachen, Bibliotheken, Konfigurationen und mehr.

Wappalyzer

Ein Werkzeug, das sich als sehr praktisch erweist, um einen schnellen Überblick darüber zu erhalten, welche Technologien in einer Webanwendung eingesetzt werden, ist Wappalyzer. Es kann als Erweiterung für verschiedene Browser wie Chrome, Firefox oder Edge installiert werden und kann die Versionen der beteiligten Technologien anzeigen.

Ruhestand.js

Retire.js ist ein spezialisiertes Werkzeug zur Identifizierung von Sicherheitsanfälligkeiten in veralteten oder anfälligen JavaScript-Bibliotheken und/oder Node.JS-Modulen.
Außerdem wurde dieses Tool direkt mit BurpSuite und ZAP (Zed Attack Proxy) über ein Plugin integriert, dessen Link ich euch im Folgenden anhänge: https://github.com/h3xstream/burp-retire-js

Sobald die Version identifiziert ist...
Sobald die Version durch eine der zuvor genannten Methoden identifiziert wurde, ist es notwendig, die extrahierten Daten mit Datenbanken wie CVE Details, Exploit DB oder https://www.metasploit.com/ zu vergleichen, um nach Schwachstellen zu suchen, die mit den spezifischen Versionen verbunden sind.


Minderung/Remedierung

  • Ein Inventar der verwendeten Technologien führen (Bibliotheken, Frameworks, Softwarekomponenten, die in der Anwendung oder im System verwendet werden, einschließlich Details wie die spezifischen Versionen jeder Komponente und deren Herkunft, was es ermöglicht, schnell diejenigen zu identifizieren, die veraltet oder anfällig sind. 
  • Aktuell bleiben: Es ist entscheidend, über Sicherheitsupdates und neu entdeckte Schwachstellen, die die verwendeten Softwarekomponenten betreffen, informiert zu sein. Dies beinhaltet das Abonnieren von Sicherheitsbulletins, das Verfolgen von Datenbanken mit bekannten Schwachstellen (wie CVE), die Verwendung automatischer Werkzeuge zur Erkennung von veralteten und anfälligen Versionen und das aktive Überwachen von Warnungen der Anbieter der eingesetzten Technologien. Entwickler sollten gute Sicherheitspraktiken in den entwickelten Anwendungen beibehalten, um zukünftige Probleme zu vermeiden.
  • Gute Entwicklungspraktiken. Es wird empfohlen, beim Entwickeln von Webanwendungen die Verwendung von Bibliotheken, Frameworks oder Tools zu vermeiden, die keine regelmäßigen Updates erhalten oder die keine aktive Community haben, die auf Sicherheitsanfälligkeiten und Verbesserungsbedürfnisse reagieren kann.
Alba Vara, Pentester bei Zerolynx
Zurück zum Blog

Hinterlasse einen Kommentar

Bitte beachten Sie, dass Kommentare vor der Veröffentlichung genehmigt werden müssen.