Ranljivost u upravitelju paketa Guix koja omogućava daljinsko izvršavanje koda u sustavu

U paketu upravitelja Guix otkrivene su ranjivosti (CVE nisu dodijeljeni) u implementaciji unutarnje naredbe „guix substitute“, koja se automatski poziva pozadinskim procesom guix-daemon prilikom izvođenja operacija instalacije paketa. Naredba se koristi za preuzimanje već sastavljenih binarnih paketa s vanjskih poslužitelja uz provjeru njihove cjelovitosti putem digitalnog potpisa. Najopasnija ranjivost omogućava daljinsko izvršavanje koda na sustavu korisnika s pravima pod kojima se izvršava pozadinski proces guix-daemon.

Problem se odnosi na sve konfiguracije s procesom guix-daemon, bez obzira pokreće li ga root ili neprivilegirani korisnik. Za iskorištavanje ranjivosti dovoljna je bilo kakva pokušaj preuzimanja gotovih binarnih paketa s poslužitelja, pod kontrolom napadača. Pri tome zlonamjerni server ne mora biti izričito odabran ili naveden u korisničkim postavkama — može biti određen pomoću opcije „—discover“, što omogućava substituciju poslužitelja tijekom MITM napada. U konfiguracijama u kojima je guix-daemon pokrenut s povišenim privilegijama, lokalni korisnik može izvesti napad ako ima mogućnost povezivanja na pozadinski proces putem Unix socket-a (po defaultu dostupan svim korisnicima).

Ranjivost se pojavljuje u obradi „restore-file“, koja se koristi za raspakivanje dok se paket učitava, bez čekanja na njegovo potpuno učitavanje i verifikaciju preuzete arhive putem digitalnog potpisa. Problem je uzrokovan nedostatkom provjere prisutnosti znakova „.“, „/“ i „..“ u putanjama datoteka smještenih u arhivu. Kroz substituciju u arhivu netočnih imena datoteka, napadač može postići zapisivanje proizvoljne datoteke u bilo kojem području datotečnog sustava, koliko dopuštaju prava pod kojima se izvršava pozadinski proces guix-daemon.

Za organizaciju izvršenja vlastitog koda u sustavu, na primjer, može se dodati automatski pokretani skript, poput „~/ .bashrc“ ili „~/ .profile“, ili promijeniti datoteka „~/ .ssh/ authorized_keys“ s SSH ključevima. Ako se u višekorisničkom sustavu guix-daemon izvršava pod korisnikom root, napadač može prebrisati datoteku s lozinkama ili sustavske skripte.

Mogućnost stvaranja lažnih poslužitelja za distribuciju zlonamjernih paketa uzrokovana je time što procedura preuzimanja metapodataka (narinfo) o dostupnim binarnim paketima (fetch-narinfos) nije provodila provjeru certifikata poslužitelja, oslanjajući se na to da je glavnina metapodataka potpisana digitalnim potpisom. Kako se ispostavilo, potpis nije pok coverao URL za preuzimanje paketa, što je omogućilo njegovu zamjenu bez kršenja cjelovitosti metapodataka. Na kraju bi lažni paket bio odbijen zbog neuspješnog prolaska provjere njegovog sadržaja prema hash-u, potpisanom digitalnim potpisom, ali se ova provjera provodila nakon faze raspakiranja, tijekom koje se javljao problem sa specijalnim znacima u imenima datoteka.

Osim naredbe «guix substitute», ranjivi obrtnik «restore-file» uključen je u rad naredbi «guix offload», «guix archive —extract» i «guix challenge», preko kojih se također može iskoristiti ranjivost. Kao zaobilaženje za blokiranje ranjivosti predlaže se izričito navođenje opcije «—no-substitutes» u svim guix naredbama. Ispravak ranjivosti uključen je u kodnu bazu Guix. Korisnicima se preporučuje da odmah instaliraju ažurirane verzije guix i guix-daemon.

Osim navedene problema u Guix, ispravljene su još tri ranjivosti:

  • Mogućnost zamjene binarnih paketa uslijed nedostatka provjere usklađenosti zatraženog paketa s vraćenim metapodacima u obrtniku fetch-narinfos. Ranjivost se može iskoristiti za isporuku zastarjele verzije zatraženog paketa, koja sadrži ranjivosti.
  • Definiranje sadržaja prve linije proizvoljnih datoteka na sustavu putem slanja zahtjeva lokalnog korisnika s URI-jem «file://» («—substitute-urls file://etc/shadow»). Ako se guix-daemon izvršava s privilegijama root, on će pročitati zatraženu datoteku, odrediti da ona nije metapodatak i izbaciti pogrešku, u čijem će se tekstu spominjati linija koju nije uspjelo obraditi.
  • Navođenje specijalno oblikovanog imena vanjskog repozitorija («..\/..\/..\/..\/newfile») prilikom izvršavanja komandi «guix pull» i «guix time-machine» omogućuje zapis podataka s informacijama o commit-u u bilo koju postojeću datoteku u datotečnom sustavu, pod uvjetom da njezin sadržaj podsjeća na popis redaka na jeziku Scheme. Ranljivost se može koristiti za DoS napade, ali nije isključeno da se putem lukavih manipulacija s pseudo-FS \/proc mogu postići opasnije manipulacije sustavom.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster