В GeoServer обнаружили опасную уязвимость, которую начали проверять на реальных системах спустя всего несколько часов после публикации первых сведений. Ошибка позволяет без авторизации внедрять команды в запросы к базе данных, а при небезопасной настройке PostgreSQL может привести к выполнению команд в операционной системе.
Проблему 12 августа 2026 года раскрыл специалист под псевдонимом @q1uf3ng. Позднее специалисты Hadrian независимо разобрали механизм уязвимости и подтвердили возможность эксплуатации. На момент завершения анализа 14 августа официального исправления для GeoServer не было.
GeoServer представляет собой открытый сервер для публикации географических данных. Его используют государственные организации, коммунальные службы, подрядчики оборонной отрасли, экологические проекты и другие структуры, которым нужны публичные картографические сервисы. Многие такие серверы принимают запросы от пользователей без авторизации, поэтому ошибка затрагивает системы, доступные напрямую из интернета.
Уязвимость находится не в самом обработчике карт, а в библиотеке GeoTools, от которой зависит GeoServer. Проблемный код отвечает за преобразование фильтров CQL в запросы к PostgreSQL и PostGIS. Функция jsonArrayContains вставляет полученное от пользователя значение в SQL-запрос без достаточной обработки специальных символов.
В результате злоумышленник может изменить структуру запроса к базе данных. Чтобы эксплуатировать уязвимость, нужен сервер GeoServer с уязвимой версией GeoTools, слой данных на базе PostGIS, PostgreSQL версии 12 или новее и доступ к соответствующим интерфейсам WFS или WMS.
Специалисты выяснили, что последствия зависят от версии используемого протокола и структуры запроса. WFS 2.0 формирует дополнительный вложенный запрос, который мешает одному из наиболее опасных сценариев. В WFS 1.0 такой оболочки нет, поэтому внедренный запрос может выполняться на верхнем уровне.
Наиболее тяжелый вариант возможен, если GeoServer подключается к PostgreSQL с правами суперпользователя либо учетной записью с разрешением pg_execute_server_program. В таком случае SQL-инъекция может привести к запуску команд в операционной системе на сервере базы данных.
Ограниченные права PostgreSQL снижают ущерб, но не устраняют уязвимость. Злоумышленник по-прежнему способен получать данные, доступные учетной записи GeoServer, включая содержимое таблиц, служебную информацию и другие сведения из базы.
Проблемный код появился в GeoTools в рамках изменения GEOT-7589 и попал в несколько веток проекта. По данным авторов анализа, уязвимыми могут быть GeoServer начиная с версии 2.25.3 при соответствующей конфигурации PostGIS.
До выхода исправления администраторам рекомендуют ограничить доступ к WFS и WMS из недоверенных сетей, проверить настройки PostGIS и отключить преобразование функций в SQL, если такая возможность не требуется. Также следует убедиться, что GeoServer не подключается к PostgreSQL с правами суперпользователя и не имеет разрешения pg_execute_server_program.
