Zraniteľnosť v systémovom volaní execve, ktoré udeľuje root prístup vo FreeBSD

V systéme FreeBSD bola objavená zraniteľnosť (CVE-2026-7270), ktorá umožňuje neprivilegovanému používateľovi spustiť kód jadra a získať root prístup k systému. Táto zraniteľnosť postihuje všetky vydania systému FreeBSD vydané od roku 2013. Zraniteľnosť bola verejne dostupná a testovaná na systémoch s verziami FreeBSD 11.0 až 14.4. Zraniteľnosť bola opravená vo verziách FreeBSD 15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12 a 13.5-RELEASE-p13. Pre staršie vydania je k dispozícii oprava.

Problém je spôsobený pretečením vyrovnávacej pamäte v systémovom volaní execve. K tomu dochádza pri spracovaní prefixu uvedeného v prvom riadku skriptov na určenie cesty k interpretovi (napríklad "#!/bin/sh"). K pretečeniu dochádza počas volania funkcie memmove z dôvodu nesprávne zostaveného matematického výrazu na výpočet veľkosti argumentov skopírovaných do vyrovnávacej pamäte. Namiesto odčítania hodnôt "args->begin_argv" a "consume" od "args->endp" bola odčítaná iba hodnota "args->begin_argv" od "args->endp" a premenná "consume" bola k výsledku pripočítaná, nie odčítaná, t. j. v dôsledku toho bolo o dve hodnoty "consume" skopírovaných viac údajov. memmove(args->begin_argv + extend, args->begin_argv + consume, - args->endp - args->begin_argv + consume); + argumenty->koniec — (args->začiatok_argumentu + spotreba));

Pretečenie umožňuje prepísať prvky štruktúry „exec_map“ alokované v susednej pamäti z iného procesu. Zraniteľnosť využíva pretečenie na prepísanie obsahu „exec_map“ privilegovaných procesov periodicky spúšťaných v systéme. Zvoleným procesom je sshd, ktorý pri každom nadviazaní sieťového pripojenia rozdvojí a spustí proces „/usr/libexec/sshd-session“ s oprávneniami root.

Exploit nahradí premennú prostredia „LD_PRELOAD=/tmp/evil.so“ pre tento proces, čo spôsobí načítanie jeho knižnice v kontexte sshd-session. Vložená knižnica vytvorí spustiteľný súbor s názvom /tmp/rootsh v súborovom systéme s príznakom suid root. Úspešnosť exploitu sa odhaduje na 0.6 %, ale vďaka cyklickému opakovaniu sa úspešné zneužitie dosiahne približne za 6 sekúnd na systéme so 4-jadrovým procesorom.

 Zraniteľnosť v systémovom volaní execve, ktoré udeľuje root prístup vo FreeBSD

Okrem toho bolo vo FreeBSD opravených niekoľko ďalších zraniteľností:

  • CVE-2026-35547 a CVE-2026-39457 predstavujú pretečenia vyrovnávacej pamäte v knižnici libnv, ktorá sa používa v jadre a v základných systémových aplikáciách na spracovanie zoznamov kľúčov/hodnot a na spracovanie komunikácie medzi procesmi. Prvý problém je spôsobený nesprávnym výpočtom veľkosti správy pri spracovaní špeciálne vytvorených hlavičiek správ IPC. Druhý problém má za následok pretečenie zásobníka počas komunikácie cez socket z dôvodu nedostatku kontrol, ktoré by zabezpečili, že veľkosť deskriptora socketu zodpovedá veľkosti vyrovnávacej pamäte použitej vo funkcii select(). Tieto zraniteľnosti je možné potenciálne zneužiť na zvýšenie privilégií.
  • CVE-2026-42512 je vzdialene zneužiteľné pretečenie vyrovnávacej pamäte v dhclient z dôvodu nesprávneho výpočtu veľkosti poľa ukazovateľov použitého na odovzdávanie premenných prostredia do dhclient-script. Je možné vytvoriť zneužitie pre vzdialené spustenie kódu odoslaním špeciálne vytvoreného DHCP paketu.
  • CVE-2026-7164 – Pri spracovaní špeciálne vytvorených paketov SCTP sa vo filtri paketov pf vyskytuje zraniteľnosť typu pretečenie zásobníka. Problém je spôsobený neobmedzenou rekurzívnou analýzou parametrov SCTP.
  • CVE-2026-42511 – Do súboru dhclient.conf je možné vložiť ľubovoľné direktívy z dôvodu nedostatočného escapovania dvojitých zátvoriek v poliach BOOTP prijatých z externého DHCP servera. Keď proces dhclient následne analyzuje tento súbor, útočníkom zadané pole sa odovzdá skriptu dhclient-script, ktorý možno použiť na vykonávanie ľubovoľných príkazov s oprávneniami root na systémoch so spusteným dhclientom pri prístupe k DHCP serveru ovládanému útočníkom.
  • CVE-2026-6386 – Nedostatočné spracovanie veľkých pamäťových stránok vo funkcii jadra pmap_pkru_update_range(). Neprivilegovaný používateľ môže spôsobiť, že pmap_pkru_update_range() bude považovať pamäť používateľského priestoru za stránku v tabuľke stránok pamäte, čím prepíše neoprávnenú oblasť pamäte.
  • CVE-2026-5398 – Odkaz na predtým uvoľnenú oblasť pamäte v obslužnom programe TIOCNOTTY umožňuje neprivilegovanému procesu získať root privilégiá.

Zdroj: opennet.ru