SÄrbarheter i GitHub Actions-hanterare, vilka automatiskt anropas nÀr pull requests skickas till Nixpkgs-paketförrÄdet, som anvÀnds i NixOS-distributionen och Nix-pakethanterarens ekosystem, har avslöjats. SÄrbarheten gjorde det möjligt för en obehörig anvÀndare att extrahera en token som ger lÀs- och skrivÄtkomst till kÀllkoden för alla paket som finns i Nixpkgs. Denna token möjliggjorde direkt modifiering av vilket paket som helst via projektets Git-förrÄd, vilket kringgick gransknings- och godkÀnnandeprocesserna.
Möjligheten att kompromettera Nixpkgs och injicera anpassad kod i vilket paket som helst demonstrerades av sÀkerhetsforskare i oktober förra Äret pÄ NixCon-konferensen och uppdaterades omedelbart i projektets infrastruktur. Detaljer om attacken avslöjades dock först ett Är senare. Problemet var relaterat till anvÀndningen av GitHub Actions-hanterare i Nixpkgs GitHub-repository, vilka Àr bundna till hÀndelsen "pull_request_target" och utför automatiserade kontroller vid nya pull-förfrÄgningar.
Till skillnad frĂ„n hĂ€ndelsen "pull_request" beviljas hanterare i "pull_request_target" lĂ€s-/skrivĂ„tkomst till byggmiljön, vilket krĂ€ver sĂ€rskild försiktighet nĂ€r man arbetar med data som skickas i en pull-förfrĂ„gan. En av hanterarna som Ă€r bunden till "pull_request_target" validerade "OWNERS"-filen som tillhandahölls i pull-förfrĂ„gan genom att bygga och anropa verktyget codeowners-validator: steg: â anvĂ€nder: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf med: ref: refs/pull/$/merge sökvĂ€g: pr â kör: nix-build base/ci -A codeownersValidator â kör: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS
Problemet var att om OWNERS-filen var felaktigt formaterad, skickade verktyget codeowners-validator innehÄllet i den felaktigt formaterade strÀngen till den offentligt tillgÀngliga standardloggen. Attacken bestod av att placera en symbolisk lÀnk med namnet OWNERS i pull-förfrÄgan, som pekade pÄ filen ".credentials", som lagrar autentiseringsuppgifter i byggmiljön. Följaktligen resulterade bearbetningen av denna fil i ett fel och den första raden, som innehöll Ätkomsttoken för arkivet, skickades till den offentliga loggen.

Dessutom hittades ytterligare en sĂ„rbarhet i hanteraren som kontrollerar editorconfig-regler. steg: â namn: HĂ€mta lista över Ă€ndrade filer frĂ„n PR kör: gh api [âŠ] | jq [ ⊠] > «$HOME/changed_files» â anvĂ€nder: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 med: ref: refs/pull/$/merge â namn: Kontrollerar EditorConfig kör: cat «$HOME/changed_files» | xargs -r editorconfig-checker
I det hÀr fallet var problemet anvÀndningen av verktyget "xargs" för att köra editorconfig-checker med varje fil i pull-förfrÄgan. Eftersom filnamnen inte validerades kunde en angripare inkludera en fil som innehÄller specialtecken i pull-förfrÄgan, vilka skulle bearbetas som kommandoradsargument nÀr editorconfig-checker kördes. Till exempel, nÀr man skapade en "--help"-fil skulle editorconfig-checker visa en ledtrÄd om de tillgÀngliga alternativen.
KĂ€lla: opennet.ru
