Drei Fragen und Antworten: Warum sind Repositories so beliebt bei Angriffen?
In den letzten Wochen wurden viele Angriffe auf Software-Repositories bekannt: XZ, Python oder zuletzt Docker Hub. Repos scheinen es Hackern leichtzumachen.
Die Attacken auf Repositories haben in der Entwicklercommunity für Open-Source-Projekte für Aufregung gesorgt: Zuerst der sehr bedrohliche auf die XZ-Tools, der fast die Sicherheit von SSH gefährdet hätte, und zuletzt der auf Docker Hub, den die Firma JFrog aufgedeckt hat. Wir sprechen mit Sharchar Menashe, Senior Director von JFrog Security Research, darüber, wie sicher Repositories und das Software-Deployment noch sind.
Was macht Repositories für die Angreifer so interessant?
Zunächst einmal denke ich, dass sich der XZ-Angriff erheblich von dem auf Docker Hub unterscheidet. Beim XZ-Angriff führte der Angreifer "Jia Tan" eine mehrjährige Social-Engineering-Kampagne durch, um das Vertrauen der XZ-Maintainer zu gewinnen. Das ermöglichte es ihm schließlich, beliebige Änderungen am XZ-Projekt vorzunehmen. Ich würde daher sagen, dass dabei nicht GitHub angegriffen wurde, sondern vielmehr die Projektbetreuer. Der XZ-Code wurde zwar zufällig auf GitHub gehostet, das ist für den Angriff aber unerheblich.
Die Angriffskampagne auf Docker Hub ähnelt denen mit bösartigen Paketen in npm, PyPI und in geringerem Maße NuGet. Angreifer zielen auf diese Repositories ab, weil:
- Jeder kann beliebige Inhalte in Repositories hochladen.
- Die vollständige Moderation der hochgeladenen Inhalte stellt eine fast unmögliche Aufgabe dar (selbst bei Verwendung automatischer Moderationswerkzeuge).
- Im Falle von npm und PyPI führt die Installation des falschen Pakets sofort zu einer uneingeschränkten Codeausführung – im Grunde die schlimmste, vorstellbare Auswirkung. Im Falle von Docker Hub ist die Codeausführung auf einen Container eingeschränkt, es sei denn, das Opfer wird dazu verleitet, Binärdateien außerhalb des Containers auszuführen, was bei dem von uns entdeckten "imaginären" Angriff der Fall ist.
- Der Angriff ist extrem einfach auszuführen. Für simple Angriffe (z. B. Typosquatting) muss der Angreifer nichts recherchieren, sondern nur bösartige Inhalte in das Repository hochladen.
- Millionen von Entwicklern und CI/CD-Maschinen nutzen Repositories täglich, sodass das Verbreitungspotenzial der Malware sehr hoch ist.
Was für eine Auswirkung haben diese Angriffe auf die offene Art und Weise, wie Software (insbesondere Open Source) heutzutage entwickelt und bereitgestellt wird?
Diese Angriffe haben meiner Meinung nach keinen wirklichen Einfluss auf die Entwicklung von OSS. Aber in Bezug auf Erstellung und Deployment sehen wir, dass Standards und Frameworks wie Google SLSA immer wichtiger werden. Die sorgen dafür, dass die Software nach ihrer Entwicklung sicher erstellt und deployt wird, um so Angriffe auf die Lieferkette zu verhindern (z. B. soll sie nur auf einem sauberen, externen Rechner erstellt und mit einer Signatur/Attestierung bereitgestellt werden, die der Endbenutzer überprüfen kann).
Alle Angriffe dieser Art hatten einen starken menschlichen Faktor, der sich nicht so einfach mit technischen Methoden aufdecken lässt. Welche Möglichkeiten gibt es, Repositories und deren Nutzer besser zu schützen?
Ich denke, dass Angreifer in einem offenen Repository immer Wege finden, bösartigen Code hochzuladen (selbst wenn dieser Code nach einer Weile wieder verschwindet), da eine hundertprozentige Moderation unmöglich ist. Die größten Repositories sollten eine architektonische Änderung vornehmen, um Aktionen, die ein Paket bei der Installation ausführen kann, zu begrenzen. Wenn Anwender zum Beispiel ein Python-Paket mit pip installieren, sollte es standardmäßig keine Möglichkeit geben, beliebigen Code auszuführen. Vielmehr sollten nur begrenzte Aktionen erlaubt sein, und das Ausführen einer unsignierten Binärdatei sollte eine Warnmeldung auslösen.
In Docker Hub wird das Problem etwas entschärft, da der bösartige Code nur innerhalb eines Containers ausgeführt wird. Es besteht aber die Gefahr, dass Container manipuliert werden. Und es gibt bösartige Nutzlasten, die auch dann schädlich sind, wenn sie nur innerhalb eines Containers laufen, beispielsweise Cryptominer.
Darüber hinaus sollten Benutzer und Unternehmen in ihrer Entwicklungs- und CI/CD-Umgebung automatisierte Tools einsetzen, um sicherzustellen, dass die verwendeten Pakete nicht bösartig sind.
Sharchar Menashe, vielen Dank für die Antworten!
In der Serie "Drei Fragen und Antworten" will die iX die heutigen Herausforderungen der IT auf den Punkt bringen – egal ob es sich um den Blick des Anwenders vorm PC, die Sicht des Managers oder den Alltag eines Administrators handelt. Haben Sie Anregungen aus Ihrer tagtäglichen Praxis oder der Ihrer Nutzer? Wessen Tipps zu welchem Thema würden Sie gerne kurz und knackig lesen? Dann schreiben Sie uns gerne oder hinterlassen Sie einen Kommentar im Forum.
(who)