
Vulnérabilités de sécurité documentées dans la bibliothèque de système de fichiers embarqué FatFs avec détails CVE, harnais de fuzzing, générateur d'images disque d'exploitation et analyse d'impact sur la chaîne d'approvisionnement à travers des dizaines de projets de firmware en aval.
Ce dépôt documente six vulnérabilités de sécurité confirmées dans FatFs ainsi qu'un harnais de test, un fuzzer et un générateur autonome d'images disque d'exploitation.
Le code source original de FatFs se trouve dans le répertoire FatFs-R0.16.
Ce projet marque un retour sur une évaluation de sécurité de 2017, lorsqu'un audit manuel et un effort de fuzzing de plusieurs jours avaient identifié quelques bugs basiques mais sans intérêt dans le driver FatFs. Neuf ans plus tard, en mars 2026, nous avons réexaminé ce projet avec Visual Studio Code, GitHub Copilot en mode "auto", et quelques invites simples, sans boucles, harnais ou compétences spécifiques. Les résultats ont été surprenants - des bugs négligés lors de l'audit manuel sont devenus triviaux à trouver, en utilisant le LLM pour construire automatiquement un fuzzer avec des entrées inédites. Non seulement cet effort a trouvé des bugs intéressants, mais il a aussi automatisé le processus de validation de l'exploitabilité dans différents scénarios de développement embarqué.
Veuillez consulter les fichiers suivants pour des notes détaillées :
FatFs est une bibliothèque de système de fichiers FAT/exFAT portable et libre de droits, écrite en C par ChaN (elm-chan.org). Elle est conçue pour les systèmes embarqués à ressources limitées, sans dépendance à un OS, et est généralement compilée directement dans le firmware. Elle prend en charge FAT12, FAT16, FAT32 et exFAT, ainsi que le support optionnel des LFN (Long File Name) et des partitions GPT.
Parce que FatFs est petite, autonome et sous licence permissive, elle est devenue l'implémentation FAT de facto pour les firmwares de microcontrôleurs. La bibliothèque est intégrée telle quelle dans les SDK officiels, les RTOS, les bootloaders et les frameworks applicatifs - ce qui signifie qu'une seule vulnérabilité en amont se propage à chaque projet en aval qui a copié ff.c.
Les projets suivants ont été confirmés comme intégrant une version vulnérable de FatFs. Voir 02_CRITICAL.md pour l'analyse complète, les chemins de propagation par projet et les coordonnées de contact pour la sécurité.
| Project | Stars | FatFs Version | Bugs |
|---|---|---|---|
| espressif/esp-idf | 17,655 | R0.16 | CVE-2026-6682 |
| STMicroelectronics/stm32-mw-fatfs | tous les STM32Cube | R0.15 w/p2 | CVE-2026-6682, CVE-2026-6683, CVE-2026-6686, CVE-2026-6687 |
| zephyrproject-rtos/zephyr | 14,820 | R0.16 | CVE-2026-6683, CVE-2026-6687, CVE-2026-6688 |
| micropython/micropython | 21,583 | R0.13c (2019) | CVE-2026-6682, CVE-2026-6683, CVE-2026-6684, CVE-2026-6686, CVE-2026-6687 |
| ArduPilot/ardupilot | 14,743 | R0.14b | CVE-2026-6682, CVE-2026-6683, CVE-2026-6686, CVE-2026-6687 |
| RT-Thread/rt-thread | 11,862 | R0.16 | CVE-2026-6683, CVE-2026-6686 |
| nodemcu/nodemcu-firmware | 7,903 | varie | CVE-2026-6688 |
| RIOT-OS/RIOT | 5,701 | R0.15 | CVE-2026-6682, CVE-2026-6683, CVE-2026-6686, CVE-2026-6687 |
| ARMmbed/mbed-os | 4,837 | R0.14b | CVE-2026-6682, CVE-2026-6683, CVE-2026-6686 |
| sbabic/swupdate | 1,780 | R0.16 | CVE-2026-6683 |
| rsta2/circle | 2,222 | à déterminer | CVE-2026-6684 |
| hugen79/NanoVNA-H | 695 | R0.15 | CVE-2026-6683 |
| ChibiOS/ChibiOS | 833 | varie | CVE-2026-6688 |
| Samsung/TizenRT | 643 | R0.16 | CVE-2026-6683, CVE-2026-6688 |
| adafruit/tinyuf2 | 447 | à déterminer | CVE-2026-6684, CVE-2026-6686 |
| grblHAL/Plugin_SD_card | 475 | R0.16 | CVE-2026-6688 |
| JcZou/StarryPilot | 315 | R0.16 | CVE-2026-6688 |
| KeystoneHQ/keystone3-firmware | 199 | R0.16 | CVE-2026-6682 |
| flysight/flysight | 44 | varie | CVE-2026-6682, CVE-2026-6688 |
| eugene-tarassov/vivado-risc-v | 1,061 | à déterminer | CVE-2026-6684 |
| CVE ID | Short Title | CWE |
|---|---|---|
| CVE-2026-6682 | Dépassement d'entier lors du montage de volumes FAT32 | CWE-190: Integer Overflow or Wraparound |
| CVE-2026-6683 | Division par zéro dans la synchronisation exFAT | CWE-369: Divide By Zero |
| CVE-2026-6684 | Boucle infinie dans l'analyse des partitions GPT | CWE-835: Loop with Unreachable Exit Condition |
| CVE-2026-6686 | Utilisation de clusters non initialisés après un seek au-delà de l'EOF | CWE-908: Use of Uninitialized Resource |
| CVE-2026-6687 | Débordement de tampon de pile via une longueur de libellé exFAT non plafonnée | CWE-121: Stack-based Buffer Overflow |
| CVE-2026-6688 | Débordement de tampon via une copie de nom de fichier LFN sans limite | CWE-120: Buffer Copy without Checking Size of Input |
FatFs n'a aucun historique de CVE, aucune liste de diffusion sécurité, ni mécanisme de notification de correctifs. Chaque projet en aval qui intègre ff.c doit découvrir, trier et corriger ces vulnérabilités indépendamment, généralement sans savoir qu'il est concerné. Cela signifie que la fenêtre entre la divulgation publique et la correction généralisée se mesurera en années, pas en jours. La surface d'attaque pratique n'est donc pas une application ou un service logiciel, mais des dizaines de millions d'appareils répartis dans des dizaines de bases de code indépendantes, dont beaucoup ne recevront jamais de correctif.
Le scénario d'exploitation archétypal est la carte SD malveillante : un attaquant disposant de quelques secondes d'accès physique remplace le support de stockage d'un appareil, des caméras grand public aux drones, en passant par les imprimantes 3D et des milliers d'autres familles de produits. Chaque vulnérabilité de cet ensemble est déclenchable en montant une image FAT spécialement conçue, ce qui se produit presque toujours automatiquement à l'insertion, sans aucune interaction de l'utilisateur. Cela dit, l'accès physique n'est pas la seule voie.