Angriff auf die PyTorch-Infrastruktur, die das Repository und die Veröffentlichungen kompromittiert.

Die Einzelheiten eines Angriffs auf die Infrastruktur, die für die Entwicklung des Machine-Learning-Frameworks PyTorch verwendet wird, wurden aufgedeckt. Dieser Angriff ermöglichte es, Zugangsschlüssel zu extrahieren, die ausreichten, um beliebige Daten in das Repository mit den Versionsveröffentlichungen des Projekts in GitHub und AWS hochzuladen sowie Codes in den Hauptzweig des Repositories einzufügen und über Abhängigkeiten eine Hintertür zu schaffen. Die Manipulation der PyTorch-Versionen könnte verwendet worden sein, um Angriffe auf große Unternehmen wie Google, Meta, Boeing und Lockheed Martin durchzuführen, die PyTorch in ihren Projekten einsetzen. Im Rahmen des Bug-Bounty-Programms hat Meta den Forschern 16.250 USD für Informationen über das Problem gezahlt.

Das Wesen des Angriffs besteht darin, dass eigener Code auf Servern Continuous Integration-Systemen ausgeführt werden kann, die das Rebuilden und Testen neuer Änderungen ermöglichen, die in das Repository hochgeladen werden. Das Problem betrifft Projekte, die eigene externe "Self-Hosted Runner" mit GitHub Actions verwenden. Im Gegensatz zu traditionellen GitHub Actions werden Self-Hosted-Runners nicht in der Infrastruktur von GitHub, sondern auf eigenen Servern oder in virtuellen Maschinen ausgeführt, die von den Entwicklern unterstützt werden.

Das Ausführen von Build-Aufgaben auf den eigenen Servern ermöglicht es, Code zu implementieren, der interne Netzwerke des Unternehmens scannen, auf lokale Dateisysteme nach Verschlüsselungsschlüsseln und Zugangstokens suchen sowie Umgebungsvariablen mit Parametern für den Zugriff auf externe Speicher oder Cloud-Dienste analysieren kann. Bei unzureichender Isolation der Build-Umgebung können gefundene vertrauliche Daten an die Angreifer nach außen gesendet werden, z. B. über Anfragen an externe APIs. Zur Erkennung der Nutzung von "Self-Hosted Runner" durch Projekte kann das Tool Gato verwendet werden, das öffentliche Workflow-Dateien und Protokolle von CI-Jobs analysiert.

Bei PyTorch und vielen anderen Projekten, die "Self-Hosted Runner" verwenden, ist das Starten von Build-Jobs nur Entwicklern erlaubt, deren Änderungen zuvor überprüft wurden und in die Codebasis des Projekts aufgenommen wurden. Der Status als "Contributor" ermöglicht es bei Verwendung der Standardeinstellungen im Repository, GitHub Actions Runner beim Einreichen von Pull-Requests zu starten und somit eigenen Code in jeder Umgebung von GitHub Actions Runner auszuführen, die mit dem Repository oder der betreuenden Projektorganisation verknüpft ist.

Die Bindung an den Status „Contributor“ ließ sich leicht umgehen – es genügte, eine geringfügige Änderung vorzunehmen und deren Annahme in die Code-Basis abzuwarten. Danach erhielt der Entwickler automatisch den Status eines aktiven Teilnehmers, dessen Pull-Requests in der CI-Infrastruktur ohne separate Überprüfung getestet werden durften. Für den Erhalt des Status eines aktiven Entwicklers wurden im Rahmen des Experiments geringfügige kosmetische Änderungen vorgenommen, die sich auf die Behebung von Tippfehlern in der Dokumentation bezogen. Um Zugriff auf das Repository und das Release-Archiv von PyTorch zu erhalten, wurde im Verlauf des Angriffs, als der Code im „Self-Hosted Runner“ ausgeführt wurde, das GitHub-Token abgefangen, das für den Zugriff auf das Repository aus den Build-Prozessen verwendet wurde, sowie AWS-Schlüssel, die zur Speicherung der Build-Ergebnisse eingesetzt wurden.

Das Problem ist nicht spezifisch für PyTorch und betrifft viele andere große Projekte, die die Standardeinstellungen für „Self-Hosted Runner“ in GitHub Actions verwenden. Beispielsweise wurde berichtet, dass ähnliche Angriffe durchgeführt wurden, um Backdoors in einige große Kryptowährungs-Wallets und Blockchain-Projekte mit einer Marktkapitalisierung von Milliarden einzuschleusen, Änderungen an den Releases von Microsoft Deepspeed und TensorFlow vorzunehmen, eine der Anwendungen von CloudFlare zu kompromittieren sowie Code auf Computern im Netzwerk von Microsoft auszuführen. Details zu diesen Vorfällen werden bisher nicht bekannt gegeben. Im Rahmen der bestehenden Bug-Bounty-Programme haben Forscher über 20 Anträge auf Belohnungen in Höhe von mehreren Hunderttausend Dollar eingereicht.

Quelle: opennet.ru

60GB SSD 8Gb DDR4