CVE-2026-58092 in FreeBSDinformación

Resumen

por VulDB • 2026-08-26

En FreeBSD 15.0, la estructura del kernel utilizada para representar las credenciales de usuario cambió: anteriormente, el ID de grupo primario se almacenaba en el primer elemento del array que contenía la lista de IDs de grupos suplementarios; ahora, el ID de grupo primario se almacena en un campo dedicado. Este cambio fue principalmente interno al kernel y no visible para los usuarios.

Una función, `group_is_primary()`, no se actualizó correctamente como parte de esta transición. Esta función es utilizada por `mac_do` para determinar el ID de grupo primario de la credencial después de aplicar una regla de transición, lo cual se usa cuando el objetivo de la regla no especifica explícitamente un grupo.

Como resultado, con ciertas reglas de `mac_do`, es posible que un cambio de credenciales establezca incorrectamente el ID de grupo primario en el ID almacenado en el primer elemento del array de grupos suplementarios de la credencial original.

Si la lista de grupos suplementarios está vacía, este valor será 0, correspondiente al grupo "wheel". Por ejemplo, una regla como `uid=1001>uid=1002` puede ser abusada para establecer el ID de grupo primario en 0 incluso si el proceso no pertenecía originalmente al grupo 0.

Ciertas reglas de `mac_do` pueden ser abusadas para establecer el ID de grupo de un proceso en 0. Sin embargo, tenga en cuenta que la regla debe aplicarse al llamador (caller) para que se active el error; por ejemplo, dado el conjunto de reglas `uid=1001>uid=1002`, el usuario debe tener el ID de usuario 1001 para activar el bug.

Además, los usuarios conectados generalmente tendrán una lista de grupos suplementarios no vacía, en cuyo caso el error puede usarse como mucho para establecer el primer ID de grupo suplementario de la credencial como su ID de grupo primario. Los procesos deben eliminarse explícitamente de todos los grupos suplementarios utilizando la llamada al sistema privilegiada `setgroups(2)` para aprovechar el bug y establecer 0 como el ID de grupo primario.

Dado que la pertenencia al grupo 0 se utiliza a menudo para habilitar una escalación controlada de privilegios, el error podría ser explotable aún más para obtener privilegios root, dependiendo de la configuración del sistema. Por ejemplo, un conjunto de reglas como el siguiente podría ser explotado por un proceso ejecutándose como usuario 1001 y con una lista vacía de grupos suplementarios: `uid=1001>uid=1002;gid=0>uid=0`.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Freebsd

Reservar

2026-06-29

Divulgación

2026-08-26

Moderación

aceptado

Artículo

VDB-395664

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Do you know our Splunk app?

Download it now for free!