A Guix csomagkezelőben sebezhetőségeket találtak (CVE nem lett kijelölve) a „guix substitute” belső parancs megvalósításában, amelyet a guix-daemon háttérfolyamat automatikusan hív meg csomagtelepítési műveletek végrehajtásakor. Ez a parancs arra szolgál, hogy már elkészült bináris csomagokat töltsön le külső szerverekről, ellenőrizzék azok teljességét digitális aláírás segítségével. A legnagyobb veszélyt egy olyan sebezhetőség jelenti, amely lehetővé teszi, hogy távolról kódot futtassanak a felhasználó rendszerén a guix-daemon háttérfolyamat által használt jogosultságokkal.
A probléma minden guix-daemon folyamattal rendelkező konfigurációt érint, függetlenül attól, hogy root jogosultsággal vagy nem privilegizált felhasználóként fut-e. A sebezhetőség kihasználásához elegendő bármilyen kísérlet a kész bináris csomagok letöltésére a a szerver, a támadó által irányított helyről. A kártékony szerver nem szükséges, hogy kifejezetten ki legyen választva vagy a felhasználó beállításaiban meg legyen adva — az definiálható a „--discover” opció segítségével, amely lehetővé teszi a szerver helyettesítését MITM-támadás során. Azokban a konfigurációkban, ahol a guix-daemon emelt jogosultságokkal fut, a helyi felhasználó támadást indíthat, ha hozzáférése van a háttérfolyamathoz egy Unix socketen (alapértelmezés szerint minden felhasználó számára elérhető).
A sebezhetőség a „restore-file” kezelőben található, amely a csomag betöltésekor csomagot bont ki anélkül, hogy megvárná a teljes betöltést és a digitális aláírás általi ellenőrzést. A probléma annak hiányából fakad, hogy nem ellenőrzi a „.”, „/” és „..” karakterek meglétét az archívumban elhelyezett fájlútvonalakban. A támadó hamis fájlnevek archívumba való beillesztésével tetszőleges fájl írását érheti el a fájlrendszer bármely területére, amennyiben azt a guix-daemon háttérfolyamatának jogosultságai lehetővé teszik.
A saját kód futtatásának megszervezésére például hozzá lehet adni egy automatikusan elinduló szkriptet, mint például a „~/.bashrc” vagy a „~/.profile”, vagy módosítani lehet a „~/.ssh/authorized_keys” fájlt SSH kulcsokkal. Ha több felhasználós rendszerben a guix-daemon a root felhasználóként fut, a támadó felülírhatja a jelszavakat tartalmazó fájlokat vagy a rendszer szkriptjeit.
A hamis szerverek létrehozásának lehetősége a rosszindulatú csomagok terjesztésére abból adódik, hogy a rendelkezésre álló bináris csomagok metainformációinak (narinfo) letöltési folyamata (fetch-narinfos) nem ellenőrizte a szerver tanúsítványát, bízva abban, hogy a metainformációk többségét digitális aláírás hitelesíti. Mint kiderült, az aláírás nem terjedt ki a csomag letöltési URL-jére, így azt anélkül lehetett manipulálni, hogy a metainformációk épsége sérült volna. Végső soron a hamis csomagot elutasították volna, mert a digitális aláírással hitelesített hash ellenőrzése nem teljesült, de ez az ellenőrzés a kibővítették során, ahol a fájlnevekben a speciális karakterekkel kapcsolatos probléma merült fel.
A «guix substitute» parancs mellett a sebezhető «restore-file» kezelő szerepet játszik a «guix offload», «guix archive —extract» és «guix challenge» parancsokban is, amelyeken keresztül az sebezhetőséget szintén ki lehet használni. A sebezhetőség blokkolásának alternatívájaként javasolt a «—no-substitutes» opció egyértelmű megadása minden guix parancsban. A sebezhetőséget a Guix kódalapjába beépítették. A felhasználóknak javasolt azonnal telepíteni a fejlesztők által készült guix és guix-daemon frissítéseket.
A Guix említett problémája mellett további három sebezhetőséget is megszüntettek:
- A bináris csomagok manipulálásának lehetősége, mivel a fetch-narinfos kezelő nem ellenőrzi a kért csomag és a visszatérített metainformációk megfelelőségét. A sebezhetőség felhasználható a kért csomag elavult verziójának átadására, amely sebezhetőségeket tartalmaz.
- A rendszer tetszőleges fájljainak első sorának tartalmának meghatározása a helyi felhasználó által egy «file://» URI-val küldött kérés átadásával («—substitute-urls file:///etc/shadow»). Ha a guix-daemon root jogosultságokkal fut, akkor elolvassa a kért fájlt, meghatározza, hogy az nem metainformáció, és hibát generál, amelynek szövegében említést nyer a nem feldolgozott sor.
- A külső adattár ("..\/..\/..\/..\/newfile") speciálisan kialakított nevének megadása a "guix pull" és "guix time-machine" parancsok végrehajtásakor lehetővé teszi, hogy a kötelező commit információkat tetszőleges meglévő fájlba rögzítsük a fájlrendszerben, ha a tartalma hasonlít a Scheme nyelvű sorok listájára. A sebezhetőség DoS-támadásokhoz használható, de nem zárható ki, hogy a /proc ál fájlrendszer ügyes manipulációival veszélyesebb manipulációkat érjünk el a rendszeren.
Forrás: opennet.ru
