Zraniteľnosti v Pagure a OBS, ktoré umožňovali kompromitáciu balíkov v repozitároch Fedora a openSUSE

Bezpečnostní výzkumníci ze společnosti Fenrisk zveřejnili informace o zranitelnostech v nástrojích Pagure a OBS (Open Build Service), které umožnily kompromitovat infrastruktury pro vytváření balíčků distribucí Fedora a openSUSE. Výzkumníci demonstrovali možnost provedení útoku pro vykonání libovolného kódu na serverech s Pagure a OBS, což mohlo být využito k úpravě balíčků v repozitářích Fedora a openSUSE.

Na platformě Pagure, která se používá ve Fedora ke spolupráci na kódu a metadatech balíčků, byly odhaleny 4 zranitelnosti. K využití odhalených problémů je nutné mít účet v službě Pagure, který může získat kdokoliv (v současnosti je v Pagure.io registrováno 24899 uživatelů). Tři problémy umožňují číst soubory v systému, a jeden problém umožňuje vykonat váš kód na. serveri. Problémy byly odhaleny 1. ledna 2024, nahlášeny přes bugzilla.redhat.com 25. dubna 2024 a odstraněny v Pagure za 3 hodiny.

  • Zranitelnosti CVE-2024-4981 a CVE-2024-47515 jsou způsobeny nesprávným zpracováním symbolických odkazů ve funkcích aktualizace souboru a generování archivů. Zranitelnosti umožňují číst obsah lokálních souborů na serveru, např. lze zjistit obsah souboru s parametry sezení administrátora Pagure a získat přístup s jeho právy. Využití zranitelnosti ve funkci _update_file_in_git() spočívá ve vytvoření repozitáře v Pagure; přidání do něj commitu s novým souborem, který je vytvořen jako symbolický odkaz na požadovaný systémový soubor; a otevření tohoto souboru pro úpravy v webovém rozhraní.
  • Zranitelnost (CVE-2024-4982) ve funkci view_issue_raw_file() umožňuje překročit základní adresář pomocí zadání znaků „/..“ v parametrech požadovaného problému. Tento problém umožňuje číst soubory v systému, jak dovolují práva přístupu procesu, pod kterým se vykonává webové rozhraní. Například pro zobrazení souboru /etc/passwd lze otevřít stránku „http://pagure.local:5000/your-repository/issue/raw/../../../../../../../../../../etc/passwd“.
  • Zraniteľnosť (CVE-2024-47516) vo funkcii PagureRepo.log() umožňuje vkladanie vlastných príkazov a vykonávanie kódu na serveri. Problém vzniká, pretože pri prezeraní histórie zmien súboru cez webové rozhranie sa volá príkaz „git“ s odovzdaním identifikátora vetvy v príkazovom riadku (napríklad „/usr/bin/git --pretty=oneline --abbrev-commit -- README.md“). Správnosť identifikátora sa nekontroluje, takže namiesto neho je možné odovzdať akúkoľvek voľbu príkazového riadku, napríklad „--output=/tmp/foo.bar“ na presmerovanie výstupu do súboru. Útočník môže prepísať súbor v systéme zaslaním požiadavky v tomto tvare: http://pagure.local:5000/test/history/README.md?identifier=--output=/tmp/foo.bar

    Pagure beží pod používateľom git, takže je možné prepísať len súbory tohto používateľa. Na uskutočnenie spúšťania vlastného kódu na serveri je možné využiť službu na prístup k repozitáru cez SSH, pri prístupe ku ktorej sa vykoná príkaz „bash -c /usr/libexec/pagure/aclchecker.py“. Útočník môže využiť zraniteľnosť na prepísanie súboru „/srv/git/.bashrc“ a tento súbor bude spustený príkazovým interpretom bash pri prístupe k repozitáru cez ssh.

    Útok spočíva v registrácii v systéme Pagure, vytvorení repozitára, pridávaní v repozitári súboru README.md s poznámkou k commitu vo forme „|| /bin/bash“ a zaslaní požiadavky „http://pagure.local:5000/test/history/README.md?identifier=--output=/srv/git/.bashrc“. Počas týchto krokov bude do súboru „/srv/git/.bashrc“ zapísaný riadok vo forme „34а5с43 || /bin/bash“. Na spustenie vytvoreného súboru „/srv/git/.bashrc“ stačí pripojiť sa k repozitáru cez SSH pod svojím účtom. Vykonávanie kódu s právami používateľa git na serveri Pagure umožňuje kontrolu celého obsahu repozitárov s balíčkami.

Na platforme OBS (Open Build Service), používané v openSUSE a niektorých ďalších distribúciách na kompiláciu balíčkov, bola odhalená jedna zraniteľnosť (CVE-2024-22033), ktorá umožňuje vykonať vlastný kód na serveri. Zraniteľnosť bola identifikovaná 27. júna 2024, nahlásená projektu openSUSE 29. júna a odstránená 10. júla.

Zraniteľnosť sa nachádza v službe «obs-service-download_url», v ktorej chýbala riadna kontrola URL, použitého pri spustení nástroja wget zo skriptu, ktorý sťahuje zdrojový kód do OBS. Útočník môže v službe OBS nastaviť konfiguráciu vytváraného balíka, v ktorej namiesto URL pre sťahovanie kódu bude uvedená možnosť príkazového riadku pre wget, napríklad: --output-document=\/tmp\/test tempfile

Na obídenie vrátenia chyby pri pokuse o spustenie wget bez URL je v príklade uvedená možnosť „download-manifest“, ktorá umožňuje uviesť zoznam URL v samostatnom súbore. Vyššie uvedený príklad privedie k spusteniu príkazu: \/usr\/bin\/wget -i \/srv\/obs\/service\/XXXXX\/src\/tempfile -4 --output-document=\/tmp\/test

ktorá umožňuje zapísať do súboru \/tmp\/test obsah stiahnutý z odkazu uvedeného v súbore \/srv\/obs\/service\/XXXXX\/src\/tempfile z kódu, ktorý útočník načítal do OBS cez rozhranie build.opensuse.org, ktoré umožňuje voľnú registráciu. Okrem prepísania súboru na serveri môže útočník tiež poslať akýkoľvek súbor, ak uvedie namiesto „--output-document“ možnosť „--post-file“, napríklad „--post-file=\/etc\/passwd“. Takýmto spôsobom môže útočník čítať a zapisovať súbory na serveri, pokiaľ to umožňujú práva, pod ktorými je služba OBS spustená.

Aby sa zamena písania do súboru premenila na vykonávanie kódu na serveri, vedci navrhli metódu pozostávajúcu z dvoch krokov. Dva kroky sú potrebné, pretože útočník môže vytvoriť súbor „.wgetrc“ s nastaveniami pre wget, ale to nie je dostatočné na spustenie príkazov. Ale prostredníctvom „.wgetrc“ je možné vytvoriť podmienky pre vykonanie akejkoľvek programu v systéme, ale bez predania argumentov. Na spustenie ľubovoľného kódu sa navrhuje spustiť program „prove“, ktorý spracováva konfiguračný súbor „.proverc“, ktorý umožňuje uviesť možnosť „--exec“ na vykonanie akéhokoľvek kódu.

V prvom kroku sa pomocou vyššie uvedených manipulácií s „download-manifest“ v domovskom adresári používateľa „obsservicerun“ vytvorí súbor „.proverc“, ktorý obsahuje príkazy, ktoré sa vykonajú pri spustení procesu „prove“. V druhom kroku sa vytvorí súbor .wgetrc“ s parametrom „use-askpass=\/usr\/bin\/prove“, čo vedie k vyvolaniu „prove“. Po vytvorení týchto súborov stačí vytvoriť podmienky na sťahovanie akýchkoľvek dát pomocou wget, čo spustí kód útočníka na serveri s právami používateľa „obsservicerun“. Práva používateľa „obsservicerun“ sú dostatočné na extrakciu kľúčov z repozitárov, ktoré používajú používatelia OBS na overovanie balíkov.

Doplnok: Tím SUSE Product Security sa domnieva, že nebezpečenstvo zraniteľnosti v OBS je precenené a vyhlásenie výskumníkov, že problém umožňuje skompromitovať všetky balíky v distribúcii openSUSE, neodpovedá realite. Uvádza sa, že služby v infraštruktúre build.opensuse.org sa spúšťajú s použitím izolovaných kontajnerov, ktoré sú znovu vytvárané a neobsahujú kritické informácie. Zistená zraniteľnosť je hodnotená ako nebezpečná, avšak nedostatočná na kompromitáciu build infraštruktúry openSUSE a vytváraných balíkov. Okrem toho sa uvádza, že akcie v rozhraní OBS, popísané v príklade útoku, mohli byť vykonané iba v prípade OBS nainštalovaného lokálne na pracovnej stanici vývojára.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster