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 до безопасной версии.

  1. Обновите пакет mongo-express через npm (глобально или в рамках проекта): bash npm install -g mongo-express@0.54.0

    • Безопасные версии: 0.54.0 и выше.
    • Уязвимые версии: Все версии ниже 0.54.0.
  2. Если mongo-express установлен как зависимость в package.json вашего проекта:

    • Обновите версию в файле package.json на "mongo-express": "^0.54.0".
    • Выполните установку зависимостей: bash npm update
  3. Перезапустите службу mongo-express после обновления.

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

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

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

    • Настройте брандмауэр (например, 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 ```

  2. Используйте обратный прокси с WAF:

    • Разместите mongo-express за обратным прокси (например, nginx) и настройте в нем Web Application Firewall (WAF), блокирующий запросы с подозрительными payload (например, содержащими constructor, toString, valueOf в теле запроса).
  3. Отключите или остановите службу:

    • Если mongo-express не используется критически, полностью остановите сервис до момента установки патча. ```bash

    Если используется systemd

    sudo systemctl stop mongo-express sudo systemctl disable mongo-express ```