CVE-2019-7238

Sonatype Nexus Repository Manager

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

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

2021-12-10

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

Sonatype Nexus Repository Manager before 3.15.0 has an incorrect access control vulnerability. Exploitation allows for remote code execution.

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

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

Уязвимость в механизме контроля доступа позволяет неавторизованному удаленному злоумышленнику выполнить произвольный код на сервере Nexus Repository Manager. Атака возможна через HTTP-запросы к уязвимому эндпоинту.

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

Необходимо обновить Nexus Repository Manager до версии 3.15.0 или выше.

  1. Остановите текущий экземпляр Nexus: bash # Если Nexus работает как сервис (systemd) sudo systemctl stop nexus # Или перейдите в директорию установки и выполните ./nexus stop

  2. Сделайте резервную копию данных и конфигурации: bash # Резервное копирование директорий sonatype-work и установки Nexus tar -czf /backup/nexus_backup_$(date +%Y%m%d).tar.gz /opt/sonatype/nexus /opt/sonatype/sonatype-work

  3. Загрузите и установите исправленную версию (например, 3.15.0):

    • Скачайте архив с новой версией с официального сайта Sonatype.
    • Распакуйте архив в директорию установки, заменив старые файлы (кроме директории sonatype-work и конфигурационных файлов).
    • Либо выполните обновление через менеджер пакетов, если Nexus был установлен таким способом (например, из AUR для Arch Linux).
  4. Запустите Nexus и проверьте версию: bash sudo systemctl start nexus # Или ./nexus start После запуска откройте веб-интерфейс (http://ваш_сервер:8081), авторизуйтесь и проверьте версию в разделе HelpAbout. Должна отображаться версия 3.15.0 или новее.

Временное решение

Если немедленное обновление невозможно, примените следующие меры:

  1. Ограничьте сетевой доступ:

    • Настройте брандмауэр (например, iptables или firewalld), чтобы разрешить доступ к порту Nexus (по умолчанию 8081) только с доверенных IP-адресов (например, сетей CI/CD-серверов и администраторов). ```bash

    Пример для iptables (разрешить только с IP 192.168.1.100)

    sudo iptables -A INPUT -p tcp --dport 8081 -s 192.168.1.100 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 8081 -j DROP ```

  2. Настройте обратный прокси (например, Nginx или Apache) с WAF:

    • Разместите Nexus за веб-сервером с включенным модулем WAF (например, ModSecurity) и настройте строгие правила для фильтрации подозрительных запросов.
    • Пример базовой конфигурации Nginx для проксирования: nginx location / { proxy_pass http://localhost:8081; # Добавьте дополнительные ограничивающие директивы allow 192.168.1.0/24; deny all; }
  3. Повысьте мониторинг:

    • Включите детальное логирование всех HTTP-запросов к Nexus.
    • Настройте алерты на подозрительную активность (например, множественные запросы к эндпоинтам, связанным с загрузкой компонентов или управлением задачами, от неавторизованных IP-адресов).