Восемь уязвимостей в HashiCorp Consul позволяют вызвать отказ в обслуживании и обойти ACL

HashiCorp

HashiCorp выпустила исправления для восьми уязвимостей в Consul Community Edition и Consul Enterprise. Ошибки затрагивают механизмы авторизации, кэширования и обработки сетевых подключений. Среди них есть проблемы, которые позволяют неаутентифицированному злоумышленнику перегрузить агента, а также обход списков контроля доступа (ACL) и частичное чтение файлов с сервера.

Детали уязвимостей

Часть уязвимостей приводит к отказу в обслуживании. CVE-2026-19012 связана с режимом понижения версии Enterprise-to-Community: при проверке совместимости конфигурационных записей не учитываются все допустимые формы одной из них. Корректно сформированная запись может вызвать аварийное завершение агента. Для эксплуатации нужны права на запись конфигурации, но в кластерах с отключёнными ACL токен не требуется.

Две другие проблемы, CVE-2026-19014 и CVE-2026-19015, касаются неконтролируемого потребления ресурсов. Эндпоинты Connect authorization и Connect CA roots продолжают использовать внутренний кэш, даже если оператор отключил его через настройку http_config.use_cache. В результате регулярные обращения к этим интерфейсам приводят к неограниченному росту кэша и повышенной нагрузке на память. Во втором случае для эксплуатации не нужен валидный токен ACL.

Ещё одна уязвимость, CVE-2026-15972, связана с внешними gRPC-слушателями Consul. На них не применялись ограничения числа одновременных соединений с одного адреса, которые уже реализованы для HTTP и внутреннего RPC-интерфейсов. Злоумышленник может открыть множество подключений, заставляя агента удерживать ресурсы ещё до обработки запроса. Это не требует ни валидного запроса, ни аутентификации.

CVE-2026-19113 также позволяет вызвать отказ в обслуживании без учётных данных. Несколько эндпоинтов HTTP API агента обрабатывают содержимое запроса до проверки авторизации и без ограничения его размера. Даже если запрос в итоге отклоняется, он успевает занять память агента. Ограничение сетевого доступа к HTTP API и использование взаимной TLS-аутентификации (mTLS) на HTTPS-слушателе снижают риск.

Часть уязвимостей носит характер обхода контроля доступа. CVE-2026-19016 затрагивает transaction API: для операции удаления сессии там не выполнялась проверка прав, хотя в отдельном API для работы с сессиями она предусмотрена. При наличии доступа к RPC-порту и знании идентификатора сессии можно удалить её без соответствующих разрешений. Это способно нарушить распределённые блокировки, выборы лидера и координацию проверок состояния служб.

CVE-2026-15970 связана с обходом L7-интентов. Если для сервиса задан собственный публичный listener через опцию envoy_public_listener_json, правила доступа, основанные на пути запроса, могут применяться к запросам в неканоническом виде. В результате сервис, которому разрешено соединение с целевым сервисом, может получить доступ к путям, закрытым правилом deny.

Ещё одна проблема, CVE-2026-19017, позволяет частично читать произвольные файлы на хосте Consul-сервера. Она затрагивает интеграцию с Vault в качестве центра сертификации Connect при использовании методов аутентификации JWT или AppRole. Список директорий, откуда Consul разрешено читать файлы учётных данных, оказался шире задуманного. Пользователь с правами operator:write может изменить конфигурацию CA и заставить Consul отправить содержимое чувствительного файла в Vault в рамках запроса аутентификации. На кластеры с методом Kubernetes или без Vault Connect CA эта уязвимость не влияет.

Проблемы воспроизводились в различных ветках Consul, начиная с версий 1.2.0-1.20.1 и вплоть до 2.0.2. Все они устранены в Consul Community Edition 2.0.3, а также в Consul Enterprise 2.0.3, 1.22.11 и 1.21.17. Пользователям рекомендуется обновиться до этих версий.

Разработчики дополнительно предусмотрели меры для снижения рисков. Для защиты от неограниченного числа подключений к внешним gRPC-слушателям добавлена настройка limits.grpc_max_conns_per_client со значением по умолчанию 100. Она ограничивает количество одновременных соединений с одного исходного IP-адреса. Для Vault Connect CA введена опция token_dirs, позволяющая задать собственный список разрешённых директорий, который нельзя переопределить через конфигурационный API.

Включение взаимной TLS-аутентификации на RPC-порту сервера снижает вероятность эксплуатации уязвимости в transaction API, так как требует наличия валидного клиентского сертификата. Тем не менее для полностью безопасной работы необходимо обновление.

Уязвимости Consul показывают, что даже в зрелых продуктах для сервисных сеток остаются пробелы в обработке нестандартных конфигураций и сетевых поверхностей. Регулярное обновление и проверка сетевой изоляции административных и gRPC-интерфейсов остаются ключевыми мерами защиты.

Ссылки

Комментарии: 0