Vulnerabilitetet në utilitarin needrestart, të cilat lejojnë akses root në Ubuntu Server

Kompania Qualys zbuloi tre vulnerabilitete në utilitarin needrestart, i destinuar për të rinisur proceset në sfond pas azhurnimit të librarive të përdorura nga proceset në fjalë. Duke filluar nga Ubuntu 21.04, utilitari needrestart është i përfshirë në mjedisin bazë të Ubuntu Server, ku fillohet me të drejtat e root në fund të çdo transaksioni të menaxherit të paketave APT, skanon proceset aktive dhe rinis ato që lidhen me skedarët e ndryshuar pas azhurnimit të pakove. Vulnerabilitetet e zbuluara lejojnë një përdorues lokal pa privilegje të fitojë të drejtat e root në Ubuntu Server në konfigurimin e tij të paracaktuar.

Vulnerabilitetet janë të pranishme në needrestart që nga versioni 0.8 (2014) dhe janë korrigjuar në lëshimin needrestart 3.8. Problemet gjithashtu janë tashmë të riparuara në distribucione të Debian dhe Ubuntu. Si një mënyrë anashkalimi për të bllokuar shfrytëzimin e vulnerabilitetit, mund të çaktivizoni skanimin e interpretueseve duke specifikuar në skedarin e konfigurimit /etc/needrestart/needrestart.conf parameterin "$nrconf{interpscan} = 0".

Vulnerabilitetet janë të pranishme në kodin me realizimin e modit të identifikimit të azhurnimit të skripteve, të cilat janë të nisura duke përdorur interpretuese. Problemet e zbuluara janë:

  • CVE-2024-48990 — njĂ« pĂ«rdorues lokal mund tĂ« arrijĂ« tĂ« ekzekutojĂ« kodin me tĂ« drejtat e root duke krijuar kushte pĂ«r tĂ« nisur Python-intepreterin me variablin e mjedisit PYTHONPATH tĂ« vendosur nga sulmuesi. PĂ«rveç pĂ«rdorimit tĂ« Python, sulmi gjithashtu mund tĂ« realizohet (CVE-2024-48992) pĂ«rmes nisjes sĂ« interpretueseve Ruby me variablin e mjedisit RUBYLIB.

    Vulnerabilitetet janë shkaktuar nga fakti që gjatë rinisjes së skenarit të ndryshuar, utilitari needrestart vendos variablin e mjedisit PYTHONPATH në bazë të përmbajtjes së skedarit /proc/pid/environ, të cilin më pas e përdor për të nisur kodin e tij Python. Kështu, sulmuesi mund të presë aktivitetin e lidhur me funksionimin e menaxherit të paketave APT, të simulojë ndryshimin e skenarit të tij dhe të vendosë për të njëjtin variabël mjedisi PYTHONPATH, i cili gjithashtu do të aplikohet gjatë nisjes së kodit integruar në needrestart Python ("import sys\n print(sys.path)"), i ekzekutuar me të drejtat e root.

    Për shembull, për të shfrytëzuar vulnerabilitetin, mund të filloni një proces Python që mbahet vazhdimisht në memorie, duke vendosur për të variablin e mjedisit "PYTHONPATH=/home/test" dhe duke vendosur bibliotekën e ndarë "/home/test/importlib/__init__.so", e cila do të ekzekutohet gjatë ekzekutimit të kodit Python me privilegje në needrestart.

  • CVE-2024-48991 — njĂ« pĂ«rdorues lokal mund tĂ« arrijĂ« tĂ« ekzekutojĂ« kodin me tĂ« drejtat e root pĂ«rmes nisjes sĂ« njĂ« gjendjeje garash (race condition), si rezultat, needrestart do tĂ« nisĂ« njĂ« interpretor tĂ« rremĂ« Python, tĂ« vendosur nga sulmuesi, nĂ« vend tĂ« interpretorit sistemik Python. Natyra e vulnerabilitetit Ă«shtĂ« e ngjashme me problemin e pĂ«rmendur mĂ« sipĂ«r, me ndryshimin vetĂ«m se needrestart e pĂ«rcakton emrin e procesit Python (p.sh. /usr/bin/python3) duke lexuar "/proc/pid/exe".

    Për të shfrytëzuar vulnerabilitetin, mund të krijoni një proces /home/test/race, i cili përmes mekanizmit inotify do të presë momentin kur needrestart fillon të lexojë përmbajtjen e /proc/pid/exe, dhe menjëherë të nisë interpretorin sistemik Python përmes funksionit execve. Duke pasur parasysh se needrestart nuk bën verifikimin nëse ky është realmente Python, do ta konsiderojë se /home/test/race është interpretor Python dhe do ta nisë atë për kodin e tij.

  • CVE-2024-11003 — njĂ« pĂ«rdorues lokal mund tĂ« arrijĂ« tĂ« ekzekutojĂ« komanda tĂ« rastit shell me tĂ« drejtat e root pĂ«rmes krijimit tĂ« kushteve pĂ«r trajtimin nĂ« needrestart tĂ« emrave tĂ« skedarĂ«ve nĂ« formatin "komanda|", kalimi i tĂ« cilave nĂ« funksionin Perl open() do tĂ« çojĂ« nĂ« nisjen e komandĂ«s. Faktikisht, vulnerabiliteti shfaqet nĂ« modulin Perl ScanDeps (CVE-2024-10224), por shkaktohet nga kalimi i parametrave tĂ« jashtĂ«m nĂ« kĂ«tĂ« module pa verifikim tĂ« duhur.

    Sulmi mund të realizohet përmes nisjes së një skripti Perl me simbolin "|" në emër, për shembull, "/home/test/perl|". Gjatë ekzekutimit të funksionit scan_deps() në needrestart, ky skedar do të hapet përmes funksionit open(), i cili do ta trajtojë simbolin "|" si një flamur për nisjen e programit "/home/test/perl" dhe përdorimin e daljes së marrë nga ky program.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster