
Vulnerabilidades de seguridad documentadas en la biblioteca de sistema de archivos embebido FatFs con detalles de CVE, arnés de fuzzing, generador de imágenes de disco de explotación y análisis de impacto en la cadena de suministro en docenas de proyectos de firmware posteriores.
Este repositorio documenta seis vulnerabilidades de seguridad confirmadas en FatFs junto con un banco de pruebas, un fuzzer y un generador independiente de imágenes de disco para exploits.
El código fuente original de FatFs se puede encontrar en el directorio FatFs-R0.16.
Este proyecto es un regreso a una evaluación de seguridad de 2017, cuando una auditoría manual y un esfuerzo de fuzzing de varios días identificaron algunos errores básicos, pero poco interesantes, en el driver de FatFs. Nueve años después, en marzo de 2026, retomamos este proyecto utilizando Visual Studio Code, GitHub Copilot en modo "auto" y algunas indicaciones básicas, sin bucles, harnesses ni skills específicos. Los resultados fueron sorprendentes: los errores que pasaron desapercibidos durante la auditoría manual resultaron triviales de encontrar, al usar el LLM para construir automáticamente un fuzzer con entradas novedosas. Este esfuerzo no solo encontró errores interesantes, sino que también automatizó el proceso de validar la explotabilidad en diferentes escenarios de desarrollo embebido.
Consulte los siguientes archivos para obtener notas detalladas:
FatFs es una biblioteca de sistema de archivos FAT/exFAT portátil y libre de regalías escrita en C por ChaN (elm-chan.org). Está diseñada para sistemas embebidos con recursos limitados, sin dependencia de SO y normalmente se compila directamente en el firmware. Soporta FAT12, FAT16, FAT32 y exFAT, así como soporte opcional de LFN (Long File Name / nombres de archivo largos) y particiones GPT.
Debido a que FatFs es pequeño, autónomo y tiene una licencia permisiva, se ha convertido en la
implementación FAT de facto para firmware de microcontroladores. La biblioteca se integra literalmente
en SDK oficiales, RTOS, bootloaders y marcos de aplicación, lo que significa que una única
vulnerabilidad upstream se propaga a todos los proyectos downstream que copiaron ff.c.
Se ha confirmado que los siguientes proyectos incluyen una versión vulnerable de FatFs. Consulte 02_CRITICAL.md para ver el análisis completo, las rutas de propagación por proyecto y la información de contacto de seguridad.
| Proyecto | Estrellas | Versión de FatFs | Errores |
|---|---|---|---|
| espressif/esp-idf | 17,655 | R0.16 | CVE-2026-6682 |
| STMicroelectronics/stm32-mw-fatfs | todos los 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 | varía | 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 | tbd | CVE-2026-6684 |
| hugen79/NanoVNA-H | 695 | R0.15 | CVE-2026-6683 |
| ChibiOS/ChibiOS | 833 | varía | CVE-2026-6688 |
| Samsung/TizenRT | 643 | R0.16 | CVE-2026-6683, CVE-2026-6688 |
| adafruit/tinyuf2 | 447 | tbd | 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 | varía | CVE-2026-6682, CVE-2026-6688 |
| eugene-tarassov/vivado-risc-v | 1,061 | tbd | CVE-2026-6684 |
| ID de CVE | Título corto | CWE |
|---|---|---|
| CVE-2026-6682 | Desbordamiento de entero en el montaje de volúmenes FAT32 | CWE-190: Desbordamiento de enteros o envoltura |
| CVE-2026-6683 | División por cero en la sincronización exFAT | CWE-369: División por cero |
| CVE-2026-6684 | Bucle infinito en el escaneo de particiones GPT | CWE-835: Bucle con condición de salida inalcanzable |
| CVE-2026-6686 | Uso de clústeres no inicializados después de un seek más allá del EOF | CWE-908: Uso de un recurso no inicializado |
| CVE-2026-6687 | Desbordamiento de búfer en la pila a través de una longitud de etiqueta exFAT sin límite | CWE-121: Desbordamiento de búfer basado en pila |
| CVE-2026-6688 | Desbordamiento de búfer mediante copia sin límites de nombre de archivo LFN | CWE-120: Copia de búfer sin comprobar el tamaño de la entrada |
FatFs no tiene historial de CVE, ni lista de correo de seguridad, ni mecanismo de notificación
de parches. Cada proyecto downstream que distribuye ff.c debe descubrir, clasificar
y parchear estas vulnerabilidades de forma independiente, normalmente sin saber que está
afectado. Eso significa que la ventana entre la divulgación pública y la remediación generalizada
se medirá en años, no en días. Por lo tanto, la superficie de ataque práctica no es una aplicación
o servicio de software, sino decenas de millones de dispositivos repartidos en docenas de bases de
código independientes, muchos de los cuales nunca recibirán un parche.
El escenario de explotación arquetípico es la tarjeta SD maliciosa: un atacante con unos segundos de acceso físico intercambia el medio de almacenamiento en un dispositivo, desde cámaras de consumo hasta drones, impresoras 3D y otros miles de familias de productos. Cada vulnerabilidad de este conjunto es activable montando una imagen FAT manipulada, lo que casi siempre ocurre automáticamente al insertarla, sin requerir interacción del usuario. Dicho esto, el acceso físico no es el único camino.