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 или выше.
-
Остановите текущий экземпляр Nexus:
bash # Если Nexus работает как сервис (systemd) sudo systemctl stop nexus # Или перейдите в директорию установки и выполните ./nexus stop -
Сделайте резервную копию данных и конфигурации:
bash # Резервное копирование директорий sonatype-work и установки Nexus tar -czf /backup/nexus_backup_$(date +%Y%m%d).tar.gz /opt/sonatype/nexus /opt/sonatype/sonatype-work -
Загрузите и установите исправленную версию (например, 3.15.0):
- Скачайте архив с новой версией с официального сайта Sonatype.
- Распакуйте архив в директорию установки, заменив старые файлы (кроме директории
sonatype-workи конфигурационных файлов). - Либо выполните обновление через менеджер пакетов, если Nexus был установлен таким способом (например, из AUR для Arch Linux).
-
Запустите Nexus и проверьте версию:
bash sudo systemctl start nexus # Или ./nexus startПосле запуска откройте веб-интерфейс (http://ваш_сервер:8081), авторизуйтесь и проверьте версию в разделе Help → About. Должна отображаться версия 3.15.0 или новее.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Ограничьте сетевой доступ:
- Настройте брандмауэр (например,
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 ```
- Настройте брандмауэр (например,
-
Настройте обратный прокси (например, Nginx или Apache) с WAF:
- Разместите Nexus за веб-сервером с включенным модулем WAF (например, ModSecurity) и настройте строгие правила для фильтрации подозрительных запросов.
- Пример базовой конфигурации Nginx для проксирования:
nginx location / { proxy_pass http://localhost:8081; # Добавьте дополнительные ограничивающие директивы allow 192.168.1.0/24; deny all; }
-
Повысьте мониторинг:
- Включите детальное логирование всех HTTP-запросов к Nexus.
- Настройте алерты на подозрительную активность (например, множественные запросы к эндпоинтам, связанным с загрузкой компонентов или управлением задачами, от неавторизованных IP-адресов).