CVE-2020-10199
Sonatype Nexus Repository
2021-11-03
Sonatype Nexus Repository contains an unspecified vulnerability that allows for remote code execution.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CVE-2020-10199) в Sonatype Nexus Repository позволяет удаленному атакующему выполнить произвольный код на сервере. Это достигается путем отправки специально сформированного HTTP-запроса к определенным компонентам веб-интерфейса, которые некорректно обрабатывают ввод пользователя.
Как исправить
Необходимо обновить Nexus Repository до версии, содержащей исправление. Уязвимость устранена в следующих релизах: * Nexus Repository Manager 3.x: Обновитесь до версии 3.22.0 или новее. * Nexus Repository Manager OSS/Pro 2.x: Обновитесь до версии 2.14.15.
Процесс обновления (пример для Linux):
1. Остановите текущий экземпляр Nexus.
bash
systemctl stop nexus
2. Сделайте резервную копию текущей установки и данных.
bash
tar -czf /backup/nexus_backup_$(date +%Y%m%d).tar.gz /opt/sonatype/nexus/
3. Скачайте и установите исправленную версию с официального сайта Sonatype.
4. Распакуйте архив в директорию установки (например, /opt/sonatype/nexus), заменив старые файлы (кроме директорий sonatype-work и etc).
5. Запустите Nexus.
bash
systemctl start nexus
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
1. Ограничьте сетевой доступ: Настройте брандмауэр (например, iptables или облачный Security Group) так, чтобы доступ к веб-интерфейсу Nexus (порт 8081 по умолчанию) был разрешен только с доверенных IP-адресов (например, сетей CI/CD-серверов и администраторов).
bash
# Пример iptables для разрешения доступа только из сети 10.0.1.0/24
iptables -A INPUT -p tcp --dport 8081 -s 10.0.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 8081 -j DROP
2. Настройте Reverse Proxy/WAF: Разместите Nexus за веб-сервером (Nginx, Apache) или Web Application Firewall (WAF), способным фильтровать вредоносные HTTP-запросы. Настройте строгие правила для всех путей, начинающихся с /service/rest, /service/extdirect и /nexus.
3. Проверьте аутентификацию: Убедитесь, что для всех репозиториев и функций Nexus настроена обязательная аутентификация (включая анонимный доступ, который должен быть отключен в настройках безопасности).