Schadcode auf PyPI: Supply-Chain-Angriff auf PyTorch Nightly Builds
Wer kürzlich PyTorch-nightly unter Linux via pip installiert hat, erhielt Schadcode. Das PyTorch-Team hat Gegenmaßnahmen eingeleitet.
Wie das PyTorch-Team bekannt gab, ist das Machine-Learning-Framework zum Ziel eines Supply-Chain-Angriffs geworden. Entwicklerinnen und Entwickler, die zwischen dem 25. und 30. Dezember 2022 PyTorch-nightly unter Linux via pip installiert haben, sollen demnach PyTorch und die Dependency torchtriton unverzüglich deinstallieren und auf eine neuere Nightly-Version nach dem 30. Dezember 2022 zurückgreifen. Nutzerinnen und Nutzer der stabilen Version sind laut dem Entwicklungsteam nicht betroffen.
Binary liest Informationen und Dateien aus
Die im betreffenden Zeitraum heruntergeladenen Linux-Packages für PyTorch Nightly Builds installierten die im Python Package Index (PyPI) Code Repository kompromittierte Dependency torchtriton und führten eine schadhafte Binary aus. Dahinter steckt, dass der auf PyPI hochgeladene Schadcode den gleichen Namen trägt wie die Dependency torchtriton und aufgrund der Präzedenz des PyPI-Index diese ersetzte, anstatt torchtriton aus dem offiziellen PyTorch-Repository zu installieren.
Das Ausführen des folgenden Codes soll darüber informieren, ob die eigene Installation betroffen ist:
python3 -c "import pathlib;import importlib.util;s=importlib.util.find_spec('triton'); affected=any(x.name == 'triton' for x in (pathlib.Path(s.submodule_search_locations[0] if s is not None else '/' ) / 'runtime').glob('*'));print('You are {}affected'.format('' if affected else 'not '))"
Betroffene Entwicklerinnen und Entwickler deinstallieren PyTorch mitsamt torchtriton wie folgt:
$ pip3 uninstall -y torch torchvision torchaudio torchtriton
$ pip3 cache purge
Die Binary liest laut dem PyTorch-Team in erster Linie Systeminformationen sowie Dateiinhalte aus – beispielsweise von $HOME/.gitconfig und $HOME/.ssh/* – und lädt diese Informationen mittels verschlüsselter DNS-Queries auf eine Domäne hoch. Alle entdeckten Auswirkungen des Schadcodes sind im PyTorch-Blog aufgeführt.
Gegenmaßnahmen
Das Entwicklungsteam hat torchtriton als Dependency der Nightly-Packages entfernt und durch pytorch-triton ersetzt. Ein Dummy-Package dafür hat das PyTorch-Team auf PyPI ebenfalls registriert, um einem erneuten Angriff entgegenzuwirken. Alle Nightly-Packages, die torchtriton als Dependency haben, wurden bis auf Weiteres aus den PyTorch-Package-Indizes entfernt. Zudem hat das PyTorch-Team eine Anfrage an das PyPI-Security-Team gestellt, Besitz über das torchtriton-Package auf PyPI zu erlangen und die schadhafte Version zu entfernen.
Erst im vergangenen Monat hatte das PyTorch-Team zum Verwenden von Nightly Builds aufgerufen, um einen für Version 2.0 geplanten neuen Kompiliermodus nutzen zu können.
Alle bisher bekannten Informationen zum Supply-Chain-Angriff fasst das PyTorch-Team in einem Blogeintrag zusammen.
(mai)