Sårbarheder i GitHub Actions-handlere, som automatisk kaldes, når der sendes pull-anmodninger til Nixpkgs-pakkearkivet, der bruges i NixOS-distributionen og Nix-pakkehåndteringsøkosystemet, er blevet afsløret. Sårbarheden tillod en uautoriseret bruger at udtrække et token, der giver læse- og skriveadgang til kildekoden for alle pakker, der hostes i Nixpkgs. Dette token tillod direkte ændring af enhver pakke via projektets Git-arkiv, hvorved gennemgangs- og godkendelsesprocesserne omgås.
Muligheden for at kompromittere Nixpkgs og injicere brugerdefineret kode i enhver pakke blev demonstreret af sikkerhedsforskere i oktober sidste år på NixCon-konferencen og blev straks rettet i projektets infrastruktur. Detaljer om angrebet blev dog først afsløret et år senere. Problemet var relateret til brugen af GitHub Actions-handlere i Nixpkgs GitHub-repository, som er bundet til "pull_request_target"-hændelsen og udfører automatiske kontroller ved nye pull-anmodninger.
I modsætning til hændelsen "pull_request" får handlere i "pull_request_target" læse-/skriveadgang til byggemiljøet, hvilket kræver særlig omhu, når man arbejder med data, der sendes i en pull-anmodning. En af handlerne, der er bundet til "pull_request_target", validerede "OWNERS"-filen, der blev leveret i pull-anmodningen, ved at bygge og kalde codeowners-validator-værktøjet: trin: — bruger: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf med: ref: refs/pull/$/merge sti: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS
Problemet var, at hvis OWNERS-filen var formateret forkert, ville codeowners-validator-værktøjet udskrive indholdet af den misdannede streng til den offentligt tilgængelige standardlog. Angrebet bestod i at placere et symbolsk link med navnet OWNERS i pull-anmodningen, der pegede på filen ".credentials", som gemmer legitimationsoplysninger i byggemiljøet. Derfor resulterede behandlingen af denne fil i en fejl, og den første linje, der indeholdt adgangstokenet til arkivet, blev udskrevet til den offentlige log.

Derudover blev der fundet en anden sårbarhed i den handler, der kontrollerer editorconfig-regler. trin: — navn: Hent en liste over ændrede filer fra PR run: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — navn: Kontrollerer EditorConfig run: cat «$HOME/changed_files» | xargs -r editorconfig-checker
I dette tilfælde var problemet brugen af værktøjet "xargs" til at køre editorconfig-checker med hver fil i pull-anmodningen. Da filnavnene ikke blev valideret, kunne en angriber inkludere en fil med specialtegn i pull-anmodningen, som ville blive behandlet som kommandolinjeargumenter, når editorconfig-checker blev kørt. For eksempel, når man opretter en "--help"-fil, ville editorconfig-checker vise et tip om de tilgængelige muligheder.
Kilde: opennet.ru
