Zranitelnost v systémovém volání execve, které uděluje root přístup ve FreeBSD

Ve FreeBSD byla objevena zranitelnost (CVE-2026-7270), která umožňuje neoprávněnému uživateli spustit kód jádra a získat root přístup k systému. Tato zranitelnost se týká všech verzí FreeBSD vydaných od roku 2013. Exploit byl veřejně dostupný a byl testován na systémech s verzemi FreeBSD 11.0 až 14.4. Zranitelnost byla opravena ve verzích FreeBSD 15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12 a 13.5-RELEASE-p13. Pro starší verze je k dispozici oprava.

Problém je způsoben přetečením vyrovnávací paměti v systémovém volání execve. K tomu dochází při zpracování prefixu uvedeného v prvním řádku skriptů pro určení cesty k interpretu (například "#!/bin/sh"). K přetečení dochází během volání funkce memmove kvůli nesprávně konstruovanému matematickému výrazu pro výpočet velikosti argumentů kopírovaných do vyrovnávací paměti. Místo odečtení hodnot "args->begin_argv" a "consume" od "args->endp" byla odečtena pouze hodnota "args->begin_argv" od "args->endp" a proměnná "consume" byla k výsledku přidána, nikoli odečtena, tj. v důsledku toho bylo o dvě hodnoty "consume" zkopírováno více dat. memmove(args->begin_argv + extend, args->begin_argv + consume, - args->endp - args->begin_argv + consume); + argumenty->konec_argumentu — (args->začátek_argumentu + konzumace));

Přetečení umožňuje přepsat prvky struktury „exec_map“ alokované v sousední paměti z jiného procesu. Zranitelnost využívá přetečení k přepsání obsahu „exec_map“ privilegovaných procesů periodicky spouštěných v systému. Zvoleným procesem je sshd, který pokaždé, když je navázáno síťové připojení, rozvětví a spustí proces „/usr/libexec/sshd-session“ s root oprávněními.

Exploit nahrazuje proměnnou prostředí „LD_PRELOAD=/tmp/evil.so“ pro tento proces, což způsobuje načtení jeho knihovny v kontextu sshd-session. Vložená knihovna vytvoří v souborovém systému spustitelný soubor s názvem /tmp/rootsh s příznakem suid root. Míra úspěšnosti exploitu se odhaduje na 0.6 %, ale díky cyklickému opakování je úspěšného exploitu na systému se 4jádrovým CPU dosaženo přibližně za 6 sekund.

 Zranitelnost v systémovém volání execve, které uděluje root přístup ve FreeBSD

Kromě toho bylo ve FreeBSD opraveno několik dalších zranitelností:

  • CVE-2026-35547 a CVE-2026-39457 představují chyby přetečení vyrovnávací paměti v knihovně libnv, která se používá v jádře a v základních systémových aplikacích ke zpracování seznamů klíč/hodnota a ke zpracování komunikace mezi procesy. První problém je způsoben nesprávným výpočtem velikosti zprávy při zpracování speciálně vytvořených záhlaví zpráv IPC. Druhý problém má za následek přetečení zásobníku během komunikace přes socket kvůli nedostatku kontrol, které by zajistily, že velikost deskriptoru socketu odpovídá velikosti vyrovnávací paměti použité ve funkci select(). Tyto zranitelnosti lze potenciálně zneužít k eskalaci oprávnění.
  • CVE-2026-42512 je vzdáleně zneužitelné přetečení vyrovnávací paměti v dhclientu z důvodu nesprávného výpočtu velikosti pole ukazatelů použitého k předávání proměnných prostředí do dhclient-scriptu. Je možné vytvořit zneužití pro vzdálené spuštění kódu odesláním speciálně vytvořeného DHCP paketu.
  • CVE-2026-7164 – Při zpracování speciálně vytvořených paketů SCTP dochází k zranitelnosti způsobující přetečení zásobníku ve filtru paketů pf. Problém je způsoben neomezenou rekurzivní analýzou parametrů SCTP.
  • CVE-2026-42511 – Do souboru dhclient.conf je možné vkládat libovolné direktivy kvůli nedostatečnému escapování dvojitých závorek v polích BOOTP přijatých z externího DHCP serveru. Když proces dhclient následně analyzuje tento soubor, je útočníkem zadané pole předáno skriptu dhclient-script, který lze použít ke spuštění libovolných příkazů s oprávněními root na systémech se spuštěným dhclientem při přístupu k DHCP serveru ovládanému útočníkem.
  • CVE-2026-6386 — Nedostatečné zpracování velkých paměťových stránek v jádrové funkci pmap_pkru_update_range(). Neprivilegovaný uživatel může způsobit, že funkce pmap_pkru_update_range() bude považovat paměť uživatelského prostoru za stránku v tabulce stránek paměti, a tím přepíše neoprávněnou oblast paměti.
  • CVE-2026-5398 - Odkaz na dříve uvolněnou oblast paměti v obslužné rutině TIOCNOTTY umožňuje neprivilegovanému procesu získat root oprávnění.

Zdroj: opennet.ru