Beveiligingsonderzoekers van Fenrisk hebben kwetsbaarheden onthuld in de tools Pagure en OBS (Open Build Service), die konden worden gebruikt om de infrastructuren voor het creƫren van pakketten voor de distributies Fedora en openSUSE te compromitteren. De onderzoekers demonstreerden de mogelijkheid om een aanval uit te voeren waardoor willekeurige code op servers met Pagure en OBS kon worden uitgevoerd, wat zou kunnen worden gebruikt om wijzigingen in pakketten in de repositories van Fedora en openSUSE door te voeren.
Op het Pagure-platform, dat in Fedora wordt gebruikt voor samenwerking aan code en metadata van pakketten, zijn 4 kwetsbaarheden ontdekt. Voor het misbruik van deze problemen is een account op de Pagure-service vereist, dat door iedereen kan worden verkregen (momenteel zijn er 24899 gebruikers geregistreerd op Pagure.io). Drie problemen stellen gebruikers in staat om bestanden in het systeem te lezen, terwijl ƩƩn probleem het uitvoeren van eigen code mogelijk maakt op de server. De problemen werden op 1 januari 2024 ontdekt, gerapporteerd via bugzilla.redhat.com op 25 april 2024, en verholpen in Pagure binnen 3 uur.
- De kwetsbaarheden CVE-2024-4981 en CVE-2024-47515 zijn veroorzaakt door onjuiste verwerking van symbolische links in de functies voor het bijwerken van bestanden en het genereren van archieven. Deze kwetsbaarheden maken het mogelijk om de inhoud van lokale bestanden op de server te lezen, bijvoorbeeld door toegang te krijgen tot de inhoud van het configuratiebestand voor de administrator sessie van Pagure en toegang te krijgen met zijn rechten. Het misbruik van de kwetsbaarheid in de functie _update_file_in_git() omvat het creƫren van een repository in Pagure; het toevoegen van een commit met een nieuw bestand dat als symbolische link naar het gewenste systeem bestand is gemaakt; het openen van dit bestand voor bewerking in de webinterface.
- De kwetsbaarheid (CVE-2024-4982) in de functie view_issue_raw_file() stelt een gebruiker in staat om buiten de basisdirectory te navigeren door de tekens ā/..ā op te geven in de parameters van de aangevraagde issue. Dit probleem maakt het mogelijk om bestanden in het systeem te lezen, afhankelijk van de toegangsmachtigingen van het proces waaronder de webinterface draait. Bijvoorbeeld, om het bestand /etc/passwd te bekijken, kan de volgende pagina worden geopend: "http://pagure.local:5000/your-repository/issue/raw/../../../../../../etc/passwd".
- Kwetsbaarheid (CVE-2024-47516) in de functie PagureRepo.log() stelt aanvalsvoerders in staat om hun eigen opdrachten in te voeren en code op de server uit te voeren. Het probleem ontstaat omdat bij het bekijken van de geschiedenis van bestandwijzigingen via de webinterface de opdracht "git" wordt aangeroepen met de overdracht van de tak-ID in de opdrachtregel (bijvoorbeeld "/usr/bin/git --pretty=oneline --abbrev-commit -- README.md"). De juistheid van de ID wordt niet gecontroleerd, zodat in plaats daarvan elke opdrachtregeloptie kan worden doorgegeven, bijvoorbeeld "--output=/tmp/foo.bar" om de uitvoer naar een bestand om te leiden. De aanvaller kan het bestand op het systeem overschrijven door een verzoek van de volgende aard te verzenden: http://pagure.local:5000/test/history/README.md?identifier=--output=/tmp/foo.bar
Pagure draait onder de gebruiker git, dus het is alleen mogelijk om bestanden van deze gebruiker te overschrijven. Om eigen code op de server uit te voeren, kan gebruik worden gemaakt van een service voor toegang tot de repository via SSH, waarbij de opdracht "bash -c /usr/libexec/pagure/aclchecker.py" wordt uitgevoerd. De aanvaller kan de kwetsbaarheid gebruiken om het bestand "/srv/git/.bashrc" te overschrijven, en dit bestand wordt uitgevoerd door de bash-shell bij toegang tot de repository via SSH.
De aanval omvat het registreren in het Pagure-systeem, het aanmaken van een repository, het toevoegen van een README.md-bestand aan de repository met een commit-opmerking van de vorm "|| /bin/bash" en het indienen van het verzoek "http://pagure.local:5000/test/history/README.md?identifier=--output=/srv/git/.bashrc". Tijdens deze stappen zal in het bestand "/srv/git/.bashrc" een regel worden geschreven in de vorm "34a5c43 || /bin/bash". Om het aangemaakte bestand "/srv/git/.bashrc" uit te voeren, is het voldoende om verbinding te maken met de repository via SSH onder uw eigen account. Het uitvoeren van code met de rechten van de gebruiker git op de Pagure-server stelt aanvalsvoerders in staat om alle inhoud van de repositories met pakketten te controleren.
Op het OBS (Open Build Service) platform, gebruikt in openSUSE en enkele andere distributies voor het bouwen van pakketten, is een kwetsbaarheid (CVE-2024-22033) ontdekt die het mogelijk maakt om eigen code op de server uit te voeren. De kwetsbaarheid werd ontdekt op 27 juni 2024, gemeld aan het openSUSE-project op 29 juni en verholpen op 10 juli.
De kwetsbaarheid bevindt zich in de service "obs-service-download_url", waarin een juiste controle van de URL ontbrak die wordt gebruikt bij het starten van de wget-tool vanuit een script dat de broncode in OBS downloadt. Een aanvaller kan in de OBS-service een configuratie instellen waarin in plaats van de download-URL voor de code een argument voor de wget-opdracht wordt opgegeven, bijvoorbeeld: āoutput-document=\/tmp\/test tempfile
Om de foutmelding te omzeilen bij het proberen te starten van wget zonder URL, wordt in het voorbeeld de optie "download-manifest" opgegeven, waarmee een lijst van URL's in een apart bestand kan worden aangegeven. Het bovenstaande voorbeeld resulteert in de uitvoering van het commando: \/usr\/bin\/wget -i \/srv\/obs\/service\/XXXXX\/src\/tempfile -4 āoutput-document=\/tmp\/test
dat het mogelijk maakt om de inhoud van het bestand \/tmp\/test te schrijven, opgehaald via de link die in het bestand \/srv\/obs\/service\/XXXXX\/src\/tempfile staat, van de code die door de aanvaller in OBS is gedownload via het build.opensuse.org-platform, dat vrij registreren toestaat. Naast het overschrijven van het bestand op de server, kan de aanvaller ook elk bestand naar zichzelf verzenden door in plaats van "āoutput-document" de optie "āpost-file" op te geven, bijvoorbeeld "āpost-file=\/etc\/passwd". Op deze manier kan de aanvaller bestanden op de server lezen en schrijven, afhankelijk van de toegangsrechten waaronder de OBS-service draait.
Om de schrijftoegang tot een bestand om te zetten in code-uitvoering op de server, hebben onderzoekers een methode voorgesteld die uit twee fasen bestaat. Beide fasen zijn nodig, zodat de aanvaller een bestand " .wgetrc" kan aanmaken met instellingen voor wget, maar dit is onvoldoende voor het uitvoeren van opdrachten. Door middel van " .wgetrc" kunnen echter voorwaarden worden gecreĆ«erd voor het uitvoeren van elk programma in het systeem, maar zonder er argumenten aan door te geven. Voor het uitvoeren van willekeurige code wordt voorgesteld om het programma "prove" te starten, dat het configuratiebestand " .proverc" verwerkt, waarin de optie "āexec" kan worden opgegeven voor het uitvoeren van elke code.
In de eerste fase wordt via de bovenstaande manipulaties met 'download-manifest' in de thuismap van de gebruiker 'obsservicerun' een bestand '.proverc' aangemaakt, dat de commando's bevat die uitgevoerd zullen worden bij het starten van het 'prove'-proces. In de tweede fase wordt een bestand '.wgetrc' aangemaakt met de parameter 'use-askpass=/usr/bin/prove', wat leidt tot de oproep van 'prove'. Nadat deze bestanden zijn aangemaakt, is het voldoende om downloadvoorwaarden voor welke gegevens dan ook aan te maken met behulp van wget, en dit zal leiden tot het uitvoeren van de aanvallerscode op de server met de rechten van de gebruiker 'obsservicerun'. De rechten van de gebruiker 'obsservicerun' zijn voldoende om sleutels te extraheren uit de repositories die door OBS-gebruikers worden gebruikt voor het ondertekenen van pakketten.
Aanvulling: Het SUSE Product Security-team is van mening dat de dreiging van de kwetsbaarheid in OBS wordt overschat en dat de bewering van onderzoekers dat het probleem alle pakketten in de openSUSE-distributie kan compromitteren, niet juist is. Er wordt opgemerkt dat de diensten in de infrastructuur van build.opensuse.org worden uitgevoerd met behulp van geĆÆsoleerde containers, die opnieuw worden aangemaakt en geen kritieke informatie bevatten. De ontdekte kwetsbaarheid wordt als ernstig beoordeeld, maar onvoldoende voor de compromittering van de openSUSE-buildinfrastructuur en de geproduceerde pakketten. Bovendien wordt opgemerkt dat de acties in de OBS-interface, zoals beschreven in het aanvalvoorbeeld, alleen konden worden uitgevoerd in de versie van OBS die lokaal op de ontwikkelwerkplek is geĆÆnstalleerd.
Bron: opennet.ru
