Ranjivost u execve sistemskom pozivu koji odobrava root pristup u FreeBSD-u

U FreeBSD-u je otkrivena ranjivost (CVE-2026-7270) koja omogućava neprivilegovanom korisniku da izvrši kernel kod i dobije root pristup sistemu. Ranjivost utiče na sva izdanja FreeBSD-a objavljena od 2013. godine. Eksploatacija je javno dostupna i testirana je na sistemima koji koriste FreeBSD od 11.0 do 14.4. Ranjivost je ispravljena u FreeBSD-u 15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12 i 13.5-RELEASE-p13. Za starija izdanja dostupna je zakrpa.

Problem je uzrokovan prekoračenjem bafera u sistemskom pozivu execve. Ovo se dešava prilikom obrade prefiksa navedenog u prvom redu skripte kako bi se odredila putanja do interpretera (na primjer, "#!/bin/sh"). Prekoračenje se dešava tokom poziva funkcije memmove zbog pogrešno konstruisanog matematičkog izraza za izračunavanje veličine argumenata kopiranih u bafer. Umjesto oduzimanja vrijednosti "args->begin_argv" i "consume" od "args->endp", samo je vrijednost "args->begin_argv" oduzeta od "args->endp", a varijabla "consume" je dodana rezultatu, umjesto da je oduzeta, tj. kao rezultat toga, više podataka je kopirano za dvije vrijednosti "consume". memmove(args->begin_argv + extend, args->begin_argv + consume, - args->endp - args->begin_argv + consume); + args->kraj_argv — (args->početak_argv + konzumiraj));

Prelijevanje (overflow) omogućava prepisivanje elemenata strukture "exec_map" alociranih u susjednoj memoriji iz drugog procesa. Eksploit koristi prelijevanje (overflow) za prepisivanje sadržaja "exec_map" privilegovanih procesa koji se periodično pokreću na sistemu. Odabrani proces je sshd, koji, svaki put kada se uspostavi mrežna veza, generira i izvršava proces "/usr/libexec/sshd-session" s root privilegijama.

Eksploit zamjenjuje varijablu okruženja "LD_PRELOAD=/tmp/evil.so" za ovaj proces, uzrokujući učitavanje njegove biblioteke u kontekstu sshd-session. Ubrizgana biblioteka kreira izvršnu datoteku pod nazivom /tmp/rootsh u datotečnom sistemu sa suid root zastavom. Stopa uspjeha eksploita procjenjuje se na 0.6%, ali zahvaljujući cikličnom ponovnom pokušaju, uspješna eksploitacija se postiže za otprilike 6 sekundi na sistemu sa 4-jezgrenim CPU-om.

 Ranjivost u execve sistemskom pozivu koji odobrava root pristup u FreeBSD-u

Pored toga, u FreeBSD-u je ispravljeno još nekoliko ranjivosti:

  • CVE-2026-35547 i CVE-2026-39457 su prelijevanja bafera u biblioteci libnv, koja se koristi u kernelu i u osnovnim sistemskim aplikacijama za obradu lista ključ/vrijednost i rukovanje međuprocesnom komunikacijom. Prvi problem je uzrokovan netačnim izračunavanjem veličine poruke prilikom obrade posebno kreiranih zaglavlja IPC poruka. Drugi problem rezultira prelijevanjem steka tokom komunikacije putem socketa zbog nedostatka provjera koje bi osigurale da veličina deskriptora socketa odgovara veličini bafera korištenoj u funkciji select(). Ove ranjivosti se potencijalno mogu iskoristiti za eskalaciju privilegija.
  • CVE-2026-42512 je prekoračenje bafera u dhclientu koje se može daljinski iskoristiti zbog netačnog izračuna veličine niza pokazivača koji se koristi za prosljeđivanje varijabli okruženja dhclient-scriptu. Moguće je kreirati exploit za daljinsko izvršavanje koda slanjem posebno kreiranog DHCP paketa.
  • CVE-2026-7164 – Ranjivost prelijevanja steka u pf filteru paketa javlja se prilikom obrade posebno kreiranih SCTP paketa. Problem je uzrokovan neograničenim rekurzivnim parsiranjem SCTP parametara.
  • CVE-2026-42511 – Moguće je umetnuti proizvoljne direktive u dhclient.conf zbog neadekvatnog izbjegavanja dvostrukih zagrada u BOOTP poljima primljenim od eksternog DHCP servera. Kada dhclient proces naknadno analizira ovu datoteku, napadačevo specificirano polje se prosljeđuje dhclient-scriptu, koji se može koristiti za izvršavanje proizvoljnih naredbi s root privilegijama na sistemima koji pokreću dhclient prilikom pristupa DHCP serveru kojim upravlja napadač.
  • CVE-2026-6386 — Nedovoljno rukovanje velikim memorijskim stranicama u kernel funkciji pmap_pkru_update_range(). Neprivilegovani korisnik može uzrokovati da pmap_pkru_update_range() tretira memoriju korisničkog prostora kao stranicu u tabeli memorijskih stranica, čime prepisuje neovlašteno područje memorije.
  • CVE-2026-5398 - Referenca na prethodno oslobođenu memorijsku regiju u TIOCNOTTY rukovatelju omogućava neprivilegovanom procesu da dobije root privilegije.

izvor: opennet.ru