Kërkuesit e sigurisë nga kompania Fenrisk zbuluan informacion mbi dobësitë në veglat Pagure dhe OBS (Open Build Service), të cilat lejuan kompromentimin e infrastrukturës për ndërtimin e paketave të distribuimeve Fedora dhe openSUSE. Kërkuesit demonstruan mundësinë e realizimit të një sulmi për të ekzekutuar kod të rastësishëm në serverët me Pagure dhe OBS, gjë që mund të përdorej për të vendosur ndryshime në paketa në depozitë të Fedora dhe openSUSE.
Në platformën Pagure, e përdorur 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, nevojitet të ketë një llogari në shërbimin Pagure, të cilin mund ta marrë çdo dëshiron (aktualisht në Pagure.io janë regjistruar 24899 përdorues). Tre nga problemet lejojnë leximin e skedareve në sistem, ndërsa një problem lejon ekzekutimin e kodeve të veta në. serveri. Problemet janë identifikuar më 1 janar 2024, raportuar nëpërmjet bugzilla.redhat.com më 25 prill 2024 dhe adresuar në Pagure brenda 3 orëve.
- Dobësitë CVE-2024-4981 dhe CVE-2024-47515 shkaktohen nga përpunimi i papërshtatshëm i lidhjeve simbolike në funksionet e përditësimit të skedarit dhe gjenerimit të arkivave. Dobësitë lejojnë leximin e përmbajtjes së skedareve lokale në server, për shembull, është e mundur të dihet përmbajtja e skedarit me parametrat e sesionit të administratorit në Pagure dhe të merret qasje me të drejtat e tij. Shfrytëzimi i dobësisë në funksionin _update_file_in_git() përfshin krijimin e një depoje në Pagure; shtimin e një komiti me një skedar të ri, i cili është krijuar si lidhje simbolike me skedarin e dëshiruar të sistemit; hapjen e këtij skedari për editim në ndërfaqen web.
- Vulnerabiliteti (CVE-2024-4982) në funksionin view_issue_raw_file() lejon daljen përtej katalogut themelor duke specificuar simbolet "/.." në parametrat e pyetjes së problemit. Problemi lejon leximin e skedarëve në sistem, sa lejojnë të drejtat e aksesit të procesit nën të cilin ekzekutohet interfaca web. Për shembull, për të parë skedarin /etc/passwd mund të hapet faqja "http://pagure.local:5000/your-repository/issue/raw/../../../../../../../etc/passwd".
- Vulnerabiliteti (CVE-2024-47516) nĂ« funksionin PagureRepo.log(), ofron mundĂ«sinĂ« pĂ«r tĂ« inkorporuar komanda tĂ« veta dhe pĂ«r tĂ« ekzekutuar kod nĂ« server. Problemi shkaktohet nga fakti se gjatĂ« shikimit tĂ« historisĂ« sĂ« ndryshimeve tĂ« skedarĂ«ve pĂ«rmes interfecĂ«s web, ekzekutohet komanda "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Ă« kalosh çdo opsion tĂ« linjĂ«s sĂ« komandĂ«s, p.sh., "âoutput=/tmp/foo.bar" pĂ«r tĂ« drejtuar daljen nĂ« skedarin. Sulmuesi mund tĂ« mbivendosĂ« 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 është e mundur të mbivendosësh vetëm skedarët e këtij përdoruesi. Për të organizuar ekzekutimin e kodit të vet në server, mund të përdorësh një shërbim për qasje në repository përmes SSH, ku ekzekutohet komanda "bash -c /usr/libexec/pagure/aclchecker.py". Sulmuesi mund të shfrytëzojë vulnerabilitetin për të mbivendosur skedarin "/srv/git/.bashrc" dhe ky skedar do të ekzekutohet nga interpreti i komandave bash kur kërkohet repoja përmes ssh.
Sulmi pĂ«rfshin regjistrimin nĂ« sistemin Pagure, krijimin e njĂ« repository, shtimin nĂ« repository tĂ« skedarit README.md me njĂ« vĂ«rejtje pĂ«r commit tĂ« tipit "|| /bin/bash" dhe dĂ«rgimin e kĂ«rkesĂ«s "http://pagure.local:5000/test/history/README.md?identifier=âoutput=/srv/git/.bashrc". NĂ«pĂ«rmjet kĂ«tyre hapave, nĂ« skedarin "/srv/git/.bashrc" do tĂ« shkruhet njĂ« rresht i tipit "34а5Ń43 || /bin/bash". PĂ«r tĂ« ekzekutuar skedarin e krijuar "/srv/git/.bashrc", mjafton tĂ« lidhen me repo-nĂ« pĂ«rmes SSH nĂ«n llogarinĂ« e tyre. Ekzekutimi i kodit me tĂ« drejtat e pĂ«rdoruesit git nĂ« serverin Pagure lejon kontrollin e gjithĂ« pĂ«rmbajtjes sĂ« repository-ve me paketa.
Në platformën OBS (Open Build Service), e përdorur në openSUSE dhe disa distribuime të tjera për ndërtimin e paketave, është zbuluar një dobësi (CVE-2024-22033), që lejon ekzekutimin e kodit të tij në server. Dobësia është zbuluar më 27 qershor 2024, raportuar në projektin openSUSE më 29 qershor dhe adresuar më 10 korrik.
Vulnerabiliteti Ă«shtĂ« prezent nĂ« shĂ«rbimin "obs-service-download_url", ku mungonte kontrolli i duhur tĂ« URL-sĂ« qĂ« pĂ«rdorej gjatĂ« ekzekutimit tĂ« utilitetit wget nga skripti qĂ« bĂ«nte shkarkimin e kodit burimor nĂ« OBS. Sulmuesi mund tĂ« specifikojĂ« nĂ« shĂ«rbimin OBS njĂ« konfigurim tĂ« paketĂ«s qĂ« formohet, nĂ« tĂ« cilin, nĂ« vend tĂ« URL-sĂ« pĂ«r shkarkimin e kodit, do tĂ« specifikohej njĂ« opsion i linjĂ«s sĂ« komandĂ«s pĂ«r wget, p.sh.: âoutput-document=/tmp/test tempfile
PĂ«r tĂ« shmangur kthehen e gabimeve gjatĂ« pĂ«rpjekjes pĂ«r tĂ« ekzekutuar wget pa URL, nĂ« shembullin e mĂ«sipĂ«rm Ă«shtĂ« specifikuar opsioni "download-manifest", i cili lejon specifikimin e njĂ« liste URL-sh nĂ« njĂ« skedar tĂ« veçantĂ«. Shembulli i mĂ«sipĂ«rm do tĂ« shkaktojĂ« 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, i shkarkuar nga sulmuesi nĂ« OBS pĂ«rmes ndĂ«rfaqes build.opensuse.org, e cila lejon regjistrimin e lirĂ«. PĂ«rveç mbivendosjes sĂ« skedarĂ«ve nĂ« server, sulmuesi gjithashtu mund tĂ« dĂ«rgojĂ« çdo skedar pĂ«r vete duke specifikuar nĂ« vend tĂ« "âoutput-document" opsionin "âpost-file", p.sh., "âpost-file=/etc/passwd". KĂ«shtu, sulmuesi mund tĂ« lexojĂ« dhe shkruajĂ« skedarĂ« nĂ« server, sa lejojnĂ« tĂ« drejtat e aksesit nĂ«n tĂ« cilat ekzekutohet shĂ«rbimi OBS.
PĂ«r tĂ« transformuar mundĂ«sinĂ« e shkruarjes nĂ« skedar nĂ« ekzekutimin e kodit nĂ« server, hulumtuesit propozuan njĂ« metodĂ« me dy etapa. Dy etapat janĂ« tĂ« nevojshme, pasi sulmuesi mund tĂ« krijojĂ« skedarin ".wgetrc" me cilĂ«sime pĂ«r wget, por kjo nuk Ă«shtĂ« e mjaftueshme pĂ«r tĂ« ekzekutuar komanda. MegjithatĂ«, pĂ«rmes ".wgetrc" mund tĂ« krijosh kushte pĂ«r ekzekutimin nĂ« sistem tĂ« çdo programi, por pa i kaluar asaj argumente. PĂ«r tĂ« ekzekutuar kod tĂ« rastĂ«sishĂ«m, Ă«shtĂ« propozuar ekzekutimi i programit "prove", qĂ« pĂ«rpunon skedarin e konfigurimit ".proverc", duke lejuar specifikimin e opsionit "âexec" pĂ«r ekzekutimin e çdo kodi.
Në fazën e parë, përmes manovrave të përmendura më sipër me "download-manifest" në katalogun e përdoruesit "obsservicerun" krijohet skedari ".proverc", që përmban komandat që do të ekzekutohen gjatë procesit "prove". Në fazën e dytë krijohet skedari ".wgetrc" me parametrit "use-askpass=/usr/bin/prove", i cili thërret "prove". Pas shfaqjes së këtyre skedarëve, mjafton të krijohen kushtet për ngarkimin e të dhënave përmes wget dhe kjo do të sjellë nisjen e kodit të sulmuesit në server me të drejtat e përdoruesit "obsservicerun". Të drejtat e përdoruesit "obsservicerun" mjaftojnë për të nxjerrë çelësa nga depot e përdoruesve OBS për të vërtetuar paketat.
Shtesë: Ekipi i Sigurisë së Produktit SUSE beson se rreziku i këtij vulnerabliteti në OBS është i tepruar dhe deklarata e kërkuesve se problemi lejon të komprometohen të gjitha paketat në distribucionin openSUSE nuk është e saktë. Theksohet se shërbimet në infrastrukturën build.opensuse.org ekzekutohen duke përdorur konteinerë të izoluar, të rinovuar dhe që nuk përmbajnë informacione kritike. Vulneshimi i identifikuar është vlerësuar si rrezikshëm, por jo i mjaftueshëm për të komprometuar infrastrukturën e ndërtimit openSUSE dhe paketat e formuara. Gjithashtu, është thënë se veprimet në ndërfaqen OBS, të përshkruara në shembullin e sulmit, mund të ishin realizuar vetëm në variantin e OBS që ishte instaluar lokal në stacionin e punës së zhvilluesit.
Burimi: opennet.ru
