Eine Schwachstelle im GitHub Actions-Handler, die es ermöglichte, Pakete in Nixpkgs zu gefÀhrden.

Es wurden Informationen ĂŒber Schwachstellen in den GitHub Actions-Handlern veröffentlicht, die automatisch bei der Einreichung von Pull-Requests im Nixpkgs-Paket-Repository aufgerufen werden, das in der NixOS-Distribution und im mit dem Nix-Paketmanager verbundenen Ökosystem verwendet wird. Die Schwachstelle ermöglichte es Dritten, ein Token zu extrahieren, das Lese- und Schreibzugriff auf den Quellcode aller im Nixpkgs gehosteten Pakete gewĂ€hrte. Dieses Token erlaubte es, direkt Änderungen an jedem Paket ĂŒber das Git-Repository des Projekts vorzunehmen, ohne die PrĂŒf- und ÜberprĂŒfungsprozesse fĂŒr Änderungen zu durchlaufen.

Die Möglichkeit, Nixpkgs zu kompromittieren und eigenen Code in jedes Paket einzuschleusen, wurde von Sicherheitsforschern im Oktober letzten Jahres auf der NixCon-Konferenz demonstriert und sofort in der Infrastruktur des Projekts behoben. Allerdings wurden die Details des durchgefĂŒhrten Angriffs erst ein Jahr spĂ€ter veröffentlicht. Das Problem war mit der Verwendung von GitHub Actions-Handlern im GitHub-Repository von Nixpkgs verbunden, die an das Ereignis „pull_request_target“ gebunden sind und automatisierte ÜberprĂŒfungen bei Eingang neuer Pull-Requests durchfĂŒhren.

Im Gegensatz zum Ereignis „pull_request“ haben die Handler bei „pull_request_target“ Lese- und Schreibzugriff auf die Build-Umgebung, was besondere Aufmerksamkeit beim Arbeiten mit den im Pull-Request ĂŒbergebenen Daten erfordert. In einem der an „pull_request_target“ gebundenen Handler wurde die Datei „OWNERS“, die im Pull-Request angegeben ist, ĂŒberprĂŒft. Dazu wurde das Tool codeowners-validator gesammelt und aufgerufen: steps: — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

Das Problem war, dass im Falle eines Fehlers bei der Formatierung der Datei OWNERS das Tool codeowners-validator den Inhalt der fehlerhaft formatierten Zeile in das öffentliche Protokoll ausgab. Der Angriff bestand darin, einen symbolischen Link mit dem Namen OWNERS im Pull-Request zu platzieren, der auf die Datei „.credentials“ verwies, in der die Anmeldeinformationen in der Build-Umgebung gespeichert sind. Folglich fĂŒhrte die Verarbeitung dieser Datei zu einem Fehler und zur Ausgabe der ersten Zeile in das öffentliche Protokoll, die ein Zugriffstoken auf das Repository enthielt.

Eine Schwachstelle im GitHub Actions-Handler, die es ermöglichte, Pakete in Nixpkgs zu gefÀhrden.

DarĂŒber hinaus wurde eine weitere Schwachstelle im Handler gefunden, der die Regeln von editorconfig ĂŒberprĂŒft. Schritte: — Name: Liste der geĂ€nderten Dateien aus PR abrufen AusfĂŒhren: gh api [
] | jq [ 
 ] > „$HOME/changed_files“ — Verwendet: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 Mit: ref: refs/pull/$/merge — Name: ÜberprĂŒfung von EditorConfig AusfĂŒhren: cat „$HOME/changed_files“ | xargs -r editorconfig-checker

In diesem Fall lag das Problem in der Verwendung des Dienstprogramms „xargs“, um das Programm editorconfig-checker fĂŒr jede Datei aus dem Pull-Request auszufĂŒhren. Da die Dateinamen nicht auf Korrektheit ĂŒberprĂŒft wurden, konnte ein Angreifer eine Datei mit Sonderzeichen im Pull-Request platzieren, die beim AusfĂŒhren des Dienstprogramms editorconfig-checker als Befehlszeilenargumente verarbeitet wurden. Beispielsweise wĂŒrde das Erstellen einer Datei „—help“ dazu fĂŒhren, dass das Dienstprogramm editorconfig-checker die verfĂŒgbaren Optionen anzeigt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4