CVE-2025-68260 ha sido ampliamente descrita como la primera CVE asignada a código Rust en el núcleo principal de Linux. La vulnerabilidad se encuentra en el controlador Android Binder basado en Rust (encuadernadora_óxido) y se describe como un fallo de clase crash: una condición de carrera que puede corromper punteros intrusivos linked-list y desencadenar kernel oops/panic (denegación de servicio).
Esto es importante para los equipos de seguridad por dos razones. En primer lugar, los fallos del kernel que "sólo fallan" siguen teniendo un impacto operativo real, especialmente en entornos de alta disponibilidad o multiusuario. En segundo lugar, la exposición depende de la configuración: muchos sistemas Linux no se verán afectados a menos que se active y utilice la implementación Rust Binder.
Resumen para ingenieros de seguridad
- CVE: CVE-2025-68260
- Componente: Controlador Rust Android Binder del núcleo Linux (
encuadernadora_óxido), con la participación deNodo::liberarylista_de_muertesmanejo de - Clase de error: Condición de carrera + manipulación intrusiva insegura de listas → corrupción de punteros.
- Impacto: Kernel crash / DoS (descrito públicamente)
- La exposición depende de: Si Rust Binder está activado/seleccionado (por ejemplo,
ANDROID_BINDER_IPC_RUST,binder.impl) - Estado NVD: "En espera de análisis" en el momento de redactar este documento (CVSS puede estar pendiente)
Qué es CVE-2025-68260: Un fallo de concurrencia en el controlador Rust Binder
El registro NVD describe una operación de eliminación insegura específica en una lista enlazada intrusiva. La operación es segura sólo si ningún otro hilo puede tocar simultáneamente el elemento anterior/siguiente punteros. El fallo se produce cuando un patrón de bloqueo en Nodo::liberar se solapa con un eliminarlo que provoca la corrupción de la lista de enlaces y fallos.
NVD incluye un síntoma representativo de fallo del kernel ("No se puede gestionar la solicitud de paginación del kernel...") asociado a los punteros de lista corruptos, consistente con una vulnerabilidad de clase crash más que con un sutil fallo lógico.
Un breve esbozo conceptual del patrón problemático (por intuición, no como hazaña) tiene este aspecto:
// Boceto conceptual (no código completo del kernel):
lock(lista_de_muertes);
move_all_items_to_local_list();
desbloquear(lista_muerte);
// Iterar sin el bloqueo
for item in lista_local {
// procesar elemento
}
// Hilo concurrente puede hacer:
unsafe { death_list.remove(item) } // toca los punteros anterior/siguiente
// => carrera de datos => corrupción de punteros => caída del kernel
La clave es la invariante de concurrencia: tocar punteros de lista intrusivos de forma segura requiere garantías de acceso exclusivo, y esas garantías fallan cuando los elementos de la lista pueden modificarse en paralelo durante el recorrido sin bloqueos.
Por qué se ha convertido en la "primera CVE del núcleo de Rust"
Greg Kroah-Hartman (mantenedor estable) ha calificado públicamente este problema como la primera CVE del núcleo para código Rust, haciendo hincapié en que el problema "sólo provoca un fallo" y no representa una vía demostrada para la corrupción de memoria armable.
Este encuadre es útil desde el punto de vista operativo: ayuda a los equipos de seguridad a clasificar el fallo como un riesgo de disponibilidad con una exposición dependiente de la configuración, al tiempo que se evita exagerar sobre la explotabilidad.
Sistemas afectados: Cronología de versiones y realidad de la configuración
Dos hechos anclan el modelo cronológico y de exposición:
- El controlador Rust Android Binder se integró en Linux v6.18-rc1según la documentación del proyecto Rust para Linux.
- La configuración del kernel de Android soporta explícitamente la selección de una implementación de Binder, incluyendo una variante de Rust. La documentación de Kconfig hace referencia a
binder.implcomo el mando de la línea de comandos del kernel utilizado para elegir la implementación e incluye opciones que rigen la predeterminada.
Esto significa que la exposición no es "todo Linux". Una flota de servidores genéricos puede que nunca habilite Rust Binder. Pero los kernels centrados en Android, las máquinas de desarrollo que ejecutan pilas de contenedores de Android o las compilaciones personalizadas que permiten la implementación de Rust Binder deben tratar CVE-2025-68260 como procesable.
El propio Binder es un mecanismo IPC fundamental de Android, ampliamente documentado por los materiales de arquitectura de Android.
Comprobaciones rápidas de exposición (auditables, sin contenido de explotación)
Utilice estos comandos para determinar si su entorno está dentro del ámbito de aplicación.
Versión del núcleo
uname -r
Configuración del núcleo: Rust + Binder + Rust Binder
# Distro-style /boot config (común en muchos sistemas)
grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST" /boot/config-$(uname -r) 2>/dev/null
# Si /proc/config.gz está habilitado
zcat /proc/config.gz 2>/dev/null | grep -E "CONFIG_ANDROID_BINDER_IPC(_RUST)?|CONFIG_RUST"
Selección de la implementación de binder (los kernels de Android suelen utilizar binder.impl)
cat /proc/cmdline | tr ' ' '\n' | grep -E '^binder\.impl='
En binder.impl está documentado en el Kconfig del kernel de Android como parte del comportamiento de selección de implementación.
Caza de señales de colisión (sólo síntomas)
dmesg -T | egrep -i "rust_binder|binder|Unable to handle|paging request|Oops|KASAN" | tail -n 200
Estrategia de corrección: Actualizar primero, respaldar sólo con CI real
Lo más seguro es pasar a una versión estable del núcleo que contenga la corrección. La cobertura pública hace hincapié en la actualización a kernels estables en lugar de seleccionar commits aislados, de acuerdo con las prácticas de estabilidad y pruebas del kernel.
El registro NVD incluye referencias a fuentes de kernel.org que rastrean el contexto de la corrección.
Si ejecuta un kernel de Android personalizado y no puede actualizarlo inmediatamente, la ruta de ingeniería suele ser: incorporar la corrección a su conjunto de parches actualizados y validarla en cargas de trabajo con un uso intensivo de Binder. Para la mayoría de las empresas, sin embargo, la opción pragmática es: consumir actualizaciones de proveedores (distro/OEM/GKI channel) y documentar las pruebas de reparación.
Tabla de triaje
| Campo | Valor |
|---|---|
| CVE | CVE-2025-68260 |
| Componente | Controlador Rust Android Binder (encuadernadora_óxido), Nodo::liberar / lista_de_muertes ruta |
| Clase de vulnerabilidad | Condición de carrera + corrupción de puntero de lista intrusiva insegura |
| Impacto en el peor de los casos | Kernel crash / DoS (descripción pública) |
| La exposición depende de | Rust Binder activado/seleccionado (ANDROID_BINDER_IPC_RUST, binder.impl) |
| Enriquecimiento NVD | "En espera de análisis" (puede estar pendiente) |
Contexto: CVEs del kernel relacionados para priorizar
CVE-2025-68260 se describe públicamente como crash-class. Para priorizar, muchas organizaciones comparan las CVE del kernel con un impacto de privilegios más claro:
- CVE-2019-2215 (Android Binder UAF / EoP): NVD describe una elevación de privilegios mediante un uso de Binder-after-free; Project Zero proporciona un análisis detallado.
- CVE-2022-0847 ("Tubería sucia"): ampliamente rastreado por escalada local de privilegios; CISA emitió una alerta.
- CVE-2024-1086 (nf_tables UAF / LPE): NVD y Red Hat resumen el potencial LPE de un use-after-free en netfilter/nf_tables.
La conclusión práctica: trate la CVE-2025-68260 como de alta prioridad cuando Binder/Rust Binder esté en uso activo y las caídas tengan un impacto en el negocio; de lo contrario, no deje que el titular "primera CVE de Rust" desplace a problemas del kernel de clase LPE más ampliamente alcanzables.
Operacionalizar la respuesta con Penligent
En el caso de las CVE de kernel dependientes de la configuración, el cuello de botella rara vez es la lectura del asesoramiento, sino la producción de respuestas defendibles y escalables a las preguntas "¿dónde estamos expuestos?" y "¿ha llegado realmente la corrección?". Penligent puede agilizar este ciclo convirtiendo CVE-2025-68260 en un flujo de trabajo de pruebas repetible: recopilar versiones del kernel y señales de configuración en todos los activos, agrupar hosts por habilitación de Rust Binder y binder.impl y generar un informe de corrección listo para la auditoría con referencias de apoyo. Este enfoque está diseñado para la verificación y el cierre, no para la explotación.
NVD: CVE-2025-68260
https://nvd.nist.gov/vuln/detail/CVE-2025-68260
Aviso de Greg Kroah-Hartman (crash framing; primera CVE del kernel Rust)
https://social.kernel.org/notice/B1JLrtkxEBazCPQHDM
Cobertura de SecurityOnline
https://securityonline.info/rusts-first-breach-cve-2025-68260-marks-the-first-rust-vulnerability-in-the-linux-kernel/
Rust para Linux: Android Binder Driver (fusionado en v6.18-rc1)
https://rust-for-linux.com/android-binder-driver
Kconfig del núcleo de Android (opciones de Binder Rust; selección de binder.impl)
https://android.googlesource.com/kernel/common/+/refs/tags/android15-6.6-2024-07_r44/drivers/android/Kconfig
Documentos Android: Visión general de Binder IPC
https://source.android.com/docs/core/architecture/hidl/binder-ipc
NVD: CVE-2019-2215
https://nvd.nist.gov/vuln/detail/CVE-2019-2215
Proyecto Cero RCA: CVE-2019-2215
https://googleprojectzero.github.io/0days-in-the-wild/0day-RCAs/2019/CVE-2019-2215.html
NVD: CVE-2022-0847
https://nvd.nist.gov/vuln/detail/CVE-2022-0847
Alerta CISA: Tubería sucia
https://www.cisa.gov/news-events/alerts/2022/03/10/dirty-pipe-privilege-escalation-vulnerability-linux
NVD: CVE-2024-1086
https://nvd.nist.gov/vuln/detail/cve-2024-1086
Red Hat: CVE-2024-1086
https://access.redhat.com/security/cve/cve-2024-1086

