Janë zbuluar dobësi në trajtuesit e Veprimeve GitHub, të cilat thirren automatikisht kur paraqiten kërkesa tërheqëse në depon e paketave Nixpkgs, të përdorura në shpërndarjen NixOS dhe në ekosistemin e menaxherit të paketave Nix. Dobësia i lejoi një përdoruesi të paautorizuar të nxirrte një token që i jepte akses leximi dhe shkrimi në kodin burimor të të gjitha paketave të strehuara në Nixpkgs. Ky token lejonte modifikimin e drejtpërdrejtë të çdo pakete përmes depos Git të projektit, duke anashkaluar proceset e shqyrtimit dhe miratimit.
Aftësia për të kompromentuar Nixpkgs dhe për të injektuar kod të personalizuar në çdo paketë u demonstrua nga studiuesit e sigurisë tetorin e kaluar në konferencën NixCon dhe u përfshi menjëherë në infrastrukturën e projektit. Megjithatë, detajet e sulmit u zbuluan vetëm një vit më vonë. Problemi lidhej me përdorimin e trajtuesve të GitHub Actions në depon Nixpkgs GitHub, të cilët janë të lidhur me ngjarjen "pull_request_target" dhe kryejnë kontrolle automatike pas kërkesave të reja për tërheqje.
Ndryshe nga ngjarja "pull_request", trajtuesve nĂ« "pull_request_target" u jepet akses leximi/shkrimi nĂ« mjedisin e ndĂ«rtimit, gjĂ« qĂ« kĂ«rkon kujdes tĂ« veçantĂ« kur punohet me tĂ« dhĂ«na tĂ« kaluara nĂ« njĂ« kĂ«rkesĂ« tĂ«rheqjeje. NjĂ« nga trajtuesit e lidhur me "pull_request_target" validoi skedarin "OWNERS" tĂ« dhĂ«nĂ« nĂ« kĂ«rkesĂ«n tĂ«rheqjeje duke ndĂ«rtuar dhe thirrur programin 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ëse skedari OWNERS ishte formatuar gabimisht, programi i validimit të codeowners do të nxirrte përmbajtjen e vargut të keqformuar në regjistrin standard, të aksesueshëm publikisht. Sulmi konsistonte në vendosjen e një lidhjeje simbolike të quajtur OWNERS në kërkesën pull, duke treguar skedarin ".credentials", i cili ruan kredencialet në mjedisin e ndërtimit. Si pasojë, përpunimi i këtij skedari rezultoi në një gabim dhe rreshti i parë, që përmbante tokenin e aksesit të repozitorit, u nxirr në regjistrin publik.

PĂ«r mĂ« tepĂ«r, njĂ« tjetĂ«r dobĂ«si u gjet nĂ« trajtuesin qĂ« kontrollon rregullat e editorconfig. steps: â name: Merr listĂ«n e skedarĂ«ve tĂ« ndryshuar nga PR run: gh api [âŠ] | jq [ ⊠] > «$HOME/changed_files» â uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge â name: Duke kontrolluar EditorConfig run: cat «$HOME/changed_files» | xargs -r editorconfig-checker
Në këtë rast, problemi ishte përdorimi i programit "xargs" për të ekzekutuar editorconfig-checker me çdo skedar në kërkesën pull. Meqenëse emrat e skedarëve nuk u validuan, një sulmues mund të përfshinte një skedar që përmbante karaktere speciale në kërkesën pull, të cilat do të përpunoheshin si argumente të rreshtit të komandës gjatë ekzekutimit të editorconfig-checker. Për shembull, kur krijohej një skedar "--help", editorconfig-checker do të shfaqte një aludim rreth opsioneve të disponueshme.
Burimi: opennet.ru
