Zraniteľnosti v utilite needrestart, ktoré umožňujú získať root prístup na Ubuntu Server

Spoločnosť Qualys odhalila tri zraniteľnosti v utilite needrestart, ktorá slúži na reštartovanie pozadí po aktualizácii knižníc používaných procesmi. Od Ubuntu 21.04 je utilita needrestart súčasťou základného prostredia Ubuntu Server, kde sa spúšťa s právami root na konci každej transakcie správcu balíkov APT, skenuje bežiace procesy a reštartuje tie, ktoré sú spojené so súbormi, ktoré sa zmenili po aktualizácii balíkov. Odhalené zraniteľnosti umožňujú lokálnemu nepriviligovanému používateľovi získať práva root v predvolenej konfigurácii Ubuntu Server.

Zraniteľnosti sú prítomné v needrestart od verzie 0.8 (rok 2014) a boli odstránené vo vydaní needrestart 3.8. Problémy sú už tiež opravené v distribúciách Debian a Ubuntu. Ako obchádzku na blokovanie vykonávania zraniteľnosti je možné zakázať skenovanie interpretátorov nastavením parametra "$nrconf{interpscan} = 0" v konfiguračnom súbore /etc/needrestart/needrestart.conf.

Zraniteľnosti sú prítomné v kóde s implementáciou režimu určenia aktualizácie skriptov spustených pomocou interpretátorov. Odhalené problémy:

  • CVE-2024-48990 — lokálny používateľ môže dosiahnuť vykonanie kódu s právami root vytvorením podmienok na spustenie Python interpretátora s útočníkom nastavenou premennou prostredia PYTHONPATH. Okrem použitia Pythonu môže byť útok tiež vykonaný (CVE-2024-48992) prostredníctvom spustenia interpretátora Ruby s premennou prostredia RUBYLIB.

    Zraniteľnosti sú spôsobené tým, že pri reštartovaní zmeneného skriptu utilita needrestart nastavuje premennú prostredia PYTHONPATH na základe obsahu súboru /proc/pid/environ, ktorú následne používa aj na spustenie vlastného Python kódu. Útočník môže teda čakať na aktivitu spojenú s prácou správcu balíkov APT, simulovať zmenu svojho skriptu a nastaviť pre neho premennú prostredia PYTHONPATH, ktorá bude tiež použitá pri spustení zabudovaného Python kódu v needrestart („import sys print(sys.path)“), ktorý sa vykonáva s právami root.

    Napríklad na využitie zraniteľnosti je možné spustiť trvalý Python proces v pamäti s nastavenou premennou prostredia „PYTHONPATH=/home/test“ a umiestniť zdieľanú knižnicu „/home/test/importlib/__init__.so“, ktorá bude vykonaná pri spúšťaní privilegovaného Python kódu v needrestart.

  • CVE-2024-48991 — lokálny používateľ môže dosiahnuť vykonanie kódu s právami root iniciovaním závodného stavu (race condition), v dôsledku čoho needrestart spustí fiktívny interpretátor Pythonu, ktorý nahradil útočník, namiesto systémového interpretátora Python. Podstata zraniteľnosti je podobná hore uvedenému problému, rozdiel spočíva len v tom, že needrestart určuje názov procesu Python (napríklad /usr/bin/python3) čítaním „/proc/pid/exe“.

    Na využitie zraniteľnosti je možné vytvoriť proces /home/test/race, ktorý pomocou mechanizmu inotify čaká na moment, keď needrestart začne čítať obsah /proc/pid/exe, a okamžite spustí systémový interpretátor Python cez funkciu execve. Keďže needrestart nevykonáva kontrolu, či je to ozaj Python, bude si myslieť, že /home/test/race je interpretátor Python a spustí ho pre svoj kód.

  • CVE-2024-11003 — lokálny používateľ môže dosiahnuť vykonanie ľubovoľných shell príkazov s právami root vytvorením podmienok na spracovanie v needrestart mien súborov vo formáte „príkaz|“, ktorých poslanie do Perl funkcie open() spôsobí spustenie príkazu. V podstate sa zraniteľnosť prejavuje v Perl module ScanDeps (CVE-2024-10224), ale je spôsobená odoslaním vonkajších parametrov do tohto modulu bez riadnej kontroly.

    Útok môže byť uskutočnený spustením Perl skriptu s symbolom „|“ v názve, napríklad „/home/test/perl|“. V priebehu vykonávania funkcie scan_deps() v needrestart bude tento súbor otvorený cez funkciu open(), ktorá spracuje symbol „|“ ako flag na spustenie programu „/home/test/perl“ a použitie výstupného prúdu z tohto programu.

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