SÀkerhetsbrister i Pagure och OBS som möjliggjorde kompromettering av paket i Fedora- och openSUSE-repositorier.

SÀkerhetsforskare frÄn Fenrisk har avslöjat sÄrbarheter i verktygen Pagure och OBS (Open Build Service), vilket gjorde det möjligt att kompromittera paketbyggnadsinfrastrukturen för Fedora och openSUSE. Forskarna demonstrerade att det var möjligt att genomföra en attack för att utföra godtycklig kod pÄ servrar med Pagure och OBS, vilket kunde anvÀndas för att införa Àndringar i paketen i Fedora- och openSUSE-repositorierna.

I Pagure-plattformen, som anvÀnds i Fedora för samarbete kring kod och paketmetadata, har 4 sÄrbarheter identifierats. För att utnyttja de identifierade problemen krÀvs det att man har ett konto i Pagure, vilket vem som helst kan skaffa (för nÀrvarande Àr 24899 anvÀndare registrerade pÄ Pagure.io). Tre av problemen möjliggör att filer kan lÀsas i systemet, och ett problem kan möjliggöra att köra egen kod pÄ. servern. Problemen identifierades den 1 januari 2024, rapporterades via bugzilla.redhat.com den 25 april 2024 och ÄtgÀrdades i Pagure inom 3 timmar.

  • SĂ„rbarheterna CVE-2024-4981 och CVE-2024-47515 orsakas av felaktig hantering av symboliska lĂ€nkar i funktionerna för filuppdatering och arkivgenerering. SĂ„rbarheterna möjliggör att innehĂ„llet i lokala filer pĂ„ servern kan lĂ€sas, till exempel kan innehĂ„llet i filen med adminsessionens parametrar för Pagure avslöjas och Ă„tkomst ges med dess rĂ€ttigheter. Utnyttjande av sĂ„rbarheten i funktionen _update_file_in_git() innebĂ€r att man skapar ett repository i Pagure; lĂ€gger till en commit med en ny fil som skapats som en symbolisk lĂ€nk till önskad systemfil; öppnar denna fil för redigering i webbgrĂ€nssnittet.
  • SĂ„rbarheten (CVE-2024-4982) i funktionen view_issue_raw_file() möjliggör att man kan gĂ„ utanför den grundlĂ€ggande katalogen genom att ange tecken "\/.." i parametrarna för den begĂ€rda frĂ„gan. Problemet gör att filer i systemet kan lĂ€sas, beroende pĂ„ Ă„tkomstrĂ€ttigheterna för processen under vilken webbgrĂ€nssnittet körs. Till exempel, för att visa filen \/etc\/passwd kan man öppna sidan "http:\/\/pagure.local:5000\/your-repository\/issue\/raw\/..\/..\/..\/..\/..\/..\/..\/etc\/passwd".
  • SĂ„rbarhet (CVE-2024-47516) i funktionen PagureRepo.log() möjliggör substitution av egna kommandon och exekvering av kod pĂ„ servern. Problemet orsakas av att nĂ€r man granskar historiken för en fil genom webbgrĂ€nssnittet anropas kommandot "git" med ett branch-ID skickat som argument i kommandoraden (till exempel "/usr/bin/git —pretty=oneline —abbrev-commit — README.md"). Korrektheten av ID:t kontrolleras inte, sĂ„ det gĂ„r att istĂ€llet skicka vilken kommandoradsoption som helst, exempelvis "—output=/tmp/foo.bar" för att omdirigera utdata till en fil. En angripare kan skriva över en fil i systemet genom att skicka en begĂ€ran av följande slag: http://pagure.local:5000/test/history/README.md?identifier=—output=/tmp/foo.bar

    Pagure körs under anvÀndaren git, sÄ man kan endast skriva över filer som tillhör denna anvÀndare. För att utföra sin egen kod pÄ servern kan man anvÀnda en tjÀnst för att fÄ Ätkomst till repot via SSH, vilket exekverar kommandot "bash -c /usr/libexec/pagure/aclchecker.py" vid anrop. En angripare kan utnyttja sÄrbarheten för att skriva över filen "/srv/git/.bashrc", och denna fil kommer att köras av kommandotolkaren bash vid Ätkomst till repot via ssh.

    Angreppet innebĂ€r att registrera sig i systemet Pagure, skapa ett repository, lĂ€gga till en README.md-fil med en commit-kommentar av typen "|| /bin/bash" och skicka en begĂ€ran "http://pagure.local:5000/test/history/README.md?identifier=—output=/srv/git/.bashrc". Genom dessa steg kommer strĂ€ngen "34а5с43 || /bin/bash" att skrivas till filen "/srv/git/.bashrc". För att köra den skapade filen "/srv/git/.bashrc" rĂ€cker det med att ansluta till repot via SSH med sitt eget anvĂ€ndarkonto. Att exekvera kod med git-anvĂ€ndarens rĂ€ttigheter pĂ„ servern Pagure gör det möjligt att kontrollera allt innehĂ„ll i repot med paket.

I plattformen OBS (Open Build Service), som anvÀnds av openSUSE och vissa andra distributioner för att bygga paket, har en sÄrbarhet identifierats (CVE-2024-22033) som möjliggör exekvering av egen kod pÄ servern. SÄrbarheten identifierades den 27 juni 2024, rapporterades till openSUSE-projektet den 29 juni och ÄtgÀrdades den 10 juli.

SĂ„rbarheten finns i tjĂ€nsten "obs-service-download_url", dĂ€r det saknades korrekt kontroll av URL:en som anvĂ€nds vid körning av wget frĂ„n skriptet som hanterar nedladdningen av kĂ€llkoden i OBS. En angripare kan ange en konfiguration av paketet i OBS dĂ€r istĂ€llet för URL:en för koden, kommer en kommandoradsparameter för wget att anges, till exempel: —output-document=\/tmp\/test tempfile

För att kringgĂ„ felet som uppstĂ„r vid försök att köra wget utan URL anges alternativet "download-manifest" i exemplet, vilket möjliggör angivande av en lista med URL:er i en separat fil. Det ovanstĂ„ende exemplet kommer att leda till att kommandot körs: \/usr\/bin\/wget -i \/srv\/obs\/service\/XXXXX\/src\/tempfile -4 —output-document=\/tmp\/test

som tillĂ„ter att spara innehĂ„llet i filen \/tmp\/test som laddas ner frĂ„n lĂ€nken som anges i filen \/srv\/obs\/service\/XXXXX\/src\/tempfile frĂ„n koden som angriparen laddade upp i OBS via grĂ€nssnittet build.opensuse.org, som tillĂ„ter fri registrering. Förutom att skriva över filen pĂ„ servern, kan angriparen ocksĂ„ skicka sig sjĂ€lv vilken fil som helst genom att ange alternativet "—post-file" istĂ€llet för "—output-document", till exempel "—post-file=\/etc\/passwd". PĂ„ sĂ„ vis kan angriparen lĂ€sa och skriva filer pĂ„ servern, sĂ„ lĂ„ngt behörigheterna tillĂ„ter för den anvĂ€ndare som tjĂ€nsten OBS körs som.

För att omvandla filskrivning till kodexekvering pĂ„ servern föreslog forskarna en metod som bestĂ„r av tvĂ„ steg. De tvĂ„ stegen Ă€r nödvĂ€ndiga eftersom angriparen kan skapa en fil ".wgetrc" med instĂ€llningar för wget, men detta Ă€r inte tillrĂ€ckligt för att köra kommandon. Genom ".wgetrc" kan villkor skapas för att köra vilket program som helst i systemet, men utan att skicka argument till det. För att köra godtycklig kod föreslĂ„s det att programmet "prove" körs, vilket behandlar konfigurationsfilen ".proverc", som tillĂ„ter att alternativet "—exec" anges för att exekvera vilken kod som helst.

I det första steget skapas en fil «.proverc» i hemkatalogen för anvÀndaren «obsservicerun» genom de ovan nÀmnda manipulationerna med «download-manifest». Denna fil innehÄller kommandon som kommer att köras nÀr processen «prove» startas. I det andra steget skapas filen «.wgetrc» med parametern «use-askpass=\/usr\/bin\/prove», vilket leder till anrop av «prove». NÀr dessa filer har skapats rÀcker det att skapa förutsÀttningar för att ladda ner data med hjÀlp av wget, vilket kommer att leda till att angriparens kod körs pÄ servern med anvÀndarrÀttigheterna för «obsservicerun». AnvÀndarrÀttigheterna för «obsservicerun» Àr tillrÀckliga för att extrahera nycklar frÄn arkiv som anvÀnds av OBS-anvÀndare för att verifiera paket.

TillÀgg: SUSE Product Security anser att faran med sÄrbarheten i OBS Àr överdriven och att forskarnas pÄstÄende om att problemet kan kompromettera alla paket i openSUSE-distributionen inte stÀmmer. Det noteras att tjÀnster i infrastrukturen build.opensuse.org körs i isolerade containrar som Äterskapas och saknar kritisk information. Den identifierade sÄrbarheten bedöms som farlig men otillrÀcklig för att kompromettera bygginfrastrukturen i openSUSE och de skapade paketen. Dessutom anges att ÄtgÀrderna i OBS-grÀnssnittet, som beskrivs i attackexemplet, endast kunde utföras i den lokala versionen av OBS installerad pÄ utvecklarens arbetsstation.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster