Informacione mbi dobësitë në përpunuesit e GitHub Actions, të cilët thirren automatikisht me dërgimin e kërkesave për tërheqje në depozitën e paketave Nixpkgs, e cila përdoret në shpërndarjen NixOS dhe në ekosistemin e lidhur me menaxherin e paketave Nix. Dobësia lejonte një palë të tretë të nxjerrë një token, që jepte qasje për të shkruar dhe lexuar kodin burimor të të gjitha pakove të sistemuara në Nixpkgs. Ky token lejonte të bënin ndryshime direkte në çdo paketë përmes depozitës Git të projektit, duke anashkaluar proceset e kontrollit dhe rishikimit të ndryshimeve.
Rreziku i kompromitimit të Nixpkgs dhe futur kodin e tyre në çdo paketë është demonstruar nga kërkuesit e sigurisë në tetor të vitit të kaluar në konferencën NixCon dhe u eliminua menjëherë në infrastrukturën e projektit. Megjithatë, detajet mbi sulmin e kryer u zbuluan vetëm pas një viti. Problemi ishte i lidhur me përdorimin në depozitën GitHub të Nixpkgs të përpunuesve GitHub Actions, të lidhur me ngjarjen "pull_request_target" dhe që kryenin kontrollime automatike kur merrnin kërkesat e reja për tërheqje.
Ndryshe nga ngjarja "pull_request", në "pull_request_target" përpunuesve u jepej qasje për të lexuar dhe shkruar në ambientin e ndërtimit, gjë që kërkonte vëmendje të veçantë kur punohej me të dhënat e dërguara në kërkesën për tërheqje. Në një nga përpunuesit e lidhur me "pull_request_target" ishte bërë një kontroll i skedarit "OWNERS" të sjellë në kërkesën për tërheqje, për të cilin u grumbullua dhe u thirr një utilitet i quajtur 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
Problemi ishte se në rast të një gabimi në formatimin e skedarit OWNERS, utiliteti codeowners-validator shfaqi përmbajtjen e rreshtit të keqformatuar në logun standard, i cili ishte publikisht i qasshëm. Sulmi u reduktua në vendosjen në kërkesën për tërheqje të një lidhjeje simbolike me emrin OWNERS, e cila referonte në skedarin "credentials", në të cilin ndodhet informacioni i identifikimit në ambientin e ndërtimit. Si rezultat, përpunimi i këtij skedari çoi në një gabim dhe në përfundim u shfaq në logun publik rreshti i parë, i cili përmbante token e aksesit në depo.

PĂ«r mĂ« tepĂ«r, u zbulua njĂ« tjetĂ«r vulnerabilitet nĂ« trajtuesin qĂ« kryen kontrollin e rregullave tĂ« editorconfig. hapa: â emri: Merr listĂ«n e skedarĂ«ve tĂ« ndryshuar nga PR ekzekuto: gh api [âŠ] | jq [ ⊠] > «$HOME/changed_files» â pĂ«rdor: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 me: ref: refs/pull/$/merge â emri: Kontrollimi i EditorConfig ekzekuto: cat «$HOME/changed_files» | xargs -r editorconfig-checker
NĂ« kĂ«tĂ« rast, problemi qe nĂ« pĂ«rdorimin e utilitarit «xargs» pĂ«r tĂ« ekzekutuar programin editorconfig-checker me secilin skedar nga pull-req. Duke qenĂ« se emrat e skedarĂ«ve nuk u kontrolluan pĂ«r saktĂ«si, sulmuesi mund tĂ« pĂ«rfshinte njĂ« skedĂ« nĂ« pull-req me simbole speciale, tĂ« cilat do tĂ« pĂ«rpunoheshin gjatĂ« ekzekutimit tĂ« utilitarit editorconfig-checker si argumento tĂ« linjĂ«s sĂ« komandĂ«s. PĂ«r shembull, duke krijuar njĂ« skedĂ« «âhelp», utilitari editorconfig-checker do tĂ« tregonte pĂ«r opsionet e disponueshme.
Burimi: opennet.ru
