Vulnerabilities in Pagure and OBS that permitted package compromise in Fedora and openSUSE repositories

A Fenrisk biztonsági kutatói feltárták a Pagure és az OBS (Open Build Service) eszközeiben található sebezhetőségeket, amelyek lehetővé tették a Fedora és openSUSE disztribúciók csomaggeneráló infrastruktúráinak kompromittálását. A kutatók bemutatták, hogy lehetséges támadást végrehajtani, amely lehetővé tette a tetszőleges kód végrehajtását a Pagure és az OBS szerverein, ezáltal hozzájárulva a Fedora és openSUSE tárolóiban található csomagok módosításához.

A Fedora által a kód és a csomagok metainformációinak közös munkájára használt Pagure platformon 4 sebezhetőség került elő. A felfedezett problémák kihasználásához szükséges egy fiók a Pagure szolgáltatásban, amelyet bárki megszerezhet (jelenleg 24899 felhasználó van regisztrálva a Pagure.io-n). Három probléma lehetővé teszi fájlok olvasását a rendszerben, míg egy probléma lehetővé teszi a kódunk végrehajtását. szerveren. A problémákat 2024. január 1-jén azonosították, a bugzilla.redhat.com-on 2024. április 25-én jelentették, és 3 órán belül orvosolták a Pagure-ban.

  • A CVE-2024-4981 és CVE-2024-47515 sebezhetőségek a szimbolikus linkek nem megfelelő kezeléséből adódnak a fájl frissítési és archívum-generáló funkciók során. A sebezhetőségek lehetővé teszik a helyi fájlok tartalmának olvasását a szerveren, például hozzáférést nyújtanak a Pagure adminisztrátorának munkamenet-paramétereit tartalmazó fájlhoz, így az adminisztrátori jogosultságokkal való hozzáféréshez. A _update_file_in_git() funkció kihasználása a Pagure-ban történő tároló létrehozásához; egy olyan commit hozzáadásához, amely új fájlt tartalmaz, amely szimbolikus linkként van létrehozva a kívánt rendszerfájlra; e fájl szerkesztésének megnyitásához a webes felületen.
  • A view_issue_raw_file() funkcióban található sebezhetőség (CVE-2024-4982) lehetővé teszi a gyökérkönyvtáron túli hozzáférést a "\/.." karakterek megadásával a kért Issue paramétereiben. A probléma lehetővé teszi fájlok olvasását a rendszerben, amennyiben a webes felület által futtatott folyamat hozzáférési jogai ezt lehetővé teszik. Például az \/etc\/passwd fájl megtekintéséhez megnyitható a "http:\/\/pagure.local:5000\/your-repository\/issue\/raw\/..\/..\/..\/..\/..\/..\/..\/etc\/passwd" oldal.
  • A sérülékenység (CVE-2024-47516) a PagureRepo.log() funkcióban lehetőséget ad arra, hogy a támadó saját parancsait helyettesítse és kódot hajtson végre a szerveren. A probléma abból adódik, hogy a fájl módosításának előzményeit nézve a webes felületen a "git" parancsot hívják meg a branch azonosítójának átadásával a parancssorban (például: "/usr/bin/git --pretty=oneline --abbrev-commit -- README.md"). Az azonosító helyességét nem ellenőrzik, így a támadó bármilyen parancssori opciót átadhat, például "--output=/tmp/foo.bar" a kimenet fájlba való átirányításához. A támadó a következő típusú kéréssel felülírhat egy fájlt a rendszerben: http://pagure.local:5000/test/history/README.md?identifier=--output=/tmp/foo.bar

    A Pagure a git felhasználó neve alatt fut, ezért csak ennek a felhasználónak a fájljait lehet felülírni. A támadó a SSH-n keresztüli hozzáférés biztosításával futtathat saját kódot a szerveren, amelynek során a "bash -c /usr/libexec/pagure/aclchecker.py" parancs generálódik. A támadó kihasználhatja a sérülékenységet a "srv/git/.bashrc" fájl felülírására, amely a bash parancsértelmező által lesz végrehajtva, amikor a repozitóriumhoz SSH-n keresztül hozzáférnek.

    A támadás azzal kezdődik, hogy beregisztrál a Pagure rendszerébe, létrehozza a repozitóriumot, hozzáadja a README.md fájlt a commit megjegyzésével, amely a következő formátumú: "|| /bin/bash", majd elküldi a kérést: http://pagure.local:5000/test/history/README.md?identifier=--output=/srv/git/.bashrc. E lépések során a "srv/git/.bashrc" fájlba be lesz írva egy sor, amely a következő formátumú: "34a5s43 || /bin/bash". A létrehozott "srv/git/.bashrc" fájl futtatásához elegendő SSH-n keresztül csatlakozni a repozitóriumhoz a saját fiókjával. A git felhasználói jogokkal végrehajtott kód az összes csomaggal rendelkező repozitórium tartalmának ellenőrzésére ad lehetőséget a Pagure szerveren.

Az OBS (Open Build Service) platformban, amelyet az openSUSE és néhány más disztribúción a csomagok összeállítására használnak, egy sérülékenységet (CVE-2024-22033) fedeztek fel, amely lehetővé teszi saját kód végrehajtását a szerveren. A sérülékenységet 2024. június 27-én azonosították, az openSUSE projektnek 2024. június 29-én jelentették, és 2024. július 10-én javították.

A sebezhetőség az «obs-service-download_url» szolgáltatásban található, ahol hiányzott a megfelelő URL-ellenőrzés, amelyet a wget eszköz indításakor alkalmaztak a forráskód OBS-be való letöltését végző scriptből. A támadó megadhatja az OBS szolgáltatásban a generált csomag konfigurációját, amelyben a letöltési URL helyett a wget parancssori opciót adhat meg, például: —output-document=\/tmp\/test tempfile

A wget URL nélküli indításakor fellépő hiba elkerülése érdekében a példában a «download-manifest» opció szerepel, amely lehetővé teszi URL-ek listájának megadását egy külön fájlban. A fenti példa a következő parancsot fogja végrehajtani: \/usr\/bin\/wget -i \/srv\/obs\/service\/XXXXX\/src\/tempfile -4 —output-document=\/tmp\/test

amely lehetővé teszi, hogy a \/tmp\/test fájlba mentse a letöltött tartalmat az \/srv\/obs\/service\/XXXXX\/src\/tempfile fájlban megadott URL alapján, amelyet a támadó a build.opensuse.org felületén keresztül tölthetett le, ahol szabad regisztráció lehetséges. A szerver fájljának felülírása mellett a támadó bármely fájlt is elküldhet magának, ha a «—output-document» opció helyett a «—post-file» opciót adja meg, például «—post-file=\/etc\/passwd». Így a támadó olvashat és írhat fájlokat a szerveren, amennyire azt az OBS szolgáltatás végrehajtási jogai lehetővé teszik.

A fájlba írás lehetőségét végrehajtási kóddá alakításához a kutatók egy két lépésből álló módszert javasoltak. Két lépés szükséges, mivel a támadó létrehozhat egy «.wgetrc» fájlt a wget beállításokkal, de ez nem elegendő a parancsok végrehajtásához. Ugyanakkor a «.wgetrc» fájl segítségével bármely program futtatásához szükséges feltételeket lehet létrehozni a rendszerben, de paraméterek átadása nélkül. Bárminemű kód futtatásához a «prove» program indítását javasolják, amely feldolgozza a «.proverc» konfigurációs fájlt, amely lehetővé teszi a «—exec» opció megadását bármely kód végrehajtásához.

Az első lépésben a fent említett manipulációk során a felhasználó "obsservicerun" otthoni katalógusában létrejön egy "proverc" nevű fájl, amely azokat a parancsokat tartalmazza, amelyeket a "prove" folyamat elindításakor hajtanak végre. A második lépésben létrejön egy "wgetrc" fájl a "use-askpass=\/usr\/bin\/prove" paraméterrel, amely a "prove" hívásához vezet. Miután ezek a fájlok létrejöttek, elegendő, ha létrehozzuk a szükséges feltételeket bármilyen adat letöltéséhez a wget segítségével, ami az "obsservicerun" felhasználói jogokkal rendelkező támadó kódjának futtatásához vezet a szerveren. Az "obsservicerun" felhasználói jogai elegendőek a kulcsok kinyerésére az OBS felhasználói számára a csomagok aláírásához.

Kiegészítés: A SUSE Termékvédelmi Csapat szerint az OBS sebezhetőségének veszélye túlságosan fel van értékelve, és a kutatók állítása, miszerint a probléma lehetővé teszi az összes csomag kompromittálását az openSUSE disztribúcióban, nem felel meg a valóságnak. Megjegyzik, hogy a build.opensuse.org infrastruktúrában futó szolgáltatások elszigetelt tartályok használatával működnek, amelyek újra létrehozva és kritikus információtól mentesen készülnek. A felfedezett sebezhetőséget veszélyesnek értékelik, de nem elegendőnek az openSUSE építési infrastruktúrájának és a kialakított csomagoknak a kompromittálásához. Ezen kívül megjegyezték, hogy az OBS felületén végzett, a támadási példában leírt műveletek csak a fejlesztő munkaállomásán helyben telepített OBS verziójában valósulhattak meg.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster