Anfällige und veraltete Komponenten: Erläuterung, Beispiele, Prävention

Im modernen digitalen Zeitalter ist Technologie ein fester Bestandteil unseres täglichen Lebens. Allerdings birgt die Nutzung von Webanwendungen auch ernsthafte Gefahren in sich. Software-Risiken können aus verschiedenen Quellen stammen, aber eine der häufigsten ist die Verwendung anfälliger Open-Source- oder Drittanbieter-Komponenten.

Obwohl öffentliche Open-Source-Bibliotheken, -Pakete und -Frameworks den modernen Softwareentwicklungsprozess verbessert haben, haben die Sicherheitslücken in den Komponenten Tür und Tor für potenziell bösartige Aktivitäten geöffnet. Jeden Tag finden Hacker neue verheerende Methoden, um Schwachstellen zum eigenen Vorteil auszunutzen.

Wenn Softwareentwickler nicht unterstützte und veraltete Komponenten verwenden, wird die Software anfällig für Sicherheitslücken. Sobald Sie eine Schwachstelle entdecken, haben die Kriminellen sie möglicherweise bereits entdeckt – und arbeiten aktiv daran, die Schwachstelle auszunutzen. Wie können Hacker diese Schwachstelle ausnutzen, werden Sie sich fragen? Genau das werden wir hier unter anderem besprechen. Also, fangen wir an!

Was sind anfällige und veraltete Komponenten?

Wenn eine Softwarekomponente nicht mehr gewartet wird, gilt sie als anfällig und veraltet und kann ernsthafte Sicherheitsprobleme verursachen. Egal, ob Sie sich mit App-Design oder Web-Entwicklung befassen, Sie können 100% sicheren Code schreiben und trotzdem Schwachstellen haben. Es stellt sich die Frage: Wie ist das möglich? Die Antwort ist einfach: durch die Verwendung von anfälligen Komponenten.

Wenn die Komponenten, die Sie bei der Softwareerstellung verwenden, veraltet sind, nicht gepatcht wurden oder schwerwiegende Schwachstellen enthalten, werden Ihr Unternehmen, Ihre Kunden und die Benutzer der Anwendung zu leichten Zielen für Hacker. Bedrohungsakteure können diese Schwachstellen ausnutzen, um den Server zu übernehmen, Zugriff auf die Anwendungsdaten zu erhalten oder das System vollständig zu kompromittieren. Da sich Softwarelösungen ändern und weiterentwickeln, müssen Entwicklerteams dringend Komponenten aktualisieren oder ersetzen, um eine mögliche Sicherheitsverletzung zu verhindern.

Im Jahr 2017 stand die Verwendung von Komponenten mit bekannten Schwachstellen auf Platz neun der OWASP-Liste der zehn kritischsten Sicherheitsrisiken für Webanwendungen. In der aktuellen OWASP-Top-10-Liste rückte dieses Thema von Platz 9 auf Platz 6 vor.

Anfällige und veraltete Komponenten Angriffe

Aufgrund der wachsenden Zahl von Sicherheitslücken besteht ein hohes Risiko, unbeabsichtigt nicht unterstützte oder veraltete Komponenten zu verwenden. Hier finden Sie einige praktische Beispiele dafür, wie die Verwendung nicht unterstützter Komponenten die Sicherheit Ihres Codes beeinflussen kann. Bereit zum Entdecken? Los geht’s!

Veraltete oder anfällige Abhängigkeiten

Die Wiederverwendung von unbekannten oder nicht vertrauenswürdigen Komponenten kann zu Sicherheitslücken führen. OWASP WebGoat verwendet beispielsweise eine anfällige Version der Open-Source-Bibliothek Xstream, um ein XML-Dokument in ein Java-Objekt zu konvertieren.

Achten Sie auf die Version der Bibliothek – 1.4.5. Sie leidet unter einer hochgradig gefährlichen Deserialisierungsschwachstelle, die Remote Code Execution (RCE) ermöglicht – einer der schwersten möglichen Angriffe.

Anfällige und veraltete Komponenten: Erläuterung, Beispiele, Prävention

Der folgende Code erstellt die Datei /tmp/here auf dem Docker-Container:

<sorted-set>
<string>foo</string>
  <dynamic-proxy>
    <interface>java.lang.Comparable</interface>
    <handler class='java.beans.EventHandler'>
      <target class='java.lang.ProcessBuilder'>
        <command>
          <string>touch</string><string>/tmp/here</string>
        </command>
      </target>
      <action>start</action>
    </handler>
  </dynamic-proxy>
</sorted-set>

 

Bösartige Komponenten und Typosquatting

Es gibt Fälle, in denen Softwareentwickler unbeabsichtigt eine bösartige Komponente verwenden, die der rechtmäßigen Komponente ähnelt. Dies wird als Typosquatting bezeichnet – die absichtliche Falscheingabe eines bekannten Namens zu böswilligen Zwecken. Es handelt sich um eine weit verbreitete Technik, mit der Bedrohungsakteure ahnungslose Entwickler zum Herunterladen der bösartigen Komponente verleiten wollen.

Beispiele hierfür sind “maratlib”, “maratlib1”, “matplatlib-plus”, “mllearnlib”, “mplatlib” und “learninglib” in PyPI (falsche Schreibweise der legitimen Python-Plottersoftware matplotlib). Die anderen bösartigen Komponenten verwendeten das Paket “maratlib” als direkte Abhängigkeit. Insgesamt haben die bösartigen Pakete fast 5.000 Downloads erreicht.

Hier ist der Fall der oben genannten “learninglib”:

Anfällige und veraltete Komponenten: Erläuterung, Beispiele, Prävention

Böswillige Betreiber haben es immer wieder auf Online-Code-Repositories wie PyPI (Python), NPM (JavaScript) und RubyGems abgesehen und stellen eine große Bedrohung für die Cybersicherheit dar, da Entwickler den bösartigen Code unbemerkt in ihre Projekte einschleusen können. Mit Typosquatting-Techniken können die Bösewichte überzeugende Pakete erstellen, mit denen sie selbst erfahrene Entwickler austricksen können.

Beispiele für Schwachstellen in der realen Welt

Anfällige und veraltete Komponenten haben zu schwerwiegenden Folgen für App-Benutzer und zu schwerwiegenden Schäden für den Ruf von Unternehmen geführt. Diese Schwachstelle ist eine weit geöffnete Tür, durch die Eindringlinge leicht in das System eindringen und Zugang zu sensiblen Daten erhalten können. Hier sind Beispiele für die verheerendsten Sicherheitsverletzungen, die durch die OWASP A6 verursacht wurden:

Panama Papers

Die Panama Papers gelten als die größte Datenpanne aller Zeiten, was die schiere Menge der durchgesickerten Daten angeht. Hacker stahlen die Dateien aus den Computersystemen der panamaischen Anwaltskanzlei und des Unternehmensdienstleisters Mossack Fonseca. Im Jahr 2016 war Mossack Fonseca das viertgrößte Unternehmen der Welt, das Offshore-Finanzdienstleistungen anbietet.

Das Leck von mehr als 11 Millionen vertraulichen Dokumenten, darunter 2,6 Terabyte an Informationen über hochrangige Politiker und Persönlichkeiten des öffentlichen Lebens aus mehr als 50 Ländern, wurde durch die Ausnutzung veralteter, ungepatchter Versionen von Drupal CMS und WordPress verursacht.

Ubuntu-Forums

Im Jahr 2016 hackten die Täter eine Datenbank der Ubuntu-Foren-Website. Die Bösewichte nutzten die SQL-Injection-Schwachstelle im Forum Runner-Add-on für vBulletin aus, die noch nicht gepatcht worden war. Unter Ausnutzung der Schwachstelle griffen sie auf die “Benutzer”-Tabelle des Forums zu, die Benutzernamen, E-Mail-Adressen und Internetprotokolladressen von 2 Millionen registrierten Benutzern enthält. Glücklicherweise haben die böswilligen Betreiber keine gültigen Benutzerpasswörter erhalten.

Das IT-Team von Canonical hat die ModSecurity Web Application Firewall (WAF) installiert, um ähnliche Cyberangriffe zu verhindern, und hat die Sicherheitslücken in den vBulletin-Komponenten auf den neuesten Patch-Stand gebracht.

Equifax-Datenverletzung

Die Datenpanne bei Equifax ist einer der bekanntesten Hackerangriffe im Zusammenhang mit der Verwendung veralteter und anfälliger Komponenten. Im Jahr 2017 nutzten Angreifer Sicherheitslücken in den Systemen von Equifax aus. Sie erbeuteten die persönlichen Daten von 148 Millionen amerikanischen Verbrauchern, wie Vor- und Nachnamen, Telefonnummern, Wohnadressen, Geburtsdaten, Führerscheinnummern und Sozialversicherungsnummern.

Equifax hat es versäumt, seine öffentliche Website mit der neuesten Version von Apache Struts zu aktualisieren. Das Unternehmen hat es versäumt, die entsprechenden Sicherheitspatches anzuwenden, um eine weithin bekannte Sicherheitslücke zu schließen, die den Einbruch ermöglichte.

Aufspüren anfälliger und veralteter Komponenten

Um die Verwendung veralteter Komponenten, die potenzielle Schwachstellen enthalten, zu erkennen, müssen Sie die Technologien mit einem Fingerabdruck versehen, d. h. die Namen, Versionen und andere Angaben zu den in der Software verwendeten Technologien sammeln. Zu den Techniken gehören:

  • Analyse von HTML-Elementen. In der Regel enthält der HTTP-Verkehr Cookies, Umleitungs-URLs, Header-Werte, HTTP-Statuscode-Informationen und mehr. Sie können jedoch nur dann unautorisierte Aktivitäten verhindern oder ungenutzte Netzwerkressourcen identifizieren, wenn Sie wissen, wie Sie diese Informationen analysieren können. So können Sie mit Hilfe von Browser-Erweiterungstools die auf den von Ihnen besuchten Websites verwendeten Technologien anhand von HTML-Seitenkomponenten und Headern erkennen.
  • Auslösen von Fehlern. Die Praxis, die Anwendung zu belasten und ausführliche Fehler auszulösen, kann Ihnen einen Hinweis auf die verwendeten Technologien geben. Mit Hilfe einer automatisierten Softwaretesttechnik, die als Fuzzing bekannt ist, können Sie Codierungsfehler und Sicherheitslücken finden, indem Sie nach dem Zufallsprinzip ungültige, unerwartete oder zufällige Daten als Eingaben in eine Anwendung einspeisen.
  • Erzwungenes Durchsuchen. Diese Methode zielt darauf ab, den Zugriff auf Ressourcen zu ermöglichen, die nicht mit der Anwendung verknüpft sind, aber dennoch auf dem Server vorhanden sind. Sie ermöglicht es, das Domänenverzeichnis nach alten Konfigurationsdateien, typischen Anmeldeportalen und README-Dateien zu durchsuchen, die Informationen über das Archiv der Computersoftware und möglicherweise den Namen und die Version der Komponenten enthalten.
  • Quellcode. Wenn Sie berechtigt sind, auf den Quellcode der Anwendung zuzugreifen, können Sie in der Liste der Abhängigkeiten nachsehen, welche Pakete im Projekt verwendet werden.

Prävention und Schadensbegrenzung

Unternehmen müssen sich unbedingt der Risiken bewusst sein, die mit der Verwendung anfälliger Komponenten verbunden sind, und entsprechende Richtlinien befolgen, um diese zu beseitigen. Wenn es um Cybersicherheit geht, ist Bewusstsein die beste Verteidigung. Lassen Sie uns einige der effektivsten Präventivmechanismen erkunden. Jetzt geht’s los!

Ermöglichung der Analyse der Softwarezusammensetzung

Die Software Composition Analysis (SCA) ist ein automatisiertes Verfahren, das die in die Software integrierten Open-Source-Pakete eingehend analysiert. Mit SCA können Sicherheitsexperten die Risiken und Schwachstellen identifizieren, die mit der Verwendung von Komponenten Dritter in einem Projekt verbunden sind.

SCA-Tools liefern ein vollständiges Inventar der Software-Assets eines Projekts: alle Komponenten, ihre unterstützenden Bibliotheken sowie die direkten und indirekten Abhängigkeiten. SCA schärft das Bewusstsein der Entwickler für Sicherheitsbedenken und potenzielle Schwachstellen, so dass sie Pläne zur Schadensbegrenzung erstellen und die notwendigen Schritte zur Verhinderung illegaler Aktivitäten unternehmen können.

Installieren Sie Web Application Firewalls

Web Application Firewalls (WAFs) tragen zum Schutz von Websites und Webanwendungen bei, indem sie einen Schutzschild zwischen dem System und dem Internet errichten, der den HTTP-Verkehr überwacht.

WAFs sind ein wichtiger Sicherheitsschutz gegen verschiedene Angriffsvektoren, darunter SQL-Injection, Remote File Inclusion (RFI) und Cross-Site Scripting (XSS). Mit der richtigen WAF können Entwicklerteams den eingehenden Datenverkehr überprüfen und bösartige HTTP-Anfragen blockieren, bevor sie die Webanwendung oder den Benutzer erreichen.

Selbst wenn Ihre Anwendung, Ihr Dienst oder Ihr Server anfällig ist, lässt die WAF-Lösung “bösartige Anfragen” nicht durch.

Implementierung eines Patch-Management-Prozesses

IT-Fachleute sollten ihren Ansatz für die Patch-Verwaltung formalisieren, um mit neu veröffentlichten Sicherheits-Patches Schritt zu halten und die Gesamtleistung der Software zu verbessern. Eine ordnungsgemäße Patch-Verwaltung umfasst die Identifizierung und Priorisierung des Patch-Bedarfs, die Beschaffung, das Testen und die Installation von Patches zur Aktualisierung oder Reparatur des vorhandenen Codes.

Software-Programme, Anwendungen und eingebettete Systeme weisen häufig technische Probleme auf, die zeitnah behoben werden müssen. Mit Patches lassen sich Schwachstellen beheben, Fehler korrigieren und Sicherheitslücken schließen.

Werden die Komponenten nicht rechtzeitig aktualisiert, stellt dies ein erhebliches Sicherheitsrisiko dar und macht Ihre Betriebssysteme anfällig für bösartige Angriffe. Außerdem werden dadurch künftige Aktualisierungen erschwert. Je nach Anzahl der Projekte, die auf derselben anfälligen Komponentenversion basieren, würde der Zeitaufwand für die Durchführung von Tests und die Anwendung von Patches exponentiell ansteigen.

Durchführung von Penetrationstests

Bei Penetrationstests handelt es sich um einen geplanten Angriff auf ein Informationssystem, bei dem Sicherheitsexperten denselben Ansatz wie ein Angreifer verfolgen, um Schwachstellen und kritische Sicherheitslücken zu finden. Indem Sie proaktiv nach anfälligen Komponenten suchen, können Sie Cybersicherheitsprobleme angehen und beheben, bevor das System in Betrieb genommen wird.

Penetrationstests sind eine der effizientesten Methoden, um Ihr Informationssystem durch kontinuierliche Überwachung auf Web-Sicherheitsschwachstellen sicher zu halten. Die professionellen Pentester von QAwerk verwenden fortschrittliche Tools, um die Zielanwendungen auf Schwachstellen zu untersuchen und Organisationen vor unerwünschten Zugriffsversuchen auf ihre Computersysteme zu schützen.

Wie kann man die OWASP-Schwachstelle Nr. 6 bekämpfen?

Entwicklungsteams und Sicherheitsverantwortliche müssen Abwehrmaßnahmen ergreifen, um böswillige Aktivitäten zu verhindern und sicherzustellen, dass ihr Unternehmen nicht für Bedrohungen der Cybersicherheit anfällig ist. Zu den praktischsten Möglichkeiten, komponentenbasierte Schwachstellen zu beheben, gehören die folgenden:

  • Verlassen Sie sich auf OWASP-, SANS/CWE- und CERT-Codierungsstandards, um die Softwareleistung zu verbessern und die Anfälligkeit für Schwachstellen zu verringern.
  • Implementieren Sie automatisierte Warn- und Patching-Tools, um einen sicheren Softwareentwicklungsprozess (SDLC) zu gewährleisten und Ihren Entwicklungsteams einen Überblick über potenzielle Schwachstellen zu geben.
  • Führen Sie ein umfassendes Inventar aller in der Anwendung verwendeten Komponenten, um sicherzustellen, dass nur zugelassene Elemente eingesetzt werden. Überprüfen und aktualisieren Sie die Liste laufend.
  • Bevorzugen Sie signierte Pakete, um das Risiko zu minimieren, eine geänderte, schädliche Komponente einzubinden.
  • Beseitigen Sie veraltete oder ungenutzte Komponenten, Elemente, Ordner, Funktionen und redundante Abhängigkeiten, um die Möglichkeit von Sicherheitslücken zu verringern.
  • Scannen Sie regelmäßig Bibliotheken, Komponenten und deren Abhängigkeiten, um Schwachstellen zu erkennen.
  • Binden Sie nur Komponenten aus offiziellen Quellen über sichere Links ein und überprüfen Sie, ob sie den gesetzlichen Normen und Vorschriften genügen.

Fazit

Die Welt von heute ist technologiebasiert. Softwareanwendungen, -lösungen und -plattformen berühren fast jeden Aspekt unseres Lebens. Sie bergen jedoch auch Sicherheitsrisiken, die Angreifern die Möglichkeit bieten, den Nutzern von Anwendungen und Organisationen, selbst großen und bekannten, ernsthafte Probleme zu bereiten.

Vorfälle kommen vor, aber wenn Sie gut informiert und vorbereitet sind, können Sie viel besser mit Sicherheitslücken im Web umgehen. Aus diesem Grund müssen Entwicklerteams ihren Fokus auf die besonders leicht ausnutzbaren und schwerwiegenden Schwachstellen richten und sichere Softwareentwicklungsverfahren anwenden.

Wenn man so früh wie möglich über die Schwachstellen Bescheid weiß, können die Sicherheitsexperten das Problem besser verstehen und die sicherste Lösung finden. Softwareentwickler müssen proaktive Maßnahmen ergreifen, um die Risiken zu mindern, böswillige Angriffe zu vermeiden und Verstöße gegen das Unternehmen zu verhindern.