CVE-2022-26352

dotCMS dotCMS

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2022-08-25

Официальное описание

dotCMS ContentResource API contains an unrestricted upload of file with a dangerous type vulnerability that allows for directory traversal, in which the file is saved outside of the intended storage location. Exploitation allows for remote code execution.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2022-26352 представляет собой критическую уязвимость в API-эндпоинте /api/content системы dotCMS. Проблема заключается в недостаточной фильтрации имен файлов при их загрузке через multipart-запрос.

Злоумышленник может использовать последовательности обхода директорий (directory traversal), такие как ../, в параметре имени файла. Это позволяет сохранить произвольный файл (например, JSP-шелл) вне предназначенного для этого хранилища, в частности, в корневой каталог веб-приложения. Результатом эксплуатации является удаленное выполнение произвольного кода (RCE) с правами пользователя, под которым запущен dotCMS.

Как исправить

Основным способом устранения уязвимости является обновление dotCMS до версий, в которых данная ошибка исправлена.

  1. Определите текущую версию dotCMS.
  2. Выполните обновление до одной из следующих версий (или более новых):
  3. 22.03
  4. 21.06.7
  5. 5.3.8.10

Инструкции по обновлению:

  1. Создайте резервную копию базы данных и файловой системы.
  2. Скачайте соответствующий патч или новую версию с официального сайта dotCMS.
  3. Остановите сервис dotCMS:
./bin/shutdown.sh

  1. Примените обновление согласно документации вашей версии.
  2. Запустите сервис:
./bin/startup.sh

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

Если немедленное обновление невозможно, необходимо внедрить защитные механизмы на уровне сетевого периметра или конфигурации сервера приложений.

  1. Настройка Web Application Firewall (WAF): Настройте правила WAF для блокировки POST-запросов к эндпоинту /api/content, содержащих в теле запроса (Content-Disposition) последовательности обхода директорий:
..%2f
../
..\
..%5c

  1. Ограничение доступа на уровне Reverse Proxy (Nginx): Добавьте конфигурацию для фильтрации подозрительных запросов. Пример логики для Nginx:
if ($request_body ~* "filename=.*\\.\\./") {
    return 403;
}

  1. Проверка прав доступа: Убедитесь, что процесс dotCMS запущен от имени пользователя с минимальными привилегиями и не имеет прав на запись в директории, где исполняются скрипты (например, в папки с JSP), за исключением необходимых рабочих каталогов.