Razkrinkani so podatki o ranljivostih v obdelovalnikih GitHub Actions, ki se samodejno aktivirajo ob poslanem pull requestu v repozitorij paketov Nixpkgs, uporabljen v distribuciji NixOS in v ekosistemu, povezanem z upravljalnikom paketov Nix. Ranljivost je omogočila zunanjim osebam, da izvlečejo žeton, ki je omogočal branje in pisanje izvorne kode vseh paketov, shrankenih v Nixpkgs. Ta žeton je obšel postopke pregleda in ocenjevanja sprememb ter omogočil neposredne spremembe v katerem koli paketu preko Git repozitorija projekta.
Možnost kompromitacije Nixpkgs in vstavitve lastne kode v kateri koli paket so raziskovalci varnosti demonstrirali oktobra lani na konferenci NixCon, kar je bilo takoj odpravljeno v infrastrukturi projekta. Vendar so bili podrobnosti o izvedenem napadu razkrite šele po letu dni. Težava je bila povezana z uporabo obdelovalnikov GitHub Actions v GitHub repozitoriju Nixpkgs, povezanih z dogodkom 'pull_request_target', ki izvajajo avtomatizirane preglede ob prejemu novih pull requestov.
V nasprotju z dogodkom 'pull_request' imajo obdelovalniki 'pull_request_target' dostop do okolja za sestavljanje, kar zahteva posebno pozornost pri delu s podatki, ki se posredujejo v pull requestu. V enem od obdelovalnikov, povezanih s 'pull_request_target', je bila izvedena preizkušnja datoteke 'OWNERS', pri čemer je bila zbrana in klicana utilita 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
Težava je bila, da je v primeru napake pri oblikovanju datoteke OWNERS utilita codeowners-validator izpisala vsebino nepravilno oblikovane vrstice v standardni dnevnik, dostopen javnosti. Napad se je zmanjšal na umestitev simbolične povezave z imenom OWNERS v pull request, ki je kazala na datoteko '.credentials', v kateri so shranjene poverilnice. Posledično je obdelava te datoteke povzročila napako in izpis v javni dnevnik prve vrstice, ki je vsebovala dostopni žeton do repozitorija.

Poleg tega je bila odkrita še ena ranljivost v obdelovalcu, ki preverja pravila editorconfig. koraki: — ime: Pridobi seznam spremenjenih datotek iz PR zaženite: gh api […] | jq [ … ] > «$HOME/changed_files» — uporablja: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 z: ref: refs/pull/$/merge — ime: Preverjanje EditorConfig zaženite: cat «$HOME/changed_files» | xargs -r editorconfig-checker
V tem primeru je bila težava v uporabi pripomočka «xargs» za zagon programa editorconfig-checker za vsako datoteko iz pull-zahtave. Ker imena datotek niso bila preverjena, je lahko napadalec v pull-zahtavo dodal datoteko s posebnimi znaki, ki bi bila ob zagonu pripomočka editorconfig-checker obravnavana kot argumenti ukazne vrstice. Na primer, pri ustvarjanju datoteke «—help» bi pripomoček editorconfig-checker izpisal pomoč o razpoložljivih možnostih.
Izvor: opennet.ru
