CVE-2022-24816
OSGeo JAI-EXT
2024-06-26
OSGeo GeoServer JAI-EXT contains a code injection vulnerability that, when programs use jt-jiffle and allow Jiffle script to be provided via network request, could allow remote code execution.
Технический анализ и план устранения
Суть уязвимости
CVE-2022-24816 представляет собой критическую уязвимость типа Code Injection (внедрение кода) в библиотеке JAI-EXT (Java Advanced Imaging Extended), которая используется в GeoServer. Проблема сосредоточена в компоненте jt-jiffle.
Уязвимость возникает из-за того, что скрипты на языке Jiffle, передаваемые через сетевые запросы (например, в параметрах WMS-запросов или через WPS-процессы), компилируются «на лету» с использованием компилятора Janino. Злоумышленник может внедрить произвольный Java-код в Jiffle-скрипт, что приведет к его выполнению на стороне сервера с правами приложения GeoServer (Remote Code Execution — RCE).
Как исправить
Основным способом устранения является обновление библиотек JAI-EXT до безопасной версии или обновление самого GeoServer до версий, в которых уязвимость уже закрыта.
-
Если вы используете GeoServer, обновите его до версий 2.19.6, 2.20.4 или выше.
-
Если вы используете JAI-EXT как отдельную библиотеку в своем проекте, обновите зависимость
jt-jiffleдо версии 1.1.22 или выше.
Пример обновления в pom.xml для Maven:
<dependency>
<groupId>it.geosolutions.jaiext.jiffle</groupId>
<artifactId>jt-jiffle</artifactId>
<version>1.1.22</version>
</dependency>
- После обновления выполните пересборку проекта и перезапуск сервиса:
mvn clean install
Временные меры
Если немедленное обновление невозможно, необходимо ограничить возможности использования Jiffle-скриптов:
-
Отключите расширение WPS (Web Processing Service) в настройках GeoServer, если оно не является критически важным для работы системы.
-
Если WPS необходим, ограничьте доступ к нему с помощью правил брандмауэра или настроек безопасности GeoServer (Role-based access control), разрешив выполнение запросов только доверенным пользователям.
-
Удалите или переместите файл
jt-jiffle-*.jarиз директорииWEB-INF/libвашего GeoServer, если функционал Jiffle не используется. Учтите, что это может привести к ошибкам в работе некоторых модулей обработки растров.
rm webapps/geoserver/WEB-INF/lib/jt-jiffle-*.jar
- Настройте Web Application Firewall (WAF) для фильтрации входящих запросов, содержащих подозрительные конструкции в параметрах, характерных для Jiffle-скриптов (например, ключевые слова Java или специфический синтаксис Jiffle в GET/POST запросах).