Yo devwale vilnerabilite nan fonksyon jesyon aksyon GitHub yo, ki otomatikman envoke lè w ap soumèt demann pou retire (pull request) nan depo pakè Nixpkgs yo, ki itilize nan distribisyon NixOS la ak nan ekosistèm jesyon pakè Nix la. Vilnerabilite a te pèmèt yon itilizatè san otorizasyon ekstrè yon jeton ki te bay aksè lekti ak ekriti nan kòd sous tout pakè ki nan Nixpkgs yo. Jeton sa a te pèmèt modifikasyon dirèk nenpòt pakè atravè depo Git pwojè a, san yo pa bezwen pwosesis revizyon ak apwobasyon yo.
Chèchè sekirite yo te demontre kapasite pou konpwomèt Nixpkgs epi enjekte kòd pèsonalize nan nenpòt pake an Oktòb pase a nan konferans NixCon la epi yo te mete yon patch sou li imedyatman nan enfrastrikti pwojè a. Sepandan, yo te divilge detay sou atak la sèlman yon ane apre. Pwoblèm nan te gen rapò ak itilizasyon fonksyon GitHub Actions nan depo Nixpkgs GitHub la, ki lye ak evènman "pull_request_target" la epi ki fè verifikasyon otomatik sou nouvo pull requests.
Kontrèman ak evènman "pull_request" la, handler ki nan "pull_request_target" yo gen aksè lekti/ekriti nan anviwònman konstriksyon an, ki mande atansyon espesyal lè w ap travay ak done ki pase nan yon demann pull. Youn nan handler ki lye ak "pull_request_target" la te valide fichye "OWNERS" ki te bay nan demann pull la lè li te konstwi epi li te rele sèvis piblik codeowners-validator la: etap sa yo: — itilizasyon: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf ak: ref: refs/pull/$/merge chemen: pr — kouri: nix-build base/ci -A codeownersValidator — kouri: rezilta/bin/codeowners-validator anviwònman: OWNERS_FILE: pr/ci/OWNERS
Pwoblèm nan sete ke si fichye OWNERS la te mal fòmate, zouti codeowners-validator la t ap voye kontni chèn mal fòme a nan jounal estanda ki aksesib piblikman an. Atak la te konsiste de mete yon lyen senbolik ki rele OWNERS nan demann rale a, ki lye ak fichye ".credentials" la, ki estoke kalifikasyon nan anviwònman konstriksyon an. Kidonk, tretman fichye sa a te lakòz yon erè epi premye liy lan, ki gen jeton aksè depo a, te voye nan jounal piblik la.

Anplis de sa, yo te jwenn yon lòt vilnerabilite nan fonksyon ki verifye règ editorconfig yo. etap sa yo: — non: Jwenn lis fichye ki chanje yo nan PR kouri: gh api […] | jq [ … ] > «$HOME/changed_files» — itilizasyon: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 avèk: ref: refs/pull/$/merge — non: Tcheke EditorConfig kouri: cat «$HOME/changed_files» | xargs -r editorconfig-checker
Nan ka sa a, pwoblèm nan sete itilizasyon zouti "xargs" la pou egzekite editorconfig-checker ak chak fichye nan demann pull la. Piske non fichye yo pa t valide, yon atakè te kapab mete yon fichye ki gen karaktè espesyal nan demann pull la, ki ta trete kòm agiman liy kòmand lè y ap egzekite editorconfig-checker. Pa egzanp, lè w ap kreye yon fichye "--help", editorconfig-checker ta montre yon endikasyon sou opsyon ki disponib yo.
Sous: opennet.ru
