Sårbarheter i verktyget needrestart som möjliggör root-åtkomst i Ubuntu Server

Qualys har identifierat tre sårbarheter i verktyget needrestart, som är avsedd för att starta om bakgrundsprocesser efter att de bibliotek som används av dessa processer har uppdaterats. Från och med Ubuntu 21.04 ingår verktyget needrestart i standardmiljön för Ubuntu Server, där det körs med root-rättigheter i slutet av varje transaktion från paketförvaltaren APT, skannar aktiva processer och startar om de som är kopplade till filer som har ändrats efter paketuppdateringar. De identifierade sårbarheterna tillåter en lokal oprivilegierad användare att få root-rättigheter i Ubuntu Server med standardkonfiguration.

Sårbarheterna finns i needrestart från version 0.8 (2014) och har åtgärdats i utgåvan needrestart 3.8. Problemen har också redan åtgärdats i distributionerna Debian och Ubuntu. Som en tillfällig lösning för att blockera exploateringen av sårbarheterna kan skanning av tolkar inaktiveras genom att ange parameter "$nrconf{interpscan} = 0" i konfigurationsfilen /etc/needrestart/needrestart.conf.

Sårbarheterna finns i koden för implementeringen av läget för att identifiera uppdatering av skript som körs med hjälp av tolkar. De identifierade problemen är:

  • CVE-2024-48990 — en lokal användare kan åstadkomma körning av kod med root-rättigheter genom att skapa förhållanden för att starta Python-tolken med den angripna miljövariabeln PYTHONPATH. Utöver användningen av Python kan attacken också utföras (CVE-2024-48992) genom att starta Ruby-tolken med miljövariabeln RUBYLIB.

    Sårbarheterna orsakas av att verktyget needrestart vid omstart av ett ändrat skript sätter miljövariabeln PYTHONPATH baserat på innehållet i filen /proc/pid/environ, som sedan också används för att köra dess egen Python-kod. Därmed kan en angripare invänta aktivitet kopplad till paketförvaltaren APT, simulera en ändring av sitt skript och ställa in miljövariabeln PYTHONPATH så att den också tillämpas vid körning av den inbyggda Python-koden i needrestart ("import sys\n print(sys.path)"), som körs med root-rättigheter.

    Till exempel, för att utnyttja sårbarheten kan man starta en Python-process som konstant är kvar i minnet och sätta miljövariabeln "PYTHONPATH=/home/test", samt placera det delade biblioteket "/home/test/importlib/__init__.so", som kommer att köras när den privilegerade Python-koden körs i needrestart.

  • CVE-2024-48991 — en lokal användare kan åstadkomma körning av kod med root-rättigheter genom att initiera en tävlingsvillkor (race condition), vilket gör att needrestart kör en falsk Python-tolk, som angetts av angriparen, istället för systemets Python-tolk. Sårbarheten är liknande den ovan nämnda, med skillnaden att needrestart fastställer namnet på Python-processen (t.ex. /usr/bin/python3) genom att läsa "proc/pid/exe".

    För att utnyttja sårbarheten kan man skapa en process /home/test/race, som med hjälp av inotify-principen väntar tills needrestart börjar läsa innehållet i /proc/pid/exe, och omedelbart köra systemets Python-tolk via funktionen execve. Eftersom needrestart inte kontrollerar om detta verkligen är Python, kommer den att tro att /home/test/race är Python-tolken och köra den för sin kod.

  • CVE-2024-11003 — en lokal användare kan åstadkomma körning av godtyckliga shell-kommandon med root-rättigheter genom att skapa förhållanden för needrestart att bearbeta filnamn i formatet "kommando|", där överföring till Perl-funktionen open() kommer att resultera i körning av kommandot. Sårbarheten framträder faktiskt i Perl-modulen ScanDeps (CVE-2024-10224), men orsakas av överföring av externa parametrar till denna modul utan korrekt verifiering.

    Attacken kan utföras genom att köra ett Perl-skript med symbolen "|" i namnet, till exempel "/home/test/perl|". Under körning av funktionen scan_deps() i needrestart kommer denna fil att öppnas genom funktionen open(), som kommer att behandla symbolen "|" som en flagga för att starta programmet "/home/test/perl" och använda den utdata som genereras av detta program.

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