CVE-2019-10758
MongoDB mongo-express
2021-12-10
mongo-express before 0.54.0 is vulnerable to Remote Code Execution via endpoints that uses the `toBSON` method.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CWE-94: Improper Control of Generation of Code ('Code Injection')) позволяет удаленному атакующему выполнить произвольный код JavaScript на сервере. Это возможно через специально сформированные HTTP-запросы к уязвимым endpoint'ам веб-интерфейса mongo-express (например, /checkValid), которые используют внутренний метод toBSON. Атакующий может внедрить и выполнить вредоносный код, что приведет к полному компрометированию сервера.
Как исправить
Основное решение — обновить mongo-express до безопасной версии.
-
Обновите пакет mongo-express через npm (глобально или в рамках проекта):
bash npm install -g mongo-express@0.54.0- Безопасные версии:
0.54.0и выше. - Уязвимые версии: Все версии ниже
0.54.0.
- Безопасные версии:
-
Если mongo-express установлен как зависимость в
package.jsonвашего проекта:- Обновите версию в файле
package.jsonна"mongo-express": "^0.54.0". - Выполните установку зависимостей:
bash npm update
- Обновите версию в файле
-
Перезапустите службу mongo-express после обновления.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Ограничьте сетевой доступ:
- Настройте брандмауэр (например,
iptablesилиnftables), чтобы разрешить подключение к порту mongo-express (по умолчанию8081) только с доверенных IP-адресов (например, localhost или админской подсети). ```bash
Пример для iptables: разрешить только с локального интерфейса
iptables -A INPUT -p tcp --dport 8081 -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p tcp --dport 8081 -j DROP ```
- Настройте брандмауэр (например,
-
Используйте обратный прокси с WAF:
- Разместите mongo-express за обратным прокси (например, nginx) и настройте в нем Web Application Firewall (WAF), блокирующий запросы с подозрительными payload (например, содержащими
constructor,toString,valueOfв теле запроса).
- Разместите mongo-express за обратным прокси (например, nginx) и настройте в нем Web Application Firewall (WAF), блокирующий запросы с подозрительными payload (например, содержащими
-
Отключите или остановите службу:
- Если mongo-express не используется критически, полностью остановите сервис до момента установки патча. ```bash
Если используется systemd
sudo systemctl stop mongo-express sudo systemctl disable mongo-express ```