Entry-Points für gefährliche Angriffe auf Open-Source-Ökosysteme missbrauchbar
Ökosysteme wie PyPI, npm, Ruby Gems, NuGet, Dart Pub und Rust Crates sind zentrale Bausteine der modernen Softwareentwicklung, bergen aber auch Risiken. Angreifer könnten gezielt Einstiegspunkte in diesen Plattformen missbrauchen, um schädlichen Code einzuschleusen.
Laut den Checkmarx-Sicherheitsspezialisten Yehuda Gelb und Elad Rapaport stellt der Missbrauch von Einstiegspunkten ein ernsthaftes Risiko in der Open-Source-Software dar. Das Unternehmen, das auf die Sicherheit von Software-Lieferketten spezialisiert ist, hat herausgefunden, dass sogenannte Entry-Point-Attacken den Angreifern eine raffiniertere und dauerhafte Methode bieten, um Systeme zu kompromittieren. Diese Angriffe können herkömmliche Sicherheitsmaßnahmen umgehen.
Einstiegspunkte in einer Programmiersprache wie Python sind ein Mechanismus, mit dem Entwickler bestimmte Funktionen als Befehle in der Kommandozeile bereitstellen können (auch console_scripts genannt). Außerdem können sie genutzt werden, um Plugins zu laden, welche die Funktionen eines Pakets erweitern.
Checkmarx weist darauf hin, dass Einstiegspunkte zwar die Modularität von Software verbessern, aber auch missbraucht werden können, um bösartigen Code an ahnungslose Nutzer zu verteilen. Dies kann unter anderem durch Command-Jacking oder die Erstellung schädlicher Plugins für verschiedene Tools und Frameworks geschehen.
Command-Jacking liegt vor, wenn Angreifer gefälschte Pakete erstellen, die sich als bekannte Tools oder Befehle von Drittanbietern tarnen, wie zum Beispiel aws oder Docker. Wenn Entwickler diese Pakete installieren, können die gefälschten Befehle sensible Informationen abfangen. Dies ist möglich, selbst wenn das schädliche Paket als Wheel-Datei (.whl) verteilt wird.
Beliebte Drittanbieter-Befehle, die oft Ziel von Command-Jacking sind, umfassen npm, pip, git, kubectl, terraform, gcloud, heroku und dotnet. Eine andere Form von Command-Jacking tritt auf, wenn Angreifer gängige Systembefehle wie touch, curl, cd, ls oder mkdir als Einstiegspunkte missbrauchen, um den Programmablauf zu manipulieren.
Der Erfolg dieser Methode hängt davon ab, in welcher Reihenfolge Verzeichnisse im PATH aufgelistet sind. Wenn das Verzeichnis mit den bösartigen Befehlen im PATH vor den Systemverzeichnissen steht, wird der bösartige Befehl anstelle des legitimen ausgeführt. Dies ist besonders in Entwicklungsumgebungen häufig, wo lokale Paketverzeichnisse Vorrang haben.
Das ist jedoch noch nicht alles. Checkmarx entdeckte, dass die Gefahr von Command-Jacking durch eine Taktik namens Command Wrapping noch verstärkt werden kann. Dabei wird ein Einstiegspunkt geschaffen, der den ursprünglichen Befehl nicht ersetzt, sondern ihn umschließt.
Das Besondere an diesem Ansatz ist, dass der bösartige Code ausgeführt wird, ohne dass der Benutzer es bemerkt, da der legitime Befehl gleichzeitig aufgerufen wird und normal funktioniert. Die Ergebnisse des legitimen Befehls werden zurückgegeben, sodass alles wie gewohnt aussieht.
„Da der legitime Befehl weiterhin ausgeführt wird und normal arbeitet, gibt es keine offensichtlichen Anzeichen für einen Angriff“, erklären die Forscher. Das macht es extrem schwer, den Angriff zu erkennen. Diese unauffällige Methode ermöglicht es den Angreifern, langfristig Zugriff auf das System zu behalten und möglicherweise sensible Daten zu stehlen, ohne Verdacht zu erregen.
Eine weitere Angriffsmethode besteht darin, bösartige Plugins oder Erweiterungen für Entwickler-Tools zu erstellen. Diese können tiefen Zugriff auf den Quellcode erhalten, was es den Angreifern ermöglicht, das Verhalten des Programms zu ändern oder den Testprozess zu manipulieren. Dadurch kann der Eindruck entstehen, dass der Code korrekt funktioniert, obwohl er in Wirklichkeit kompromittiert ist.
Die Experten betonen, dass es in Zukunft entscheidend ist, Sicherheitsmaßnahmen zu entwickeln, die solche Einstiegspunkte schützen: „Wenn wir diese Risiken verstehen und gezielt dagegen vorgehen, können wir eine sicherere Umgebung für Python-Pakete schaffen, die sowohl einzelne Entwickler als auch Unternehmen vor ausgeklügelten Angriffen auf die Software-Lieferkette schützt.“
Diese Entwicklung fällt in eine Zeit, in der Sonatype in seinem jährlichen Bericht zur Software-Lieferkette feststellt, dass seit November 2023 über 512.847 bösartige Pakete in den Open-Source-Ökosystemen für Java, JavaScript, Python und .NET entdeckt wurden. Das bedeutet einen Anstieg von 156 Prozent im Vergleich zum Vorjahr.
„Herkömmliche Sicherheitstools können diese neuen Angriffe oft nicht erkennen, was Entwickler und automatisierte Build-Umgebungen besonders anfällig macht“, erklärt das Unternehmen. „Dadurch ist eine neue Generation von Supply-Chain-Angriffen entstanden, die gezielt Entwickler ins Visier nimmt und bestehende Sicherheitsmaßnahmen umgeht.“