CVE-2022-24706

Apache CouchDB

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2022-08-25

Официальное описание

Apache CouchDB contains an insecure default initialization of resource vulnerability which can allow an attacker to escalate to administrative privileges.

🛡️
Технический анализ и план устранения

Суть уязвимости

Уязвимость CVE-2022-24706 связана с небезопасной конфигурацией по умолчанию в распределенной системе Apache CouchDB. Проблема заключается в том, что при установке CouchDB автоматически настраивается на использование фиксированного и общеизвестного значения cookie для аутентификации между узлами кластера (Erlang Cookie).

Если администратор не изменил это значение после установки, злоумышленник, имеющий доступ к порту 4369 (EPMD) или напрямую к порту распределения Erlang (обычно 9100-9200), может использовать стандартный cookie для получения полного контроля над узлом Erlang. Это позволяет выполнять произвольный код от имени пользователя, запустившего CouchDB, и обходить все механизмы авторизации базы данных, получая права администратора.

Как исправить

Основной метод исправления — обновление Apache CouchDB до версии 3.2.2 или выше. В новых версиях инсталлятор принудительно требует установки уникального значения cookie.

Если обновление невозможно, необходимо вручную изменить Erlang Cookie на всех узлах кластера:

  1. Сгенерируйте новую сложную строку для cookie.
  2. Отредактируйте файл конфигурации vm.args (путь по умолчанию в Linux: /opt/couchdb/etc/vm.args).
  3. Найдите строку, начинающуюся с -setcookie.
  4. Замените стандартное значение (например, monster) на ваше новое значение.
-setcookie <ВАШ_НОВЫЙ_СЛОЖНЫЙ_COOKIE>

  1. Перезапустите службу CouchDB.
systemctl restart couchdb

  1. Повторите процедуру на всех узлах кластера, используя одинаковое новое значение cookie, чтобы узлы могли взаимодействовать друг с другом.

Временные меры

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

  1. Настройте межсетевой экран (Firewall) так, чтобы порты 4369 (EPMD) и диапазон портов распределения Erlang (по умолчанию 9100-9200) были доступны только для доверенных IP-адресов внутри вашего кластера.
iptables -A INPUT -p tcp -s <IP_ДРУГОГО_УЗЛА> --dport 4369 -j ACCEPT
iptables -A INPUT -p tcp --dport 4369 -j DROP

  1. Убедитесь, что CouchDB слушает только внутренний сетевой интерфейс, если вам не требуется доступ к API извне.

  2. Проверьте текущее значение cookie в запущенной системе, чтобы убедиться в наличии проблемы.

ps aux | grep setcookie

Если в выводе вы видите -setcookie monster, ваша система находится в зоне критического риска.