Zranitelnost v obslužné rutině akcí GitHubu umožnila kompromitaci balíčků v Nixpkgs.

Byly odhaleny zranitelnosti v obslužných rutinách akcí GitHub, které se automaticky vyvolávají při odesílání žádostí o změnu (pull request) do repozitáře balíčků Nixpkgs, používaného v distribuci NixOS a ekosystému správce balíčků Nix. Zranitelnost umožňovala neoprávněnému uživateli extrahovat token, který uděloval přístup pro čtení a zápis ke zdrojovému kódu všech balíčků hostovaných v Nixpkgs. Tento token umožňoval přímou úpravu libovolného balíčku prostřednictvím repozitáře Git projektu, čímž se obešly procesy kontroly a schvalování.

Schopnost kompromitovat Nixpkgs a vložit vlastní kód do libovolného balíčku byla demonstrována bezpečnostními výzkumníky v říjnu loňského roku na konferenci NixCon a byla okamžitě opravena v infrastruktuře projektu. Podrobnosti o útoku však byly zveřejněny až o rok později. Problém se týkal používání obslužných rutin akcí GitHub v repozitáři Nixpkgs GitHub, které jsou vázány na událost „pull_request_target“ a provádějí automatické kontroly nových požadavků na pull request.

Na rozdíl od události „pull_request“ mají obslužné rutiny v „pull_request_target“ udělen přístup pro čtení/zápis do prostředí sestavení, což vyžaduje zvláštní opatrnost při práci s daty předávanými v žádosti o načtení. Jedna z obslužných rutin navázaných na „pull_request_target“ ověřila soubor „OWNERS“ poskytnutý v žádosti o načtení sestavením a voláním utility codeowners-validator: kroky: — použití: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf s: ref: refs/pull/$/merge cesta: pr — spuštění: nix-build base/ci -A codeownersValidator — spuštění: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

Problém byl v tom, že pokud byl soubor OWNERS naformátován nesprávně, utilita codeowners-validator vypsala obsah chybně formátovaného řetězce do standardního, veřejně přístupného protokolu. Útok spočíval v umístění symbolického odkazu s názvem OWNERS do požadavku na stažení, který by odkazoval na soubor „.credentials“, jenž ukládá přihlašovací údaje v prostředí sestavení. Zpracování tohoto souboru proto vedlo k chybě a první řádek obsahující token pro přístup k repozitáři byl vypsán do veřejného protokolu.

 Zranitelnost v obslužné rutině akcí GitHubu umožnila kompromitaci balíčků v Nixpkgs.

Dále byla nalezena další zranitelnost v obslužné rutině, která kontroluje pravidla editorconfig. kroky: — název: Získání seznamu změněných souborů z PR spuštění: gh api […] | jq [ … ] > «$HOME/changed_files» — použití: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 s: ref: refs/pull/$/merge — název: Kontrola EditorConfig spuštění: cat «$HOME/changed_files» | xargs -r editorconfig-checker

V tomto případě byl problém v použití utility „xargs“ ke spuštění příkazu editorconfig-checker s každým souborem v žádosti o stažení. Protože názvy souborů nebyly ověřeny, mohl útočník do žádosti o stažení zahrnout soubor obsahující speciální znaky, které by byly při spuštění editorconfig-checker zpracovány jako argumenty příkazového řádku. Například při vytváření souboru „--help“ by editorconfig-checker zobrazil nápovědu k dostupným možnostem.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster