Vulnerabilitetet në Pagure dhe OBS, të cilat mundësuan komprometimin e paketave në depozitë të Fedora dhe openSUSE.

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

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster