
Vulnerabilità di sicurezza documentate nella libreria del filesystem embedded FatFs con dettagli CVE, harness di fuzzing, generatore di immagini disco di exploit e analisi dell'impatto della supply chain su dozzine di progetti firmware a valle.
Questo repository documenta sei vulnerabilità di sicurezza confermate in FatFs insieme a un test harness, un fuzzer e un generatore autonomo di immagini disco per exploit.
Il codice sorgente originale di FatFs può essere trovato nella directory FatFs-R0.16.
Questo progetto rappresenta un ritorno a una valutazione della sicurezza del 2017, quando un audit manuale e uno sforzo di fuzzing durato più giorni identificarono alcuni bug di base, ma non interessanti, nel driver FatFs. Nove anni dopo, nel marzo 2026, abbiamo rivisitato questo progetto usando Visual Studio Code, GitHub Copilot in modalità "auto" e alcuni prompt di base, senza loop, harness o skill specifici. I risultati sono stati sorprendenti: i bug che erano stati trascurati durante l'audit manuale sono diventati banali da trovare, usando l'LLM per costruire automaticamente un fuzzer con input inediti. Questo sforzo non solo ha trovato bug interessanti, ma ha anche automatizzato il processo di validazione della sfruttabilità in diversi scenari di sviluppo embedded.
Consulta i seguenti file per note dettagliate:
FatFs è una libreria filesystem FAT/exFAT portabile e royalty-free scritta in C da ChaN (elm-chan.org). È progettata per sistemi embedded con risorse limitate, senza dipendenza da un sistema operativo e viene tipicamente compilata direttamente nel firmware. Supporta FAT12, FAT16, FAT32 ed exFAT, oltre al supporto opzionale per LFN (Long File Name) e partizioni GPT.
Poiché FatFs è piccolo, autonomo e con licenza permissiva, è diventato
lo standard de facto per l'implementazione FAT nei firmware per microcontrollori.
La libreria viene incorporata integralmente in SDK ufficiali, RTOS, bootloader e
framework applicativi: una singola vulnerabilità upstream si propaga a
ogni progetto a valle che ha copiato ff.c.
I seguenti progetti hanno confermato di includere una versione vulnerabile di FatFs. Consulta 02_CRITICAL.md per l'analisi completa, i percorsi di propagazione per progetto e le informazioni di contatto per la sicurezza.
| Progetto | Stelle | Versione FatFs | Bug |
|---|---|---|---|
| espressif/esp-idf | 17,655 | R0.16 | CVE-2026-6682 |
| STMicroelectronics/stm32-mw-fatfs | tutti gli 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 | varia | 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 | da determinare | CVE-2026-6684 |
| hugen79/NanoVNA-H | 695 | R0.15 | CVE-2026-6683 |
| ChibiOS/ChibiOS | 833 | varia | CVE-2026-6688 |
| Samsung/TizenRT | 643 | R0.16 | CVE-2026-6683, CVE-2026-6688 |
| adafruit/tinyuf2 | 447 | da determinare | 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 | varia | CVE-2026-6682, CVE-2026-6688 |
| eugene-tarassov/vivado-risc-v | 1,061 | da determinare | CVE-2026-6684 |
| ID CVE | Titolo breve | CWE |
|---|---|---|
| CVE-2026-6682 | Overflow di interi nel mount di volumi FAT32 | CWE-190: Overflow di interi o wraparound |
| CVE-2026-6683 | Divisione per zero nella sync exFAT | CWE-369: Divisione per zero |
| CVE-2026-6684 | Loop infinito nella scansione delle partizioni GPT | CWE-835: Ciclo con condizione di uscita irraggiungibile |
| CVE-2026-6686 | Uso di cluster non inizializzati dopo un seek oltre EOF | CWE-908: Uso di risorsa non inizializzata |
| CVE-2026-6687 | Stack buffer overflow tramite lunghezza senza limiti dell'etichetta exFAT | CWE-121: Buffer overflow basato su stack |
| CVE-2026-6688 | Buffer overflow tramite copia senza limiti del nome file LFN | CWE-120: Copia di buffer senza controllo della dimensione dell'input |
FatFs non ha una storia di CVE, nessuna mailing list di sicurezza e nessun meccanismo
di notifica delle patch. Ogni progetto a valle che incorpora ff.c deve scoprire, fare triage
e correggere queste vulnerabilità in modo indipendente, di solito senza sapere di essere
coinvolto. Ciò significa che la finestra tra la divulgazione pubblica e la
bonifica diffusa sarà misurata in anni, non in giorni. La superficie d'attacco pratica
non è quindi una singola applicazione o un singolo servizio, ma decine di milioni di
dispositivi in dozzine di codebase indipendenti, molti dei quali non riceveranno mai
una patch.
Lo scenario di sfruttamento archetipico è la scheda SD malvagia: un attaccante con pochi secondi di accesso fisico sostituisce il supporto di archiviazione in un dispositivo, dalle fotocamere consumer ai droni, dalle stampanti 3D a mille altre famiglie di prodotti. Ogni vulnerabilità di questo set è attivabile montando un'immagine FAT manipolata, che quasi sempre avviene automaticamente all'inserimento, senza richiedere alcuna interazione da parte dell'utente. Detto questo, l'accesso fisico non è l'unico percorso.