Błąd w aktywatorze obrazów ELF w FreeBSD pozwala nieuprzywilejowanemu lokalnemu użytkownikowi na wyłączenie mechanizmu ASLR dla plików wykonywalnych setuid PIE. Powoduje to znaczące ułatwienie exploitacji ewentualnych podatności związanych z uszkodzeniem pamięci w tych binarnych plikach.
▸ Pokaż oryginał (EN)
The ELF image activator cleared per-process ASLR preference flags for setuid binaries after the code that computes the PIE base address, rather than before. As a result, a user-requested ASLR disable was still in effect at the point where the base address was chosen. An unprivileged local user can disable ASLR for a setuid PIE binary by calling procctl(2) before execve(2). This makes exploitation of any separate memory corruption vulnerability in that binary significantly easier.
Aktywator obrazów ELF czyszczył flagi preferencji ASLR dla procesów setuid dopiero po obliczeniu bazowego adresu PIE, zamiast przed tym krokiem. Oznacza to, że żądanie wyłączenia ASLR złożone przez użytkownika (za pomocą wywołania systemowego procctl(2) przed execve(2)) pozostawało aktywne w momencie wyboru adresu bazowego. W efekcie bazowy adres pamięci procesu setuid PIE był wybierany bez randomizacji, wbrew zamierzonemu zachowaniu systemu.
Atakujący może efektywnie wyłączyć ASLR dla dowolnego binarnego pliku setuid PIE, co znacząco ułatwia exploitację wszelkich odrębnych podatności związanych z uszkodzeniem pamięci w tych plikach, potencjalnie prowadząc do eskalacji uprawnień (privilege escalation).
Należy zastosować patche dostępne u producenta zgodnie z referencjami: https://security.freebsd.org/advisories/FreeBSD-SA-26:32.elf.asc
FreeBSD — wersje wskazane w referencjach producenta (FreeBSD-SA-26:32.elf)
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HFreebsd
OSFreebsd14.314.415.0
Powiązane podatności
FreeBSD UMTX_SHM_DESTROY: use-after-free umożliwiający RCE lub ucieczkę z sandboxa
RCE w implementacji NFS w OpenBSD i FreeBSD — zdalne wykonanie kodu
FreeBSD: przepełnienie bufora w obsłudze beacon 802.11s prowadzące do RCE
FreeBSD libc stdio: heap buffer overflow w funkcji __sflush()
FreeBSD pam_krb5 – pominięcie uwierzytelnienia przez brak weryfikacji TGT