Kwetsbaarheden in de needrestart-tool, die root-toegang in Ubuntu Server mogelijk maken

Het bedrijf Qualys heeft drie kwetsbaarheden ontdekt in de needrestart-tool, die bedoeld is voor het opnieuw starten van achtergrondprocessen na de update van de bibliotheken die door deze processen worden gebruikt. Vanaf Ubuntu 21.04 is de needrestart-tool opgenomen in de basisomgeving van Ubuntu Server, waar deze met root-rechten aan het einde van elke transactie van de APT-pakketbeheerder wordt uitgevoerd, de actieve processen scant en de processen herstart die verbonden zijn met bestanden die na de pakketten zijn bijgewerkt. De ontdekte kwetsbaarheden stellen een lokale, niet-geprivilegieerde gebruiker in staat om root-rechten te verkrijgen in Ubuntu Server met de standaardconfiguratie.

De kwetsbaarheden zijn aanwezig in needrestart sinds versie 0.8 (2014) en zijn verholpen in release needrestart 3.8. De problemen zijn ook al opgelost in de distributies van Debian en Ubuntu. Als een tijdelijke oplossing om misbruik te blokkeren, kan het scannen van interpreters worden uitgeschakeld door in het configuratiebestand /etc/needrestart/needrestart.conf de parameter "$nrconf{interpscan} = 0" op te geven.

De kwetsbaarheden zijn aanwezig in de code met de implementatie van de detectiemodus voor updates van scripts die zijn uitgevoerd met behulp van interpreters. De ontdekte problemen zijn:

  • CVE-2024-48990 — een lokale gebruiker kan ervoor zorgen dat code met root-rechten wordt uitgevoerd door voorwaarden te creĆ«ren voor het starten van de Python-interpreter met de door de aanvaller ingestelde omgevingsvariabele PYTHONPATH. Naast het gebruik van Python kan een aanval ook worden uitgevoerd (CVE-2024-48992) via het starten van de Ruby-interpreter met de omgevingsvariabele RUBYLIB.

    De kwetsbaarheden worden veroorzaakt doordat de needrestart-tool de omgevingsvariabele PYTHONPATH instelt op basis van de inhoud van het bestand /proc/pid/environ tijdens het opnieuw starten van het gewijzigde script, die vervolgens ook wordt gebruikt voor het starten van de eigen Python-code van needrestart. Dienovereenkomstig kan de aanvaller wachten op activiteiten met betrekking tot de werking van de APT-pakketbeheerder, zijn eigen script simuleren als gewijzigd en de omgevingsvariabele PYTHONPATH instellen, die ook zal worden toegepast bij het uitvoeren van de ingebouwde Python-code in needrestart ("import sys\n print(sys.path)") met root-rechten.

    Bijvoorbeeld, om een kwetsbaarheid te exploiteren, kan een voortdurend in het geheugen draaiend Python-proces worden gestart, met de omgeving variabele 'PYTHONPATH=/home/test', terwijl een gedeelde bibliotheek '/home/test/importlib/__init__.so' wordt geplaatst, die zal worden uitgevoerd wanneer bevoorrechte Python-code in needrestart wordt uitgevoerd.

  • CVE-2024-48991 — een lokale gebruiker kan root-kode uitvoeren door een race condition te initiĆ«ren, waardoor needrestart een vervalste Python-interpreter die door de aanvaller is opgegeven, start in plaats van de systeem-Python-interpreter. De essentie van de kwetsbaarheid is vergelijkbaar met het eerder genoemde probleem, het enige verschil is dat needrestart de naam van het Python-proces (bijvoorbeeld /usr/bin/python3) bepaalt door '/proc/pid/exe' te lezen.

    Om deze kwetsbaarheid te exploiteren, kan een proces '/home/test/race' worden gemaakt, dat met behulp van het inotify-mechanisme wacht tot needrestart begint met het lezen van de inhoud van '/proc/pid/exe', en direct het systeem Python-interpreter via de execve-functie uitvoert. Aangezien needrestart geen controle uitvoert of dit werkelijk Python is, zal het denken dat '/home/test/race' de Python-interpreter is en deze starten voor zijn code.

  • CVE-2024-11003 — een lokale gebruiker kan willekeurige shell-opdrachten uitvoeren met root-rechten door voorwaarden te creĆ«ren voor de verwerking van bestandsnamen in needrestart in het formaat 'commando|', waarvan de overdracht aan de Perl-functie open() zal resulteren in het uitvoeren van het commando. De kwetsbaarheid manifesteert zich feitelijk in de Perl-module ScanDeps (CVE-2024-10224), maar wordt veroorzaakt door de overdracht van externe parameters naar deze module zonder deugdelijke controle.

    Een aanval kan worden uitgevoerd door een Perl-script te starten met een '|' teken in de naam, bijvoorbeeld '/home/test/perl|'. Tijdens het uitvoeren van de scan_deps() functie in needrestart zal dit bestand worden geopend via de open() functie, die het '|' teken als vlag zal behandelen om het programma '/home/test/perl' te starten en de uitvoer van dit programma te gebruiken.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster