Sårbarhed i GitHub Actions-behandleren, der gjorde det muligt at kompromittere pakker i Nixpkgs

Oplysninger om sårbarheder i GitHub Actions-handlere, som automatisk kaldes ved indsendelse af pull-anmodninger til Nixpkgs-pakkerepositoriet, der bruges i NixOS-distributionen og i økosystemet relateret til pakkeadministratoren Nix, er blevet afsløret. Sårbarheden gav en tredjepart mulighed for at udtrække et token, der giver adgang til at læse og skrive til kildekoden for alle pakker, der er placeret i Nixpkgs. Dette token gav mulighed for direkte at foretage ændringer i enhver pakke gennem projektets Git-repository, uden om kontrol- og anmeldelsesprocesserne.

Muligheden for at kompromittere Nixpkgs og indsætte sin egen kode i enhver pakke blev demonstreret af sikkerhedsforskere på NixCon-konferencen i oktober sidste år og blev straks rettet i projektets infrastruktur. Ikke desto mindre blev detaljerne om det udførte angreb først offentliggjort et år senere. Problemet var relateret til brugen af GitHub Actions-handlere i Nixpkgs GitHub-repository, som var knyttet til hændelsen "pull_request_target" og udførte automatiserede tests ved modtagelse af nye pull-anmodninger.

I modsætning til hændelsen "pull_request" har handlere knyttet til "pull_request_target" adgang til at læse og skrive til byggeområdet, hvilket kræver særlig opmærksomhed ved håndtering af data sendt i pull-anmodningen. I en af de knyttede handlere til "pull_request_target" blev filen "OWNERS" nævnt i pull-anmodningen kontrolleret, og der blev samlet og kaldt et værktøj kaldet codeowners-validator: 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

Problemet var, at hvis der opstod en fejl i formateringen af OWNERS-filen, ville værktøjet codeowners-validator udskrive indholdet af den forkert formaterede linje til standardloggen, der er offentligt tilgængelig. Angrebet bestod i at placere en symbolsk henvisning med navnet OWNERS i pull-anmodningen, der henviste til filen ".credentials", hvor adgangsoplysningerne opbevares i byggeområdet. Som følge heraf førte behandlingen af denne fil til en fejl og udskrev i den offentlige log den første linje, der indeholdt token til adgang til repository.

Sårbarhed i GitHub Actions-behandleren, der gjorde det muligt at kompromittere pakker i Nixpkgs

Derudover blev der fundet en yderligere sårbarhed i håndteringen, der udfører en kontrol af editorconfig-reglerne. steps: — name: Hent liste over ændrede filer fra PR run: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — name: Tjekker 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 programmet editorconfig-checker med hver fil fra pull-anmodningen. Da filnavne ikke blev kontrolleret for korrekthed, kunne en angriber placere en fil med specialtegn i pull-anmodningen, som ville blive behandlet ved kørsel af værktøjet editorconfig-checker som kommandolinjeargumenter. For eksempel, ved at oprette en fil «—help» ville værktøjet editorconfig-checker vise en hjælp med de tilgængelige muligheder.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster