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.

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
