FreeBSD va publicar el 9 de juny de 2026 l’avís SA-26:30, que corregeix una escalada de privilegis local al Linuxulator, la capa de compatibilitat que permet executar binaris de Linux directament sobre el nucli de FreeBSD. El fallo té assignat el CVE-2026-49413 i afecta qualsevol sistema que carregui el mòdul de compatibilitat Linux i tingui binaris Linux amb el bit setuid o setgid.
El problema és en com el Linuxulator decideix si un procés s’executa amb privilegis elevats durant execve(2). Per protegir-se de les injeccions, el carregador dinàmic de Linux ignora variables com ara LD_PRELOAD quan el binari és setuid o setgid. Aquesta decisió depèn del valor del flag AT_SECURE que el nucli col·loca al vector auxiliar que es passa al nou programa. Si AT_SECURE val 1, el carregador entra en mode segur i descarta LD_PRELOAD.
Aquí era l’error. El Linuxulator comprovava el flag de procés P_SUGID per decidir el valor d’AT_SECURE, però aquest flag encara no s’ha establert en el moment en què es construeix el vector auxiliar dins de la seqüència d’execve. La comprovació arribava massa aviat, de manera que AT_SECURE acabava posat a zero fins i tot per a un binari setuid. Amb el carregador convençut que el procés no era privilegiat, LD_PRELOAD es respectava amb normalitat.
A partir d’aquí l’atac és directe. Un usuari local sense privilegis apunta LD_PRELOAD a una llibreria compartida pròpia i llança un binari Linux set-user-ID o set-group-ID. La llibreria es carrega a l’espai del procés ja amb els privilegis del binari, normalment root, i l’atacant executa el seu codi amb aquests permisos. És una escalada local clàssica: no permet accés remot, però converteix un compte d’usuari comú en control total del sistema.
A qui afecta
L’avís marca com a vulnerables totes les versions suportades a les branques stable/15, releng/15.1, releng/15.0, stable/14, releng/14.4 i releng/14.3. La condició pràctica és doble: cal tenir carregat el mòdul del Linuxulator (linux.ko o linux64.ko) i disposar de com a mínim un binari Linux amb setuid o setgid. Un FreeBSD sense la capa de compatibilitat Linux activa, o sense aquests binaris, no està exposat a aquest vector concret.
La gravetat és alta dins de la seva categoria. No és remota ni dona per si sola el primer accés, però en sistemes multiusuari o que executen programari Linux setuid sota el Linuxulator ofereix un camí net cap a root.
Mitigació i pegat
La correcció retarda la lectura de l’estat de privilegis fins que P_SUGID ja està fixat, de manera que AT_SECURE reflecteix correctament que el binari és setuid i el carregador descarta LD_PRELOAD.
Per aplicar el pegat en sistemes amb FreeBSD compilat a partir de binaris oficials:
freebsd-update fetch
freebsd-update install
Després reinicia perquè el nucli pegat entri en ús. Si compiles el nucli des de les fonts, aplica el pegat oficial de SA-26:30 i recompila i instal·la el nucli seguint el procediment habitual. Com a mitigació temporal, descarregar el mòdul del Linuxulator o retirar el bit setuid/setgid dels binaris Linux elimina la via d’explotació fins que puguis aplicar el pegat.
Si gestiones FreeBSD, val la pena revisar el conjunt complet d’avisos publicats aquell mateix 9 de juny, ja que el projecte va alliberar diversos pegats alhora. Pots consultar la fitxa de FreeBSD per veure la resta d’informació del sistema.
Font
- Avís oficial: FreeBSD-SA-26:30.linux
- CVE-2026-49413 al NVD