Qualys avastas kolm haavatavust tööriistas needrestart, mis on mÔeldud taustprotsesside taaskÀivitamiseks pÀrast andmetega töötavate protsesside raamatukogude vÀrskendamist. Alates Ubuntu 21.04 on tööriist needrestart osa Ubuntu Serveri pÔhikeskkonnast, kus see kÀivitatakse root-Ôigustega iga APT pakihalduri tehingu lÔpus, skaneerib kÀivitatud protsesse ja taaskÀivitab need, mis on seotud failidega, mis on pÀrast pakettide vÀrskendamist muutunud. Avatud haavatavused vÔimaldavad kohalikel, mitteprivileegitud kasutajatel saada root-Ôigused vaikimisi konfiguratsiooniga Ubuntu Serveris.
Haavatavused on olemas needrestart versioonist 0.8 (2014. aasta) ja need on kÔrvaldatud needrestart 3.8 vÀljaandes. Probleemid on samuti juba parandatud Debian ja Ubuntu distributsioonides. KÀitusviisina haavatavuse Àrakasutamise blokeerimiseks vÔib skaneerimise keelata, seadistades konfiguratsioonifailis /etc/needrestart/needrestart.conf parameetri "$nrconf{interpscan} = 0".
Haavatavused on olemas koodis, mis implementeerib skriptide vĂ€rskendamise tuvastamise reĆŸiimi, mis on kĂ€ivitatud interpreteerijate kasutamisega. Tuvastatud probleemid:
- CVE-2024-48990 â lokaalne kasutaja vĂ”ib saavutada root-oigusel koodi kĂ€ivitamise, luues tingimused Python-interpretatori kĂ€ivitamiseks, milles on rĂŒndaja mÀÀratud keskkonnamuutuja PYTHONPATH. Lisaks Pythonile vĂ”ib rĂŒnnak toimuda ka (CVE-2024-48992) Ruby interpretatori kĂ€ivitamisega, mille keskkonnamuutuja on RUBYLIB.
Haavatavused on pĂ”hjustatud sellest, et utiliit needrestart mÀÀrab silla skripti taaskĂ€ivitamise protsessis keskkonnamuutuj PYTHONPATH faili /proc/pid/environ sisu pĂ”hjal, mida kasutatakse ka oma Python-koodi kĂ€ivitamiseks. Seega vĂ”ib rĂŒndaja oodata tegevust, mis on seotud APT paketihalduri tööga, simuleerida oma skripti muutmist ning seada sellele keskkonnamuutuj PYTHONPATH, mis rakendub ka needrestarti integreeritud Python-koodi kĂ€ivitamisel ("import sys\n print(sys.path)"), mis viiakse lĂ€bi root-oigusel.
NĂ€iteks haavatavuse kasutamiseks saab kĂ€itada pidevalt mĂ€les pĂŒsivat Python-protsessi, seadistades selle keskkonnamuutuja âPYTHONPATH=/home/testâ ning paigutades jagatud teegi â/home/test/importlib/__init__.soâ, mis tĂ€idetakse privileegidega Python-koodi kĂ€ivitamisel needrestarti kaudu.
- CVE-2024-48991 â kohalik kasutaja vĂ”ib saavutada root Ă”igustega koodi tĂ€itmise, algatades vĂ”istluse (race condition), mille tulemusena needrestart kĂ€ivitab rĂŒndaja poolt esitatud vale Python-interpretatsiooni, mitte sĂŒsteemset Python-interpretatsiooni. Haavatavuse olemus on sarnane ĂŒlalkirjeldatud probleemile, ainus erinevus on see, et needrestart mÀÀrab Python-protsessi nime (nt /usr/bin/python3) lugedes â/proc/pid/exeâ.
Haavatavuse kasutamiseks saab luua protsessi /home/test/race, mis ootab inotify mehhanismi abil aega, mil needrestart hakkab lugema sisu /proc/pid/exe, ja kohe kĂ€ivitab lĂ€bi funktsiooni execve sĂŒsteemse Python-interpretatsiooni. Kuna needrestart ei kontrolli, kas see tĂ”epoolest on Python, arvab ta, et /home/test/race on Python-interpretatsioon ja kĂ€ivitab selle oma koodi jaoks.
- CVE-2024-11003 â kohalik kasutaja vĂ”ib saavutada juurĂ”igustega suvaliste shell-kĂ€skude tĂ€itmise, luues needrestartis tingimusi, mis kĂ€sitlevad failinimesid vormingus âkommando|â, mille edastamine Perl-funktsiooni open() kĂ€ivitab kĂ€su. Tegelikult avaldub haavatavus Perl-moodulis ScanDeps (CVE-2024-10224), kuid selle pĂ”hjustab vĂ€liste parameetrite edastamine sellele moodulile ilma nĂ”uetekohase kontrollita.
RĂŒnnak vĂ”ib toimuda Perl-skripti kĂ€ivitamise kaudu, mille nimel on sĂŒmbol â|â, nĂ€iteks â/home/test/perl|â. Funktsiooni scan_deps() tĂ€itmisel needrestartis avatakse see fail open() funktsiooni kaudu, mis kĂ€sitleb sĂŒmbolit â|â flĂ€agina programmi â/home/test/perlâ kĂ€ivitamiseks ja saadud vĂ€ljundi kasutamiseks.
Allikas: opennet.ru
