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 до версий, в которых уязвимость уже закрыта.

  1. Если вы используете GeoServer, обновите его до версий 2.19.6, 2.20.4 или выше.

  2. Если вы используете 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>

  1. После обновления выполните пересборку проекта и перезапуск сервиса:
mvn clean install

Временные меры

Если немедленное обновление невозможно, необходимо ограничить возможности использования Jiffle-скриптов:

  1. Отключите расширение WPS (Web Processing Service) в настройках GeoServer, если оно не является критически важным для работы системы.

  2. Если WPS необходим, ограничьте доступ к нему с помощью правил брандмауэра или настроек безопасности GeoServer (Role-based access control), разрешив выполнение запросов только доверенным пользователям.

  3. Удалите или переместите файл jt-jiffle-*.jar из директории WEB-INF/lib вашего GeoServer, если функционал Jiffle не используется. Учтите, что это может привести к ошибкам в работе некоторых модулей обработки растров.

rm webapps/geoserver/WEB-INF/lib/jt-jiffle-*.jar

  1. Настройте Web Application Firewall (WAF) для фильтрации входящих запросов, содержащих подозрительные конструкции в параметрах, характерных для Jiffle-скриптов (например, ключевые слова Java или специфический синтаксис Jiffle в GET/POST запросах).