Ranjivost u rukovatelju GitHub Actions omogućila je kompromitiranje paketa u Nixpkgs.

Otkrivene su ranjivosti u rukovateljima akcijama GitHub-a, koji se automatski pozivaju prilikom slanja zahtjeva za povlačenjem u repozitorij paketa Nixpkgs, koji se koristi u distribuciji NixOS-a i ekosustavu upravitelja paketa Nix. Ranjivost je omogućila neovlaštenom korisniku izdvajanje tokena koji mu omogućuje pristup čitanju i pisanju izvornog koda svih paketa smještenih u Nixpkgs-u. Ovaj token je omogućio izravnu izmjenu bilo kojeg paketa putem Git repozitorija projekta, zaobilazeći procese pregleda i odobravanja.

Mogućnost kompromitiranja Nixpkgsa i umetanja prilagođenog koda u bilo koji paket demonstrirali su sigurnosni istraživači prošlog listopada na konferenciji NixCon i odmah je ugrađena u infrastrukturu projekta. Međutim, detalji napada otkriveni su tek godinu dana kasnije. Problem se odnosio na korištenje rukovatelja GitHub Actions u Nixpkgs GitHub repozitoriju, koji su vezani za događaj "pull_request_target" i provode automatizirane provjere novih zahtjeva za povlačenjem.

Za razliku od događaja "pull_request", rukovateljima u "pull_request_target" odobren je pristup čitanju/pisanju u okruženju za izgradnju, što zahtijeva posebnu pažnju pri radu s podacima proslijeđenim u zahtjevu za povlačenje. Jedan od rukovatelja vezanih za "pull_request_target" validirao je datoteku "OWNERS" navedenu u zahtjevu za povlačenje izgradnjom i pozivanjem uslužnog programa codeowners-validator: koraci: — koristi: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf s: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

Problem je bio u tome što bi, ako bi datoteka OWNERS bila neispravno formatirana, uslužni program codeowners-validator ispisao sadržaj neispravnog niza u standardni, javno dostupan zapisnik. Napad se sastojao od postavljanja simboličke poveznice pod nazivom OWNERS u zahtjev za povlačenjem, koja bi pokazivala na datoteku ".credentials" koja pohranjuje vjerodajnice u okruženju za izradu. Posljedično, obrada ove datoteke rezultirala je pogreškom i prvi redak, koji sadrži token za pristup repozitoriju, ispisan je u javni zapisnik.

 Ranjivost u rukovatelju GitHub Actions omogućila je kompromitiranje paketa u Nixpkgs.

Osim toga, pronađena je još jedna ranjivost u rukovatelju koji provjerava pravila editorconfig. koraci: — naziv: Dohvaćanje popisa promijenjenih datoteka iz PR-a pokrenuti: gh api […] | jq [ … ] > «$HOME/changed_files» — koristi: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 s: ref: refs/pull/$/merge — naziv: Provjera EditorConfig pokrenuti: cat «$HOME/changed_files» | xargs -r editorconfig-checker

U ovom slučaju, problem je bio korištenje uslužnog programa "xargs" za pokretanje editorconfig-checkera sa svakom datotekom u zahtjevu za povlačenjem. Budući da nazivi datoteka nisu bili provjereni, napadač je mogao u zahtjev za povlačenjem uključiti datoteku koja sadrži posebne znakove, koji bi se obradili kao argumenti naredbenog retka prilikom pokretanja editorconfig-checkera. Na primjer, prilikom stvaranja datoteke "--help", editorconfig-checker bi prikazao savjet o dostupnim opcijama.

Izvor: opennet.ru

Dodajte komentar