Pagure'i ja OBS'i haavatavused, mis vÔimaldasid Fedora ja openSUSE hoidlates pakettide kompromiteerimist

Fenriski turva-uuringute teadlased avaldasid teavet haavatavuste kohta Pagure'i ja OBS (Open Build Service) tööriistades, mis vĂ”imaldasid kompromiteerida Fedora ja openSUSE distribuutide paketihaldusplaane. Teadlased demonstreerisid vĂ”imalust teostada rĂŒnnak, mis vĂ”imaldab kĂ€ivitada juhuslikku koodi Pagure'i ja OBS'i serverites, mida sai kasutada muudatuste sisestamiseks Fedora ja openSUSE hoidlatesse.

Fedora koode ja pakettide metaandmeid koostöös kasutatav Platvorm Pagure'il on avastatud 4 haavatavust. Tuvastatud probleemide Ă€rakasutamiseks on vajalik kasutajakonto olemasolu Pagure'is, mida saab soetada igaĂŒhel (hetkel on Pagure.io-s registreeritud 24899 kasutajat). Kolm probleemi vĂ”imaldavad lugeda faile sĂŒsteemis ja ĂŒks probleem vĂ”imaldab kĂ€ivitada oma koodi. serveril. Probleemid avastati 1. jaanuaril 2024, teatati bugzilla.redhat.com kaudu 25. aprillil 2024 ja kĂ”rvaldatakse Pagure'is kolme tunni jooksul.

  • CVE-2024-4981 ja CVE-2024-47515 haavatavused tulenevad sĂŒmboolsete linkide ebaĂ”igest töötlemisest failide vĂ€rskendamise ja arhiivide genereerimise funktsioonides. Need haavatavused vĂ”imaldavad lugeda serveri kohalikke faile, nĂ€iteks pÀÀseb ligi administraatori seansi parameetreid sisaldavale Pagure faili sisule ning kasutada selle Ă”igusi. Haavatavuse Ă€ra kasutamine funktsioonis _update_file_in_git() seisneb Pagures uue repo loomises; komiti lisamises uue failiga, mis on loodud sĂŒmboolse lingina soovitud sĂŒsteemifailile; avades selle faili redigeerimiseks veebi liideses.
  • Haavatavus (CVE-2024-4982) funktsioonis view_issue_raw_file() vĂ”imaldab pÀÀseda baaskaustast vĂ€lja, kui pĂ€ringu Issue parameetrites on mĂ€rgitud sĂŒmbolid "/..". Probleem vĂ”imaldab lugeda sĂŒsteemi faile vastavalt veebiliidese all töötava protsessi juurdepÀÀsuĂ”igustele. NĂ€iteks saab faili /etc/passwd vaatamiseks avada lehe "http://pagure.local:5000/your-repository/issue/raw/../../../../../../../etc/passwd".
  • Haavatavus (CVE-2024-47516) funktsioonis PagureRepo.log() vĂ”imaldab sisestada enda kĂ€ske ja kĂ€ivitada koodi serveris. Probleem tuleneb sellest, et faili muutmisajaloo vaatamisel web-liidese kaudu kutsub see esile kĂ€su „git” koos haru identifikaatori edastamisega kĂ€sureas (nĂ€iteks „/usr/bin/git --pretty=oneline --abbrev-commit -- README.md”). Identifikaatori Ă”igsust ei kontrollita, seega vĂ”ib selle asemel edastada mistahes kĂ€surea valiku, nĂ€iteks „--output=/tmp/foo.bar” vĂ€ljundi suunamiseks faili. RĂŒndaja vĂ”ib faili sĂŒsteemis ĂŒle kirjutada, saates jĂ€rgmise kujuga pĂ€ringu: http://pagure.local:5000/test/history/README.md?identifier=--output=/tmp/foo.bar

    Pagure töötab git-kasutajana, mistĂ”ttu saab ĂŒmberkirjutada ainult selle kasutaja faile. Oma koodi serveris kĂ€ivitamiseks saab kasutada teenust, mis vĂ”imaldab juurdepÀÀsu hoidlatele SSH kaudu, kĂ€ivitades kĂ€su «bash -c /usr/libexec/pagure/aclchecker.py». RĂŒndaja vĂ”ib haavatavust kasutada faili «/srv/git/.bashrc» ĂŒmberkirjutamiseks ning see fail kĂ€ivitatakse bash kĂ€sutĂ€ituri poolt, kui sellele hoidlale SSH kaudu juurde pÀÀseb.

    RĂŒnnak koosneb registreerimisest Pagure sĂŒsteemis, hoidla loomise, hoidlasse faili README.md lisamisega, mille kommitimĂ€rkus on delikaatses vormis «|| /bin/bash» ning pĂ€ringu saatmisega «http://pagure.local:5000/test/history/README.md?identifier=—output=/srv/git/.bashrc». Nende sammude kĂ€igus kirjutatakse faili «/srv/git/.bashrc» rida «34a5c43 || /bin/bash». Loodud faili «/srv/git/.bashrc» kĂ€ivitamiseks piisab juhul, kui ĂŒhendate hoidlasse SSH kaudu oma kasutajakonto kaudu. Koodi tĂ€itmine git-kasutaja Ă”igustes Pagure serveris vĂ”imaldab kontrollida kĂ”iki hoidlate sisu paketiga.

OBS (Open Build Service) platvormil, mida kasutatakse openSUSE-s ja mĂ”nedes teistes distributsioonides pakettide koostamiseks, tuvastati ĂŒks haavatavus (CVE-2024-22033), mis vĂ”imaldab serveris oma koodi kĂ€ivitada. Haavatavus avastati 27. juunil 2024, teavitati openSUSE projekti 29. juunil ja kĂ”rvaldatakse 10. juulil.

Haavatavus on olemas teenuses „obs-service-download_url“, kus puudus nĂ”uetekohane URL-i kontroll, mis kehtis wget utiliidi kĂ€ivitamisel skriptist, mis laadis koodi OBS-i. RĂŒndaja vĂ”ib mÀÀrata OBS-teenuses koostatud paketi konfiguratsiooni, kus laadimis-URL-i asemel on mÀÀratud wget-i kĂ€surea argument, nĂ€iteks: —output-document=/tmp/test</param> tempfile</param>

Viga URL-i puudumise korral wget-i kĂ€ivitamisel ĂŒmbersĂ”itmiseks on nĂ€idatud valik „download-manifest“, mis lubab mÀÀrata URL-ide nimekirja eraldi failis. Ülaltoodud nĂ€ide toob kaasa kĂ€su kĂ€ivitamise: /usr/bin/wget -i /srv/obs/service/XXXXX/src/tempfile -4 —output-document=/tmp/test

mis, mis vĂ”imaldab salvestada faili /tmp/test sisu, mis on laaditud lingilt, mis on mÀÀratud failis /srv/obs/service/XXXXX/src/tempfile, ja mille kood on laaditud rĂŒndaja poolt OBS-i kaudu build.opensuse.org'ist, mis vĂ”imaldab vaba registreerimist. Lisaks serveris faili ĂŒle kirjutamise vĂ”imalusele, vĂ”ib rĂŒndaja saata endale ka ĂŒkskĂ”ik millise faili, asendades „—output-document” parameetri „—post-file” valikuga, nĂ€iteks „—post-file=/etc/passwd”. Seega vĂ”ib rĂŒndaja lugeda ja kirjutada serveri faile, kui seda lubavad Ă”igused, millega OBS-i teenus töötab.

Kuna faili kirjutamise vĂ”imaluse muutmine serveris koodi tĂ€itmiseks on keeruline, pakkusid teadlased vĂ€lja meetodi, mis koosneb kahest etapist. Need kaks etappi on vajalikud, kuna rĂŒndaja saab luua faili „.wgetrc” wget'i seadistustega, kuid sellest ei piisa kĂ€skude kĂ€ivitamiseks. Kuid samas saab lĂ€bi „.wgetrc” luua tingimusi, et tĂ€ita sĂŒsteemis igasuguseid Programme, kuid ilma argumentide edastamiseta. Suvalise koodi kĂ€ivitamiseks on soovitatud kĂ€ivitada programm „prove”, mis kĂ€sitleb konfigureerimisfaili „.proverc”, kus on vĂ”imalik mÀÀrata valikut „—exec” igasuguste koodide tĂ€itmiseks.

Esialgses etapis luuakse kasutaja "obsservicerun" kodukaustas ĂŒlaltoodud manipuleerimiste kaudu fail " .proverc", mis sisaldab kĂ€sklusi, mis tĂ€idetakse protsessi "prove" kĂ€ivitamisel. Teises etapis luuakse fail ".wgetrc" parameetriga "use-askpass=/usr/bin/prove", mis kutsub ĂŒles "prove". PĂ€rast nende failide ilmumist piisab, kui luua allalaadimise tingimused mis tahes andmete jaoks wget'i abil, ja see toob kaasa rĂŒndaja koodi kĂ€ivitamise serveris kasutaja "obsservicerun" Ă”igustes. Kasutaja "obsservicerun" Ă”igused on piisavad, et saada juurdepÀÀs saadetiste allkirjastamiseks kasutatavatele vĂ”tmetele OBS-i kasutajate seas.

TĂ€iendav: SUSE tootejulgeoleku meeskond usub, et haavatavuse oht OBS-is on liialdatud ning teadlaste vĂ€ide, et probleem vĂ”imaldab kompromiteerida kĂ”iki pakette openSUSE distributsioonis, ei vasta tĂ”ele. TĂ”detakse, et build.opensuse.org infrastruktuuri teenused kĂ€ivituvad isoleeritud konteinerites, mis luuakse uuesti ja ei sisalda kriitilist teavet. Tuvastatud haavatavus hinnatakse ohtlikuks, kuid ei ole piisav openSUSE ehitusinfrastruktuuri ja loodud pakettide kompromiteerimiseks. Samuti on mĂ€rgitud, et OBS-i liideses kirjeldatud tegevused, mis on rĂŒnnaku nĂ€ites kajastatud, oleks saanud toimuda ainult OBS-i variandis, mis on kohalikult installitud arendaja tööjaamas.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster