CVE-2019-0193
Apache Solr
2021-12-10
The optional Apache Solr module DataImportHandler contains a code injection vulnerability.
Технический анализ и план устранения
Суть уязвимости
Уязвимость в модуле DataImportHandler (DIH) Apache Solr позволяет удаленному атакующему выполнить произвольный код на сервере. Для эксплуатации требуется доступ к веб-интерфейсу Solr и права на конфигурирование DIH. Атакующий может отправить специально сформированный запрос к эндпоинту /solr/<core>/dataimport, который приведет к выполнению вредоносных команд.
Как исправить
Основное решение — обновление Apache Solr до безопасной версии.
-
Обновите Apache Solr до одной из следующих версий:
- Solr 8.2.0 или новее
- Solr 7.7.2 или новее
- Solr 6.6.5 или новее
-
Для систем на базе Debian/Ubuntu (если Solr установлен из репозитория): ```bash # Определите текущую версию dpkg -l | grep solr
Обновите пакеты и установите solr
sudo apt update sudo apt install solr ```
-
Для ручной установки скачайте и установите исправленную версию с официального сайта Apache Solr.
-
После обновления перезапустите службу Solr:
bash sudo systemctl restart solr
Временное решение
Если немедленное обновление невозможно, выполните следующие шаги:
-
Отключите модуль DataImportHandler для всех коллекций (cores). Для этого в файле
solrconfig.xmlкаждой коллекции закомментируйте или удалите секцию<requestHandler name="/dataimport" class="...DataImportHandler">. -
Ограничьте сетевой доступ к порту Solr (по умолчанию 8983) с помощью брандмауэра. Разрешите подключения только с доверенных IP-адресов (например, с серверов приложений).
bash # Пример для UFW (Ubuntu) sudo ufw deny 8983/tcp # Или разрешите только определенный IP sudo ufw allow from 192.168.1.100 to any port 8983 -
Настройте аутентификацию и авторизацию в Solr, используя плагин
BasicAuthили интеграцию с reverse proxy (например, nginx, Apache HTTP Server) для проверки подлинности пользователей перед доступом к панели управления. -
Настройте правила WAF для блокировки запросов, содержащих подозрительные параметры (например,
command,dataConfig) в пути/dataimport.