CVE-2018-18809
TIBCO JasperReports
2022-12-29
TIBCO JasperReports Library contains a directory-traversal vulnerability that may allow web server users to access contents of the host system.
Технический анализ и план устранения
Суть уязвимости
CVE-2018-18809 представляет собой критическую уязвимость типа Directory Traversal (обход директории) в библиотеке TIBCO JasperReports. Она возникает из-за недостаточной фильтрации входных данных в ресурсах, обрабатываемых сервером отчетов.
Злоумышленник может отправить специально сформированный HTTP-запрос, содержащий последовательности обхода пути (например, ../../), что позволяет выйти за пределы корневого каталога веб-приложения. Это дает возможность неавторизованному пользователю просматривать содержимое произвольных файлов на хост-системе, к которым имеет доступ процесс веб-сервера (например, /etc/passwd, конфигурационные файлы с учетными данными или системные логи).
Как исправить
Основным способом устранения уязвимости является обновление компонентов TIBCO JasperReports до версий, в которых данная проблема была исправлена.
- Обновите TIBCO JasperReports Library до версии 7.1.1, 7.2.0 или выше.
- Обновите TIBCO JasperReports Server до версии 6.3.4, 6.4.3, 7.1.1 или выше.
- Обновите TIBCO Jaspersoft for AWS with Multi-Tenancy до версии 7.1.1 или выше.
- Обновите TIBCO Jaspersoft Reporting and Analytics for AWS до версии 7.1.1 или выше.
Если вы используете Maven, обновите версию зависимости в файле pom.xml:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>7.1.1</version>
</dependency>
Временные меры
Если немедленное обновление системы невозможно, необходимо применить компенсирующие меры контроля для снижения риска эксплуатации:
- Настройте правила Web Application Firewall (WAF) для блокировки запросов, содержащих паттерны обхода директорий:
\.\.\/
\.\.\\
%2e%2e%2f
-
Ограничьте права доступа учетной записи, от которой запущен сервис JasperReports, используя принцип наименьших привилегий (Least Privilege). Убедитесь, что процесс не имеет доступа к критическим системным файлам.
-
Изолируйте приложение в контейнере или chroot-окружении, чтобы ограничить видимость файловой системы хоста.
-
Настройте фильтрацию входящего трафика на уровне веб-сервера (например, Nginx), чтобы запретить подозрительные URI:
location ~ \.\./ {
deny all;
}