В библиотеке Fastjson, разрабатываемой Alibaba и широко применяемой для сериализации и десериализации Java-объектов, обнаружена уязвимость, позволяющая неаутентифицированному злоумышленнику удалённо выполнить код на целевой системе. Проблема затрагивает версии 2.x до 2.0.62 включительно и получила оценку 9,8 по шкале CVSS, что соответствует критическому уровню угрозы.
Детали уязвимости
Причиной уязвимости стала особенность обработки тега "@type" в формате JSON. Даже если опция "SupportAutoType" не включена (что является конфигурацией по умолчанию), Fastjson 2.x всё равно может обрабатывать специально оформленные JSON-данные через встроенный белый список типов. Злоумышленник может сконструировать вредоносный JSON-документ, который, будучи переданным на сервер, инициирует выполнение произвольного кода без необходимости подключать сторонние опасные классы. Детали эксплуатации уязвимости уже опубликованы в открытых источниках, что повышает риск атак.
Fastjson - одна из самых популярных библиотек для работы с JSON в Java-экосистеме. Она используется в тысячах проектов, включая корпоративные системы, веб-приложения и микросервисы. Высокий уровень угрозы и простота эксплуатации делают уязвимость привлекательной для злоумышленников, особенно в сценариях удалённого доступа без аутентификации.
Пользователям Fastjson 2.x рекомендуется как можно скорее обновить библиотеку до версии 2.0.63 или более поздней. Разработчики уже выпустили исправление, которое устраняет проблему. Ссылка на изменения доступна в официальном репозитории на GitHub.
Для тех, кто по каким-либо причинам не может выполнить обновление немедленно, предлагается временная мера защиты - включение режима SafeMode. Данный режим был внедрён ещё в Fastjson 1.2.68 и полностью отключает автоматическое определение типов (autoType) независимо от настроек белого или чёрного списков. Включить SafeMode можно тремя способами:
- в коде через вызов "ParserConfig.getGlobalInstance().setSafeMode(true);"
- через JVM-аргумент "-Dfastjson.parser.safeMode=true" (для нескольких префиксов пакетов их можно разделить запятыми);
- через файл "fastjson.properties" в classpath, указав параметр "fastjson.parser.safeMode=true".
Также рекомендуется использовать межсетевые экраны для веб-приложений (WAF) для блокировки входящих JSON-данных, содержащих ключ "@type". При этом необходимо проверять как параметры URL, так и тело запроса, а также учитывать возможное кодирование символов, которое злоумышленники могут применить для обхода фильтрации.
Следует отметить, что проблема затронула только линейку Fastjson 2.x. Пользователи версии 1.2.68 и новее, которые уже включили SafeMode, защищены от данной уязвимости. Однако если SafeMode не активирован, старые версии также могут быть уязвимы к подобным атакам через десериализацию.
Уязвимости, связанные с десериализацией JSON в Java, остаются одной из наиболее распространённых и опасных категорий. Эта проблема в Fastjson в очередной раз привлекает внимание к необходимости тщательной настройки библиотек сериализации и своевременного применения исправлений. Владельцам систем, где используется Fastjson 2.x, настоятельно рекомендуется провести аудит используемой версии и выполнить обновление или активировать SafeMode. Для проверки текущей версии можно воспользоваться командой "lsof | grep fastjson" или найти файл "fastjson-[version].jar" в директории проекта; для проектов Maven версия указана в файле "pom.xml".
Разработчики Alibaba оперативно отреагировали на обнаруженную угрозу, выпустив патч. Пользователям остаётся лишь установить его в кратчайшие сроки, чтобы закрыть критическую брешь, не дожидаясь потенциальных атак.
Ссылки
- https://github.com/alibaba/fastjson2/issues/7702
- https://nsfocusglobal.com/fastjson-2-x-remote-code-execution-vulnerability-notice/