Уязвимость Fastjson: как хакеры обманули Java через файловые...

28.07.2026 1 мин чтения

Недавняя уязвимость в библиотеке Fastjson, получившая обозначение CVE-2026-16723, открыла новые горизонты для атак на приложения, использующие Spring Boot. Несмотря на то, что версия Fastjson 1.2.83 долгое время считалась безопасной, она теперь оказалась под угрозой, что ставит под сомнение надежность этой библиотеки.

Что такое Fastjson?

Fastjson — это библиотека для работы с JSON, разработанная компанией Alibaba. Она широко используется в Java-приложениях для сериализации и десериализации данных. Однако, как показала новая уязвимость, даже давно проверенные версии могут содержать критические ошибки.

Уязвимость CVE-2026-16723

Уязвимость была обнаружена Кириллом Фирсовым из FearsOff Cybersecurity. Она позволяет злоумышленникам удаленно выполнять код в уязвимых приложениях Spring Boot, даже если функция AutoType отключена. Это означает, что для атаки не требуется наличие заранее установленного опасного класса. Alibaba присвоила этой уязвимости высокий рейтинг — 9 из 10.

Как происходит атака?

Для успешного осуществления атаки злоумышленнику необходим сетевой доступ к функции, которая передает JSON в библиотеку Fastjson. Приложение должно работать как исполняемый архив Spring Boot с отключенным безопасным режимом. Уязвимость затрагивает версии Fastjson от 1.2.68 до 1.2.83.

Фирсов выяснил, что Fastjson обрабатывает служебное поле @type даже при отключенной функции AutoType. Во время проверки имени класса библиотека пытается найти соответствующий ресурс через загрузчик классов. Если вместо имени класса подставить специально подготовленный адрес, приложение может обратиться к внешнему серверу. Это позволяет злоумышленнику инициировать скрытый запрос от имени сервера и загрузить удаленный архив Java с вредоносным классом.

Обход защиты в современных версиях Java

На Java 8 вредоносный код может запускаться сразу после загрузки удаленного архива. Однако начиная с Java 9, среда выполнения блокирует имена классов с определенными символами, что делает прямую атаку невозможной. Фирсов нашел обход этого ограничения, используя каталог /proc/self/fd в Linux. При загрузке удаленного архива Java временно сохраняет файл и открывает его, удаляя имя файла с диска, но оставляя содержимое доступным через открытый файловый дескриптор. Атакующий может перебрать номера дескрипторов и указать Fastjson путь к уже загруженному архиву, что позволяет библиотеке читать и исполнять вредоносный класс.

Тестирование уязвимости

Alibaba провела тестирование атаки на Spring Boot 2, 3 и 4 с различными версиями Java (8, 11, 17 и 21). Уязвимость зависит от специального загрузчика исполняемых архивов Spring Boot, и обычные архивы Java или приложения в формате WAR не затрагиваются. Опасные запросы могут поступать в функции JSON.parse, JSON.parseObject(String) и JSON.parseObject(String, Class).

Реакция на уязвимость

Компании ThreatBook и Imperva зафиксировали попытки эксплуатации данной уязвимости. ThreatBook смогла воспроизвести выполнение кода в приложении Spring Boot на Java 8, однако в тестах с встроенным Tomcat это приводило только к загрузке удаленного архива. Большинство подозрительных запросов поступало из США, меньшая часть — из Сингапура и Канады.

На 25 июля 2023 года Alibaba не выпустила исправленную версию Fastjson 1.x. Разработчики рекомендуют перейти на Fastjson2, где уязвимый механизм отсутствует. В качестве временной меры можно включить безопасный режим с помощью параметра -Dfastjson.parser.safeMode=true или установить ограниченную сборку com.alibaba:fastjson:1.2.83_noneautotype.

Рекомендации для компаний

Компании должны проверить свои зависимости от Fastjson и искать в журналах необычные значения @type, ссылки на вложенные архивы Java, неожиданные исходящие соединения и другие подозрительные активности. Важно помнить, что даже ранее безопасные версии могут содержать уязвимости, что подчеркивает необходимость регулярного обновления библиотек и мониторинга безопасности.

Поделиться статьей: