В библиотеке FatFs обнаружено семь уязвимостей, затрагивающих встроенные системы

vulnerability

Исследователи из компании runZero (специализирующейся на кибербезопасности) опубликовали сведения о семи уязвимостях в библиотеке файловой системы FatFs, широко используемой во встроенных системах. Проблемы затрагивают такие платформы, как Espressif ESP‑IDF, STM32Cube, Zephyr RTOS, MicroPython, ArduPilot, Samsung TizenRT и другие. Уязвимости позволяют вызвать повреждение памяти и, в ряде случаев, удалённое выполнение кода при подключении специально сформированных USB-накопителей или SD-карт.

Детали уязвимостей

FatFs представляет собой лёгкую реализацию файловых систем FAT и exFAT, часто встраиваемую в прошивки потребительских IoT-устройств, промышленных контроллеров, дронов и аппаратных криптовалютных кошельков. Массовое распространение библиотеки в сочетании с многочисленными модификациями, вносимыми вендорами, создаёт фрагментированную поверхность атаки. Специалисты runZero выявили семь уязвимостей, отслеживаемых как CVE‑2026‑6682 - CVE‑2026‑6688; их степень опасности оценена от средней до высокой (CVSS от 4,6 до 7,6).

Наиболее критичная проблема, CVE‑2026‑6682 (CVSS 7,6), связана с целочисленным переполнением в функции mount_volume(). Она позволяет атакующему манипулировать метаданными размера файла, что впоследствии может привести к переполнению буфера в куче или стеке при операциях чтения. Ещё одна уязвимость высокого уровня опасности, CVE‑2026‑6687, затрагивает функцию f_getlabel() в реализации exFAT. Из‑за недостаточной проверки длины метки тома возникает переполнение стекового буфера, если размер метки превышает ожидаемый. Третья высокая оценка (CVSS 7,6) присвоена CVE‑2026‑6688, связанной с обработкой длинных имён файлов. Проблема проявляется в коде приложений, использующих FatFs: буферы, выделенные вызывающей стороной, часто не рассчитаны на максимальную длину имени в режиме LFN, что ведёт к переполнению при копировании строк (strcpy, sprintf). Этот класс ошибок особенно сложно устранить на уровне самой библиотеки, поскольку он коренится в небезопасных практиках в зависимых прошивках.

Среди проблем средней степени риска - CVE‑2026‑6685 (CVSS 6,1), где арифметическое закругление при вычитании без знака в механизме кэширования "грязных" блоков может привести к незаметному повреждению данных. Такая уязвимость особенно опасна в системах управления или журналирования, где искажение информации долгое время остаётся необнаруженным. Уязвимость CVE‑2026‑6683 (CVSS 4,6) представляет собой деление на ноль в операциях записи exFAT, вызывающее отказ устройства. Этот вектор особенно критичен в контексте обновлений по воздуху (OTA) - неправильно сформированный образ прошивки может привести к полной неработоспособности устройства (bricking). CVE‑2026‑6686 (CVSS 4,6) раскрывает неинициализированные данные при расширении файла за конец файла (EOF), что может привести к утечке остаточной информации из ранее удалённых данных. Наконец, CVE‑2026‑6684 (CVSS 4,6) позволяет осуществить DoS-атаку в старых версиях библиотеки (до R0.16) за счёт чрезмерного сканирования GPT-разделов.

Исследователи подчёркивают, что эксплуатация этих уязвимостей возможна через специально подготовленные образы FAT, exFAT или GPT, доставляемые на устройство через сменные носители или автоматические обновления. Во встроенных системах зачастую отсутствуют такие средства защиты, как рандомизация адресного пространства (ASLR) и аппаратная защита памяти. В результате даже кратковременный физический доступ к устройству может привести к полной компрометации. Особо отмечается, что уязвимости CVE‑2026‑6682 и CVE‑2026‑6683 могут быть задействованы в процессе OTA-обновлений, что создаёт риск удалённого вывода устройств из строя.

Авторы работы отметили, что вернулись к аудиту FatFs спустя девять лет. В 2017 году ручной анализ и многодневное фаззинг-тестирование (автоматизированная подача некорректных данных) выявили лишь отдельные, некритические ошибки. В марте 2026 года специалисты применили инструменты на основе искусственного интеллекта - GitHub Copilot в автоматическом режиме сгенерировал обвязки для фаззинга, что позволило за короткое время обнаружить значительно больше уязвимостей, причём многие из них оказались эксплуатабельными в различных сценариях. По мнению исследователей, это демонстрирует растущую роль AI-инструментов в выявлении проблем безопасности и говорит о том, что подобные дефекты в широко используемых компонентах вряд ли останутся скрытыми надолго.

Разработчик библиотеки (мейнтейнер) не ответил на запросы о координированном раскрытии информации, несмотря на привлечение японской CERT (JPCERT/CC). В связи с этим исследователи обратились непосредственно к разработчикам встроенного ПО: рекомендуется провести аудит собственных копий FatFs, проверить обработку длинных имён файлов, метаданных размера и целочисленных операций. Для предотвращения DoS-атак, связанных с GPT, следует обновить библиотеку до версии R0.16 или новее, где добавлены проверки количества записей в GPT. Временные меры защиты включают ограничение автоматического монтирования сменных носителей и тщательную валидацию образов прошивок перед установкой.

Публикация runZero содержит подробные технические описания, PoC-образы и код для проверки, доступные в открытом репозитории. Ситуация вокруг FatFs вновь привлекает внимание к проблеме "длинного хвоста" в цепочках поставок ПО: один небольшой компонент, копируемый едва ли не в каждое устройство, может создавать массовую поверхность атаки. В условиях, когда автоматизированные методы поиска уязвимостей становятся доступны всё более широкому кругу лиц, превентивное обновление и аудит становятся не рекомендацией, а необходимостью.

Ссылки

Комментарии: 0