Linux 7.4 añade TAINT_FORCED_BIND para las vinculaciones forzadas de controladores
Linux 7.4 marcará el kernel con el indicador Y cada vez que se usen los archivos sysfs de bind o unbind de un controlador, tras una avalancha de informes de errores inútiles del fuzzing de syzbot.
4 min de lectura

Linux 7.4 marcará cualquier kernel en el que alguien haya vinculado a mano un controlador a un dispositivo. El nuevo indicador TAINT_FORCED_BIND de Greg Kroah-Hartman, que se muestra como la letra Y, marca los informes de fallos de sistemas que usaron los archivos bind y unbind de sysfs. Las herramientas de fuzzing habían usado esos archivos para forzar controladores sobre hardware inadecuado. El resultado fue una avalancha de informes de errores que no importan a ningún usuario real.
Phoronix informó el 19 de octubre de 2026 de que el cambio está en la pull request del driver core para Linux 7.4. Esa pull request se envió antes de que se abriera la ventana de fusión de 7.4. Linux 7.3 salió el 18 de octubre, y la ventana de fusión de 7.4, el periodo en el que entran las nuevas funciones, se abrió al día siguiente.
Qué hace TAINT_FORCED_BIND
Un taint es una marca que el kernel se pone a sí mismo cuando ha ocurrido algo inusual. Se imprime en los informes de fallos. Un desarrollador que lea uno sabe entonces que el sistema no estaba en un estado normal.
sysfs es un sistema de archivos virtual, montado en /sys, que muestra los objetos del kernel como archivos. Cada controlador tiene un archivo «bind» y otro «unbind». Escribir en ellos el ID de bus de un dispositivo vincula o desvincula ese controlador a mano, explica Phoronix.
El parche de Kroah-Hartman activa el nuevo indicador «si alguna vez se escribe en los archivos sysfs bind/unbind», según su carta de presentación. «El indicador es “Y”, que no se usaba». El indicador se activa antes de que se ejecute el propio código de bind o unbind del controlador. Los fallos suelen ocurrir dentro de ese código, así que el informe oops resultante muestra lo que se intentó. Un oops es el informe de error del kernel ante un fallo grave.
| Detalle | TAINT_FORCED_BIND |
|---|---|
| Letra de taint | Y |
| Se activa cuando | Se escribe en el archivo sysfs bind o unbind de un controlador |
| Momento | Antes de que se ejecute el callback de bind o unbind |
| Llega en | La pull request del driver core de Linux 7.4 |
| Historial del parche | Primera publicación el 26 de agosto, v2 el 31 de agosto, v3 el 4 de septiembre de 2026 |
| Archivos modificados | 8, entre ellos drivers/base/bus.c y kernel/panic.c |
Por qué syzbot forzó el cambio
El fuzzing consiste en dar a un programa entradas aleatorias o inesperadas para encontrar fallos. syzbot es un fuzzer automatizado que se ejecuta contra el kernel. Según Kroah-Hartman, la interfaz bind «ha sufrido abusos y recientemente ha sido objeto de un gran “ataque” de fuzzing mediante herramientas como syzbot».
syzbot empezó a vincular controladores a dispositivos para los que nunca se escribieron. Kroah-Hartman escribió que esto provocó «montones de errores innecesarios y parches del kernel inútiles» por parte de nuevos desarrolladores. La interfaz se pensó para ayudar a los desarrolladores del kernel a trabajar más rápido en los controladores. También era «una vía de depuración para que los usuarios intentaran añadir un nuevo dispositivo a un controlador sin tener que recompilar su kernel».
No se bloquea nada. Las configuraciones que dependen de bind y unbind «seguirán funcionando correctamente, pero ahora el kernel quedará marcado», dice la carta de presentación de la v3. En los fallos reales de use-after-free encontrados de esta forma «se debería seguir trabajando». Un fallo use-after-free es código que accede a la memoria después de liberarla, una fuente clásica de agujeros de seguridad.
Kroah-Hartman también dijo a los operadores de fuzzers qué deben hacer. Las herramientas sin reglas escritas a mano deberían «ejecutarse con panic_on_taint activado para que se caigan y no sigan adelante». El ajuste panic_on_taint detiene el kernel en cuanto queda marcado.
Las avalanchas de informes de poco valor son un problema más amplio este año. Google pausó su programa de recompensas por errores de código abierto el 1 de octubre tras un aumento de envíos generados por IA.
Objeciones de usuarios de VFIO y USB
No a todos los revisores les gustó el compromiso. Un bot de revisión, sashiko-bot, calificó de preocupación «alta» que configuraciones legítimas quedaran ahora marcadas con el taint. Mencionó VFIO, que cede un dispositivo a una máquina virtual, además de las redes DPDK y USB sobre IP. Phoronix incluye los reinicios de hardware y el paso de dispositivos a una máquina virtual entre los usos legítimos.
Al responder al bot, Kroah-Hartman dijo que ese uso «no es una configuración “estándar”» y que es «un abuso de la API». Armin Wolf señaló que vfio-pci con driver_override todavía necesita bind y unbind. Propuso aplicar el taint en driver_override en su lugar. Kroah-Hartman respondió que así no se detectarían las eliminaciones forzadas. «Se está activando un indicador de taint, no un pánico», escribió.
Johan Hovold calificó el taint de «un buen compromiso» frente a añadir complejidad u ocultar los archivos. Dio al parche las etiquetas Reviewed-by y Tested-by. Aaron Tomlin y Bradley Morgan también lo revisaron.
Qué significa esto para los desarrolladores
- Revise la salida de taint tras pasar a Linux 7.4. Si vuelve a vincular dispositivos a través de sysfs para passthrough con VFIO, DPDK o USB sobre IP, cuente con el indicador Y. Aparecerá en /proc/sys/kernel/tainted y en los informes de fallos.
- Explique la Y en los informes de errores. Los mantenedores pueden leer un informe con taint Y como un problema de vinculación forzada y dejarlo de lado. Si su fallo es real, indique cómo vincula el dispositivo y si ocurre sin una vinculación manual.
- Operadores de fuzzers: activen panic_on_taint. Es la petición directa de Kroah-Hartman para las herramientas que escriben en bind y unbind sin reglas de exclusión. La ejecución se detiene en la vinculación forzada en lugar de producir un informe que nadie atenderá.
- Autores de controladores: los fallos siguen contando. Kroah-Hartman dice que los fallos reales de use-after-free alcanzados mediante bind y unbind todavía deben corregirse. Phoronix señala que la misma pull request del driver core de 7.4 también trae nuevas incorporaciones de Rust para los controladores del kernel.
- Siga de cerca la versión final de 7.4. Wolf preguntó si el taint podría aplicarse solo a los buses que no admiten la conexión en caliente. Cualquier cambio así reduciría quién ve el indicador Y.
Fuentes
- TAINT_FORCED_BIND Sent In For Linux 7.4 To Deal With Major Fuzzing Attack - Phoronix
- [PATCH v2 0/2] driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers - linux-trace-kernel mailing list
- [PATCH v3 0/2] driver core: add TAINT_FORCED_BIND for when userspace manually messes with devices and drivers - linux-modules mailing list
- Linux Kernel Introducing New Taint Due To Fuzzing Bots Yielding Impractical Bug Reports - Phoronix
Artículos relacionados

Nix y Lix corrigen fallos en su demonio que permiten obtener root en local
Nix y Lix revelaron el 13 de octubre fallos que, encadenados, dan acceso root. Las correcciones están en Nix 2.35.3 y Lix 2.95.4, entre otras versiones de parche.

Archinstall 4.5 añade arranque AArch64 y kernels RT
Archinstall 4.5, publicado el 29 de septiembre de 2026, instala equipos ARM de 64 bits con GRUB o Limine, añade kernels de tiempo real y activa la verificación TLS.

Un binario strip manipulado puede colar una puerta trasera en todo NixOS
Unos investigadores han construido el ataque trusting-trust de Ken Thompson con GNU strip, no con un compilador, y han colado puertas traseras en casi todo un instalador de NixOS.