Kërkuesit e sigurisë nga kompania Fenrisk zbuluan informacione mbi dobësitë në mjetet Pagure dhe OBS (Open Build Service), që lejonin të kompromentoheshin infrastrukturat e formimit të paketave të distribuimit Fedora dhe openSUSE. Kërkuesit demonstruan mundësinë e kryerjes së një sulmi për të ekzekutuar kod të rastit në serverët me Pagure dhe OBS, e cila mund të përdorej për të futur ndryshime në paketat në repo të Fedora dhe openSUSE.
Në platformën Pagure, e cila përdoret në Fedora për bashkëpunim me kodin dhe metadatat e paketave, janë zbuluar 4 dobësi. Për të shfrytëzuar këto probleme është e nevojshme të kenë një llogari në shërbimin Pagure, që mund ta marrë çdokush (aktualisht në Pagure.io janë regjistruar 24899 përdorues). Tre probleme lejojnë të lexohen skedarët në sistem, ndërsa një problem lejon ekzekutimin e kodit të tyre në server. Problemet janë zbuluar më 1 janar 2024, janë raportuar nëpërmjet bugzilla.redhat.com më 25 prill 2024 dhe janë zgjidhur në Pagure brenda 3 orësh.
- Dobësitë CVE-2024-4981 dhe CVE-2024-47515 shkaktohen nga përpunimi i gabuar i lidhjeve simbolike në funksionet e përditësimit të skedarëve dhe krijimit të arkivave. Dobësitë lejojnë të lexohen përmbajtjet e skedarëve lokalë në server, për shembull, mund të zbulohet përmbajtja e skedarit me parametrat e sesionit të administratorit të Pagure dhe të arrihet akses në të drejtat e tij. Shfrytëzimi i dobësisë në funksionin _update_file_in_git() konsiston në krijimin e një repozitori në Pagure; shtimin e një komiti me një skedar të ri, i cili është krijuar si një lidhje simbolike në skedarin e dëshiruar të sistemit; hapjen e këtij skedari për editim në web-interface.
- DobĂ«sia (CVE-2024-4982) nĂ« funksionin view_issue_raw_file() lejon daljen pĂ«rtej katalogut bazĂ« pĂ«rmes specifikimit tĂ« simboleve "\/.." nĂ« parametrat e kĂ«rkuar tĂ« ĂĂ«shtjes. Problemi lejon tĂ« lexohen skedarĂ«t nĂ« sistem, sa lejojnĂ« tĂ« drejtat e aksesit tĂ« procesit nĂ«n tĂ« cilin ekzekutohet web-interface. PĂ«r shembull, pĂ«r tĂ« parĂ« skedarin \/etc\/passwd mund tĂ« hapet faqja "http:\/\/pagure.local:5000\/your-repository\/issue\/raw\/..\/..\/..\/..\/..\/..\/..\/etc\/passwd".
- Një vulnerabilitet (CVE-2024-47516) në funksionin PagureRepo.log() mundëson futjen e komandave të veta dhe ekzekutimin e kodit në server. Problemi shkaktohet nga fakti se gjatë shikimit të historisë së ndryshimeve të skedarit përmes ndërfaqes web, ekzekutohet një komandë "git" me kalimin e identifikuesit të degës në linjën e komandës (p.sh., "/usr/bin/git --pretty=oneline --abbrev-commit -- README.md"). Saktësia e identifikuesit nuk verifikohet, prandaj mund të kaloni çdo opsion të linjës së komandës, si për shembull, "--output=/tmp/foo.bar" për të redirektuar daljen në një skedar. Një sulmues mund të përshkruajë një skedar në sistem duke dërguar një kërkesë të këtij lloji: http://pagure.local:5000/test/history/README.md?identifier=--output=/tmp/foo.bar
Pagure ekzekutohet nën përdoruesin git, prandaj do të jetë e mundur të përshkruani vetëm skedarët e këtij përdoruesi. Për të organizuar ekzekutimin e kodit të tij në server, mund të përdorni një shërbim për qasje në depo përmes SSH, ku kur lidheni ekzekutohet komandë "bash -c /usr/libexec/pagure/aclchecker.py". Sulmuesi mund ta shfrytëzojë vulnerabilitetin për të përshkruar skedarin "/srv/git/.bashrc" dhe ky skedar do të ekzekutohet nga interpretu si bash kur lidheni me depo përmes SSH.
Sulmi përfshin regjistrimin në sistemin Pagure, krijimin e depozitës, shtimin e skedarit README.md me një shënim për komitimin si "|| /bin/bash" dhe dërgimin e një kërkese "http://pagure.local:5000/test/history/README.md?identifier=--output=/srv/git/.bashrc". Gjatë këtyre hapave, në skedarin "/srv/git/.bashrc" do të shkruhet një varg i tillë: "34a5c43 || /bin/bash". Për të ekzekutuar skedarin e krijuar "/srv/git/.bashrc", mjafton të lidheni me depo përmes SSH me llogarinë tuaj. Ekzekutimi i kodit me të drejtat e përdoruesit git në serverin Pagure lejon kontrollin e të gjithë përmbajtjes së depozitave me paketa.
Në platformën OBS (Open Build Service), e cila përdoret në openSUSE dhe disa distribuera të tjera për ndërtimin e paketave, është identifikuar një vulnerabilitet (CVE-2024-22033) që lejon ekzekutimin e kodit të vet në server. Vulnerabiliteti u identifikua më 27 qershor 2024, u njoftua projektit openSUSE më 29 qershor dhe u rregullua më 10 korrik.
Vulnerabiliteti ndodhet nĂ« shĂ«rbimin «obs-service-download_url», nĂ« tĂ« cilin mungonte kontrolli i duhur tĂ« URL-sĂ« qĂ« pĂ«rdorej gjatĂ« ekzekutimit tĂ« utilitarit wget nga skripti qĂ« bĂ«nte shkarkimin e kodit burimor nĂ« OBS. NjĂ« sulmues mund tĂ« pĂ«rcaktojĂ« nĂ« shĂ«rbimin OBS konfigurimin e paketĂ«s qĂ« formohet, ku nĂ« vend tĂ« URL-sĂ« pĂ«r shkarkimin e kodit do tĂ« tregojĂ« opsionin e komandĂ«s pĂ«r wget, pĂ«r shembull: âoutput-document=\/tmp\/test tempfile
PĂ«r tĂ« shmangur kthimin e gabimit gjatĂ« pĂ«rpjekjes pĂ«r tĂ« ekzekutuar wget pa URL, shembulli tregon opsionin «download-manifest», qĂ« lejon pĂ«rcaktimin e njĂ« liste URL nĂ« njĂ« skedar tĂ« veçantĂ«. Shembulli i mĂ«sipĂ«rm do tĂ« çojĂ« nĂ« ekzekutimin e komandĂ«s: \/usr\/bin\/wget -i \/srv\/obs\/service\/XXXXX\/src\/tempfile -4 âoutput-document=\/tmp\/test
i cili lejon tĂ« shkruhet nĂ« skedarin \/tmp\/test pĂ«rmbajtja e shkarkuar nga lidhja e specifikuar nĂ« skedarin \/srv\/obs\/service\/XXXXX\/src\/tempfile nga kodi qĂ« Ă«shtĂ« shkarkuar nga sulmuesi nĂ« OBS pĂ«rmes ndĂ«rfaqes build.opensuse.org, e cila lejon regjistrimin e lirĂ«. PĂ«rveç rilidhjes sĂ« skedarit nĂ« server, sulmuesi gjithashtu mund tĂ« dĂ«rgojĂ« ndonjĂ« skedar pĂ«r vete, duke treguar nĂ« vend tĂ« «âoutput-document» opsionin «âpost-file», pĂ«r shembull, «âpost-file=\/etc\/passwd». KĂ«shtu, sulmuesi mund tĂ« lexojĂ« dhe shkruajĂ« skedarĂ« nĂ« server, sa i lejojnĂ« tĂ« drejtat e qasjes, sipas tĂ« cilave shĂ«rbimi OBS ekzekutohet.
PĂ«r tĂ« kthyer mundĂ«sinĂ« e shkruarjes nĂ« skedar nĂ« ekzekutimin e kodit nĂ« server, studiuesit propozuan njĂ« metodĂ«, e cila pĂ«rbĂ«het nga dy faza. TĂ« dy fazat janĂ« tĂ« nevojshme, nĂ« mĂ«nyrĂ« qĂ« sulmuesi tĂ« krijojĂ« skedarin «.wgetrc» me cilĂ«simet pĂ«r wget, por kjo nuk mjafton pĂ«r ekzekutimin e komandave. MegjithatĂ«, pĂ«rmes «.wgetrc» Ă«shtĂ« e mundur tĂ« krijohen kushte pĂ«r ekzekutimin nĂ« sistem tĂ« çdo programi, por pa i kaluar asnjĂ« argument. PĂ«r tĂ« ekzekutuar kodin e rastit, Ă«shtĂ« propozuar tĂ« ekzekutohet programi «prove», i cili pĂ«rpunon skedarin e konfigurimit «.proverc», i cili lejon pĂ«rcaktimin e opsionit «âexec» pĂ«r ekzekutimin e çdo kodi.
Në fazën e parë, duke kaluar përmes manipulimeve të përmendura më sipër me "download-manifest" në katalogun e shtëpisë së përdoruesit "obsservicerun", krijohet një skedar " .proverc", i cili përmban komandat që do të ekzekutohen gjatë fillimit të procesit "prove". Në fazën e dytë, krijohet një skedar ".wgetrc" me parametrin "use-askpass=\/usr\/bin\/prove", i cili çon në thirrjen e "prove". Pasi të shfaqen këto skedare, mjafton të krijosh kushte për të shkarkuar ndonjë të dhënë përmes wget dhe kjo do të çojë në ekzekutimin e kodit të sulmuesit në server me të drejtat e përdoruesit "obsservicerun". Të drejtat e përdoruesit "obsservicerun" janë të mjaftueshme për të nxjerrë nga repositorët çelësat që përdoren nga përdoruesit OBS për të vërtetuar paketat.
ShtesĂ«: Ekipi i SigurisĂ« sĂ« Produkteve nĂ« SUSE beson se rreziku nga dobĂ«sia nĂ« OBS Ă«shtĂ« i ekzagjeruar dhe deklarata e kĂ«rkuesve se problemi lejon tĂ« kompromentohen tĂ« gjitha paketat nĂ« distribucionin openSUSE nuk Ă«shtĂ« e saktĂ«. ĂshtĂ« e vĂ«rejtur se shĂ«rbimet nĂ« infrastrukturĂ«n build.opensuse.org ekzekutohen duke pĂ«rdorur kontejnerĂ« tĂ« izoluar, tĂ« rinj-krijuar dhe tĂ« cilĂ«t nuk pĂ«rmbajnĂ« informacione kritike. DobĂ«sia e zbuluar Ă«shtĂ« vlerĂ«suar si e rrezikshme, por jo e mjaftueshme pĂ«r tĂ« kompromentuar infrastrukturĂ«n e ndĂ«rtimit tĂ« openSUSE dhe pakot e formuara. PĂ«r mĂ« tepĂ«r, Ă«shtĂ« theksuar se veprimet nĂ« ndĂ«rfaqen OBS, tĂ« pĂ«rshkruara nĂ« shembullin e sulmit, mund tĂ« ishin kryer vetĂ«m nĂ« variantin OBS, i instaluar lokal nĂ« stacionin e punĂ«s tĂ« zhvilluesit.
Burimi: opennet.ru
