A GitHub Actions kezelőjében egy sebezhetőség tette lehetővé a Nixpkgs csomagjainak feltörését.

Felfedezték a GitHub Actions kezelők sebezhetőségeit, amelyek automatikusan meghívódnak a Nixpkgs csomagtárba küldött pull requestek során, és amelyeket a NixOS disztribúcióban és a Nix csomagkezelő ökoszisztémában használnak. A sebezhetőség lehetővé tette egy jogosulatlan felhasználó számára, hogy kinyerjen egy tokent, amely olvasási és írási hozzáférést biztosít a Nixpkgs-ben tárolt összes csomag forráskódjához. Ez a token lehetővé tette bármely csomag közvetlen módosítását a projekt Git tárházán keresztül, megkerülve a felülvizsgálati és jóváhagyási folyamatokat.

A Nixpkgs kompromittálásának és bármely csomagba egyéni kód beillesztésének képességét biztonsági kutatók mutatták be tavaly októberben a NixCon konferencián, és azonnal be is illesztették a projekt infrastruktúrájába. A támadás részleteit azonban csak egy évvel később hozták nyilvánosságra. A probléma a Nixpkgs GitHub repositoryjában található GitHub Actions kezelők használatával volt kapcsolatos, amelyek a "pull_request_target" eseményhez vannak kötve, és automatikus ellenőrzéseket végeznek az új pull requestek esetén.

A „pull_request” eseménnyel ellentétben a „pull_request_target” kezelői olvasási/írási hozzáférést kapnak a build környezethez, ami különös gondot igényel a pull requestben átadott adatokkal való munka során. A „pull_request_target”-hez kötött kezelők egyike a codeowners-validator segédprogram felépítésével és meghívásával validálta a pull requestben megadott „OWNERS” fájlt: lépések: — 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

A probléma az volt, hogy ha az OWNERS fájl helytelenül volt formázva, a codeowners-validator segédprogram a hibásan formázott karakterlánc tartalmát a szabványos, nyilvánosan elérhető naplóba írta ki. A támadás lényege egy OWNERS nevű szimbolikus link elhelyezése volt a pull requestben, amely a hitelesítő adatokat a build környezetben tároló ".credentials" fájlra mutatott. Következésképpen a fájl feldolgozása hibát eredményezett, és az első sor, amely a repository hozzáférési tokent tartalmazta, a nyilvános naplóba került.

 A GitHub Actions kezelőjében egy sebezhetőség tette lehetővé a Nixpkgs csomagjainak feltörését.

Ezenkívül egy másik sebezhetőséget találtak az editorconfig szabályokat ellenőrző kezelőben. lépések: — név: Módosított fájlok listájának lekérése a PR-ből run: gh api […] | jq [ … ] > «$HOME/changed_files» — használja: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — név: Az EditorConfig ellenőrzése run: cat «$HOME/changed_files» | xargs -r editorconfig-checker

Ebben az esetben a probléma az volt, hogy az „xargs” segédprogramot használták az editorconfig-checker futtatásához a pull requestben lévő minden egyes fájllal. Mivel a fájlnevek nem voltak validálva, a támadó speciális karaktereket tartalmazó fájlt is elhelyezhetett a pull requestben, amelyet parancssori argumentumként dolgozott fel a rendszer az editorconfig-checker futtatásakor. Például egy „--help” fájl létrehozásakor az editorconfig-checker egy tippet jelenített meg az elérhető beállításokról.

Forrás: opennet.ru

Hozzászólás