Linux 7.4 ajoute TAINT_FORCED_BIND pour les liaisons forcées de pilotes
Linux 7.4 marquera le noyau du drapeau Y dès que les fichiers sysfs bind ou unbind des pilotes sont utilisés, après une pile de rapports de bugs inutiles issus du fuzzing de syzbot.
4 min de lecture

Linux 7.4 signalera tout noyau sur lequel quelqu'un a attaché un pilote à un périphérique à la main. Le nouveau drapeau TAINT_FORCED_BIND de Greg Kroah-Hartman, affiché sous la forme de la lettre Y, marque les rapports de plantage des systèmes qui ont utilisé les fichiers sysfs bind et unbind. Des outils de fuzzing utilisaient ces fichiers pour forcer des pilotes sur du matériel inadapté. Résultat : un déluge de rapports de bugs sans importance pour aucun utilisateur réel.
Phoronix a rapporté le 19 octobre 2026 que le changement figure dans la pull request du driver core pour Linux 7.4. Cette pull request a été envoyée avant l'ouverture de la fenêtre de fusion de 7.4. Linux 7.3 est sorti le 18 octobre, et la fenêtre de fusion de 7.4, la période où les nouvelles fonctionnalités sont intégrées, s'est ouverte le lendemain.
Ce que fait TAINT_FORCED_BIND
Un taint est un marqueur que le noyau pose sur lui-même quand quelque chose d'inhabituel s'est produit. Il est affiché dans les rapports de plantage. Un développeur qui en lit un sait alors que le système n'était pas dans un état normal.
sysfs est un système de fichiers virtuel, monté sur /sys, qui présente les objets du noyau sous forme de fichiers. Chaque pilote a un fichier « bind » et un fichier « unbind ». Écrire l'identifiant de bus d'un périphérique dans ces fichiers attache ou détache ce pilote à la main, explique Phoronix.
Le correctif de Kroah-Hartman active le nouveau drapeau « si les fichiers sysfs bind/unbind reçoivent un jour une écriture », indique sa lettre de présentation. « Le drapeau est “Y”, qui était inutilisé. » Le drapeau est posé avant que le propre code de liaison ou de déliaison du pilote ne s'exécute. Les plantages se produisent souvent dans ce code, donc le rapport oops qui en résulte montre ce qui a été tenté. Un oops est le rapport d'erreur du noyau pour une faute grave.
| Détail | TAINT_FORCED_BIND |
|---|---|
| Lettre de taint | Y |
| Posé quand | Le fichier sysfs bind ou unbind d'un pilote reçoit une écriture |
| Moment | Avant l'exécution du callback bind ou unbind |
| Livré dans | La pull request du driver core de Linux 7.4 |
| Historique du correctif | Première publication le 26 août, v2 le 31 août, v3 le 4 septembre 2026 |
| Fichiers modifiés | 8, dont drivers/base/bus.c et kernel/panic.c |
Pourquoi syzbot a imposé ce changement
Le fuzzing consiste à fournir à un programme des entrées aléatoires ou inattendues pour trouver des plantages. syzbot est un fuzzer automatisé qui tourne contre le noyau. Selon Kroah-Hartman, l'interface bind « a été détournée et a récemment subi une “attaque” de fuzzing majeure via des outils comme syzbot ».
syzbot a commencé à attacher des pilotes à des périphériques pour lesquels ils n'avaient jamais été écrits. Kroah-Hartman a écrit que cela provoquait « des tas d'erreurs inutiles et de correctifs du noyau sans intérêt » de la part de nouveaux développeurs. L'interface devait aider les développeurs du noyau à travailler plus vite sur les pilotes. C'était aussi « un moyen de débogage permettant aux utilisateurs d'essayer d'ajouter un nouveau périphérique à un pilote sans avoir à recompiler leur noyau ».
Rien n'est bloqué. Les configurations qui dépendent de bind et unbind « fonctionneront toujours correctement, mais désormais le noyau sera marqué », indique la lettre de présentation de la v3. Les vrais bugs use-after-free trouvés de cette façon « devraient toujours être traités ». Un bug use-after-free est du code qui touche de la mémoire après l'avoir libérée, une source classique de failles de sécurité.
Kroah-Hartman a aussi dit aux opérateurs de fuzzers quoi faire. Les outils sans règles écrites à la main devraient « être exécutés avec panic_on_taint activé, afin qu'ils s'arrêtent net et ne continuent pas ». Le réglage panic_on_taint arrête le noyau dès qu'il reçoit un taint.
Les déluges de rapports à faible valeur sont un problème plus large cette année. Google a suspendu son programme de bug bounty open source le 1er octobre après un afflux de soumissions générées par IA.
Réticences des utilisateurs de VFIO et d'USB
Tous les relecteurs n'ont pas apprécié ce compromis. Un bot de revue, sashiko-bot, a classé comme préoccupation « élevée » le fait que des configurations légitimes seraient désormais marquées d'un taint. Il citait VFIO, qui confie un périphérique à une machine virtuelle, ainsi que le réseau DPDK et l'USB sur IP. Phoronix range les réinitialisations matérielles et le passage de périphériques à une machine virtuelle parmi les usages légitimes.
En réponse au bot, Kroah-Hartman a qualifié cet usage de « pas une configuration “standard” » et d'« abus de l'API ». Armin Wolf a noté que vfio-pci avec driver_override a toujours besoin de bind et unbind. Il a suggéré de poser le taint sur driver_override à la place. Kroah-Hartman a répondu que cela manquerait les retraits forcés. « C'est un drapeau de taint qui est posé, pas une panique », a-t-il écrit.
Johan Hovold a qualifié le taint de « bon compromis » par rapport à l'ajout de complexité ou au masquage des fichiers. Il a donné au correctif ses tags Reviewed-by et Tested-by. Aaron Tomlin et Bradley Morgan l'ont aussi relu.
Ce que cela signifie pour les développeurs
- Vérifiez votre sortie de taint après le passage à Linux 7.4. Si vous reliez des périphériques via sysfs pour le passthrough VFIO, DPDK ou l'USB sur IP, attendez-vous au drapeau Y. Il apparaîtra dans /proc/sys/kernel/tainted et dans les rapports de plantage.
- Expliquez le Y dans vos rapports de bugs. Les mainteneurs peuvent lire un rapport marqué Y comme un problème de liaison forcée et le mettre de côté. Si votre bug est réel, dites comment vous liez le périphérique et s'il se produit sans liaison manuelle.
- Opérateurs de fuzzers : activez panic_on_taint. C'est la demande directe de Kroah-Hartman pour les outils qui écrivent dans bind et unbind sans règles d'exclusion. L'exécution s'arrête à la liaison forcée au lieu de produire un rapport dont personne ne s'occupera.
- Auteurs de pilotes : les plantages comptent toujours. Kroah-Hartman dit que les vrais bugs use-after-free atteints via bind et unbind doivent toujours être corrigés. Phoronix note que la même pull request du driver core de 7.4 apporte aussi de nouveaux ajouts Rust pour les pilotes du noyau.
- Surveillez la version finale de 7.4. Wolf a demandé si le taint pouvait ne s'appliquer qu'aux bus qui ne prennent pas en charge le branchement à chaud. Tout changement de ce type réduirait le nombre de personnes qui verront le drapeau Y.
Sources
- 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
Articles liés

Nix et Lix corrigent des failles du démon qui permettent un accès root local
Nix et Lix ont divulgué le 13 octobre des failles qui, enchaînées, donnent un accès root. Les correctifs figurent dans Nix 2.35.3 et Lix 2.95.4, entre autres versions correctives.

Archinstall 4.5 ajoute le démarrage AArch64 et des noyaux RT
Sorti le 29 septembre 2026, Archinstall 4.5 installe les machines ARM 64 bits avec GRUB ou Limine, ajoute des noyaux temps réel et active la vérification TLS.

Un binaire strip trafiqué peut piéger tout NixOS
Des chercheurs ont construit l'attaque trusting-trust de Ken Thompson à partir de GNU strip, et non d'un compilateur, pour piéger presque tous les binaires d'un installateur NixOS.