
Dokumentierte Sicherheitslücken in der FatFs-Bibliothek für eingebettete Dateisysteme mit CVE-Details, Fuzzing-Harness, Generator für Exploit-Disk-Images und Analyse der Auswirkungen auf die Lieferkette über Dutzende nachgelagerter Firmware-Projekte hinweg.
Dieses Repository dokumentiert sechs bestätigte Sicherheitslücken in FatFs zusammen mit einer Test-Harness, einem Fuzzer und einem eigenständigen Generator für Exploit-Disk-Images.
Der ursprüngliche FatFs-Quellcode befindet sich im Verzeichnis FatFs-R0.16.
Dieses Projekt ist eine Rückkehr zu einer Sicherheitsbewertung aus dem Jahr 2017, als eine manuelle Prüfung und ein mehrtägiger Fuzzing-Einsatz einige grundlegende, aber nicht interessante Fehler im FatFs-Treiber identifizierten. Neun Jahre später, im März 2026, haben wir dieses Projekt mit Visual Studio Code, GitHub Copilot im „Auto“-Modus und einigen grundlegenden Prompts erneut aufgegriffen, ohne spezielle Schleifen, Harnesses oder Skills. Die Ergebnisse waren überraschend – Fehler, die bei der manuellen Prüfung übersehen wurden, waren trivial zu finden, indem das LLM automatisch einen Fuzzer mit neuartigen Eingaben erstellte. Diese Bemühung fand nicht nur interessante Fehler, sie automatisierte auch den Prozess der Validierung der Ausnutzbarkeit in verschiedenen eingebetteten Entwicklungsszenarien.
Ausführliche Anmerkungen finden Sie in den folgenden Dateien:
FatFs ist eine portable, lizenzkostenfreie FAT/exFAT-Dateisystembibliothek, geschrieben in C von ChaN (elm-chan.org). Sie ist für ressourcenbeschränkte eingebettete Systeme ohne Betriebssystemabhängigkeit ausgelegt und wird typischerweise direkt in die Firmware einkompiliert. Sie unterstützt FAT12, FAT16, FAT32 und exFAT sowie optionalen LFN- (Long File Name) und GPT-Partitionssupport.
Da FatFs klein, in sich geschlossen und unter einer freizügigen Lizenz verfügbar ist,
ist es zum De-facto-Standard für FAT-Implementierungen in Mikrocontroller-Firmware geworden.
Die Bibliothek wird unverändert in offizielle SDKs, RTOSes, Bootloader und
Anwendungsframeworks eingebunden – das bedeutet, dass eine einzige Upstream-Schwachstelle sich auf
jedes Downstream-Projekt ausbreitet, das ff.c kopiert hat.
Die folgenden Projekte wurden als Bündler einer verwundbaren Version von FatFs bestätigt. Die vollständige Analyse, projektspezifische Ausbreitungspfade und Sicherheitskontaktinformationen finden Sie unter 02_CRITICAL.md.
| Projekt | Stars | FatFs-Version | Fehler |
|---|---|---|---|
| espressif/esp-idf | 17.655 | R0.16 | CVE-2026-6682 |
| STMicroelectronics/stm32-mw-fatfs | alle 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 | variiert | 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 | variiert | 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 | variiert | CVE-2026-6682, CVE-2026-6688 |
| eugene-tarassov/vivado-risc-v | 1.061 | tbd | CVE-2026-6684 |
| CVE-ID | Kurztitel | CWE |
|---|---|---|
| CVE-2026-6682 | Integer-Überlauf beim Mounten von FAT32-Volumes | CWE-190: Integer Overflow or Wraparound |
| CVE-2026-6683 | Division durch Null bei exFAT-Sync | CWE-369: Divide By Zero |
| CVE-2026-6684 | Endlosschleife im GPT-Partitionsscan | CWE-835: Loop with Unreachable Exit Condition |
| CVE-2026-6686 | Verwendung nicht initialisierter Cluster nach Seek über EOF hinaus | CWE-908: Use of Uninitialized Resource |
| CVE-2026-6687 | Stack-Pufferüberlauf durch unbegrenzte exFAT-Label-Länge | CWE-121: Stack-based Buffer Overflow |
| CVE-2026-6688 | Pufferüberlauf durch unbegrenzte LFN-Dateinamenkopie | CWE-120: Buffer Copy without Checking Size of Input |
FatFs hat keine CVE-Historie, keine Sicherheits-Mailingliste und keinen Patch-Benachrichtigungsmechanismus.
Jedes Downstream-Projekt, das ff.c einbindet, muss diese Schwachstellen unabhängig entdecken, priorisieren
und patchen – normalerweise ohne zu wissen, dass es betroffen ist. Das bedeutet, dass das Fenster zwischen
öffentlicher Offenlegung und weit verbreiteter Behebung in Jahren gemessen wird, nicht in Tagen.
Die praktische Angriffsfläche ist daher nicht eine Softwareanwendung oder ein Dienst, sondern zig Millionen
von Geräten in Dutzenden unabhängiger Codebasen, von denen viele nie einen Patch erhalten werden.
Das archetypische Ausnutzungsszenario ist die böse SD-Karte: Ein Angreifer mit ein paar Sekunden physischem Zugriff tauscht das Speichermedium in einem Gerät aus – von Verbraucherkameras über Drohnen bis zu 3-D-Druckern und tausend anderen Produktfamilien. Jede Schwachstelle in dieser Sammlung ist durch das Mounten eines präparierten FAT-Images auslösbar, was bei fast allen Geräten automatisch beim Einstecken geschieht, ohne dass eine Benutzerinteraktion erforderlich ist. Das heißt, physischer Zugriff ist nicht der einzige Weg.