Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-57836-Confluent_Kafka — Отключение проверки TLS-сертификата для HashiCorp Vault KMS в confluent-kafka | Kitploit
Инструменты/GitHubGitHub/rahulreddykarne/cve-2026-57836-confluent_kafka
Оборонительные ИнструментыАнализ уязвимостейВиртуализация для безопасностиВеб-безопасностьКриптографияБезопасность облачных средОбучение и Образование
GitHubrahulreddykarne/cve-2026-57836-confluent_kafka

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

CVE-2026-57836-Confluent_Kafka

Отключение проверки TLS-сертификата для HashiCorp Vault KMS в confluent-kafka

Репозиторий
1 день назадЕщё не проверено
Поделиться

CVE-2026-57836: Отключена проверка TLS-сертификатов для HashiCorp Vault KMS в confluent-kafka

Уровень опасности: Высокий, CVSS 3.1 7.4

Вектор (v3.1): CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

Затронуто: confluent-kafka >= 2.8.0, <= 2.14.2

Исправлено в: 2.15.0

CWE: CWE-295 (Некорректная проверка сертификатов)

Компонент: confluent_kafka/schema_registry/rules/encryption/hcvault/hcvault_client.py

Обнаружил: Rahul Karne

CNA: VulnCheck


Краткое описание

Клиент HashiCorp Vault KMS в confluent-kafka жёстко задаёт verify=False при создании , отключая проверку TLS-сертификатов для HTTPS-соединений с Vault, устанавливаемых через правила шифрования полей Schema Registry.

hvac.Client

Уязвимый код находится в:

root@kitploit:~
confluent_kafka/schema_registry/rules/encryption/hcvault/hcvault_client.py

Затронутый клиент инициализируется следующим образом:

root@kitploit:~
self._client = hvac.Client(
    url=vault_url,
    token=token,
    namespace=ns,
    verify=False
)

Поскольку verify=False задан безусловно, клиент принимает недоверенные TLS-сертификаты, включая самоподписанные или контролируемые злоумышленником.

Злоумышленник, находящийся в сети и способный перехватывать или перенаправлять трафик приложения к Vault, может выдать себя за сервер Vault, перехватить учётные данные аутентификации Vault и вернуть поддельные ответы Vault/KMS.

Затронутая интеграция HCVault предоставляет конфигурацию для токенов Vault, пространств имён и учётных данных AppRole, однако в затронутых версиях отсутствует поддерживаемая конфигурация CA-бандла или эквивалентный механизм для восстановления проверки сертификатов.


Влияние

Злоумышленник, занимающий позицию «человек посередине» в сети между приложением и HashiCorp Vault, может:

  1. Предъявить контролируемый злоумышленником или самоподписанный TLS-сертификат.
  2. Добиться принятия этого сертификата, поскольку проверка отключена.
  3. Перехватить материалы аутентификации Vault, включая:
    • X-Vault-Token
    • AppRole role_id
    • AppRole secret_id
  4. Внедрить поддельные ответы Vault.
  5. Вмешаться в операции обёртывания или развёртывания ключей KMS, используемые правилами шифрования Schema Registry.

Это может скомпрометировать конфиденциальность и целостность данных, защищаемых рабочим процессом KMS на базе Vault.


Охват

confluent-kafka — официальный Python-клиент Confluent для Apache Kafka.

Уязвимость затрагивает конкретно развёртывания, использующие:

root@kitploit:~
Schema Registry encryption rules
        ↓
HCVault KMS integration
        ↓
hcvault:// key URI

Таким образом, затронутая популяция уже, чем все пользователи confluent-kafka.

Однако затронутая функциональность критична с точки зрения безопасности, поскольку такие развёртывания полагаются на HashiCorp Vault для управления криптографическими ключами и шифрования на уровне полей.


Технические детали

HcVaultKmsClient.__init__() разбирает ключевой URI hcvault://, определяет базовый URL Vault и создаёт hvac.Client.

В затронутых версиях, включая 2.14.2, соответствующий код выглядит так:

root@kitploit:~
self._client = hvac.Client(
    url=vault_url,
    token=token,
    namespace=ns,
    verify=False
)

if role_id and secret_id and self._client is not None:
    self._client.auth.approle.login(
        role_id=role_id,
        secret_id=secret_id
    )

Библиотека hvac в конечном счёте опирается на TLS-стек Python requests.

Установка:

root@kitploit:~
verify=False

предписывает клиенту не проверять TLS-сертификат удалённого сервера.

В результате сертификаты, которые обычно были бы отклонены, могут быть приняты, включая сертификаты:

  • Самоподписанные
  • Просроченные
  • Выданные для неправильного имени хоста
  • Подписанные недоверенным удостоверяющим центром
  • Сгенерированные злоумышленником

Это затрагивает оба поддерживаемых пути аутентификации.

Аутентификация по токену

При использовании аутентификации по токену токен Vault передаётся через HTTP-заголовок:

root@kitploit:~
X-Vault-Token

Если злоумышленнику успешно удаётся выдать себя за конечную точку Vault, контролируемый им сервер может получить этот токен.

Аутентификация AppRole

При использовании аутентификации AppRole клиент отправляет:

root@kitploit:~
role_id
secret_id

на:

root@kitploit:~
/v1/auth/approle/login

Таким образом, успешная MITM-атака позволяет перехватить оба учётных данных AppRole.


Отсутствующая конфигурация TLS

Затронутый драйвер HCVault читает конфигурацию, включая:

root@kitploit:~
token.id
namespace
approle.role.id
approle.secret.id

а также соответствующие переменные окружения VAULT_*.

Однако в затронутых версиях не предоставляется конфигурация, позволяющая операторам:

  • Указать пользовательский CA-бандл.
  • Восстановить проверку сертификата сервера.
  • Настроить доверенные корни приватной PKI.
  • Настроить эквивалентное безопасное поведение проверки TLS.

В результате приложения, использующие затронутую интеграцию, не могут восстановить проверку TLS через обычную конфигурацию пакета.


Первопричина

Пакет явно отключает проверку TLS-сертификата сервера вместо того, чтобы полагаться на безопасное значение по умолчанию.

Уязвимая конструкция по сути такова:

root@kitploit:~
hvac.Client(..., verify=False)

а не:

root@kitploit:~
hvac.Client(..., verify=True)

или просто:

root@kitploit:~
hvac.Client(...)

где проверка включена по умолчанию.

Отключение проверки сертификата устраняет аутентификацию сервера из TLS-соединения.

Хотя соединение остаётся зашифрованным, у клиента нет надёжного механизма определения того, общается ли он с легитимным сервером Vault.

Это создаёт условие, необходимое для сетевой атаки «человек посередине».


Предусловия эксплуатации

Успешная эксплуатация требует:

  1. Приложение использует затронутую версию confluent-kafka:

    • с 2.8.0 по 2.14.2.
  2. Приложение использует правила шифрования Schema Registry с интеграцией HCVault KMS.

  3. Настроенный ключ KMS использует схему:

root@kitploit:~
hcvault://
  1. Злоумышленник получает сетевую позицию, позволяющую перехватывать, перенаправлять или подменять трафик между приложением и Vault.

Возможные примеры включают:

  • Подмену DNS
  • Подмену ARP
  • Скомпрометированную сетевую инфраструктуру
  • Вредоносную инфраструктуру Wi-Fi или маршрутизатора
  • Манипуляции с маршрутами/BGP
  • Вредоносный прокси исходящего трафика
  • Скомпрометированный сетевой сегмент

После получения необходимой позиции MITM привилегии на уровне приложения или взаимодействие с жертвой не требуются.


Доказательство концепции

poc_confluent_kafka.py демонстрирует проблему на локально распакованном wheel-пакете confluent-kafka 2.14.2.

PoC использует:

  • Локальный самоподписанный HTTPS-сервер, имитирующий HashiCorp Vault.
  • Фиктивные учётные данные Vault.
  • Реальную уязвимую реализацию HcVaultKmsClient.
  • Никакой реальной инфраструктуры Kafka.
  • Никакой реальной инфраструктуры Vault.
  • Никаких производственных учётных данных.

Доказательство концепции содержит пять режимов.

РежимОписание
certГенерирует самоподписанный сертификат и ключ для локального mock Vault.
serverЗапускает mock HTTPS Vault на https://localhost:8443 и отображает полученные запросы.
controlБезопасный контроль с verify=True; должен отклонить самоподписанный сертификат с CERTIFICATE_VERIFY_FAILED.
tokenЗагружает уязвимый HcVaultKmsClient и демонстрирует, что он принимает недоверенный сертификат.
approleПроверяет уязвимый путь аутентификации AppRole и демонстрирует раскрытие role_id и secret_id.

Настройка

Установите зависимости PoC:

root@kitploit:~
pip install hvac cryptography

Поместите распакованный уязвимый wheel рядом с PoC:

root@kitploit:~
confluent_kafka-2.14.2-cp310-cp310-win_amd64/
└── confluent_kafka/
    └── schema_registry/
        └── ...

PoC импортирует HcVaultKmsClient напрямую из распакованного пакета 2.14.2.

Он заглушает несвязанные зависимости, такие как tink, что позволяет протестировать уязвимую конструкцию клиента Vault без необходимости в полном окружении Kafka или KMS.


Запуск

Используйте два терминала.

Терминал 1 — Запуск mock Vault

root@kitploit:~
python poc_confluent_kafka.py server

Mock HTTPS Vault прослушивает:

root@kitploit:~
https://localhost:8443

используя самоподписанный сертификат.

Терминал 2 — Безопасный контроль

Сначала продемонстрируйте, что надлежащая проверка сертификата отклоняет самоподписанный сервер:

root@kitploit:~
python poc_confluent_kafka.py control

Ожидаемый результат:

root@kitploit:~
EXPECTED TLS failure: CERTIFICATE_VERIFY_FAILED
-> verify=True correctly rejected the self-signed cert

Уязвимый путь с токеном

Запустите:

root@kitploit:~
python poc_confluent_kafka.py token

Уязвимый HcVaultKmsClient подключается, несмотря на то что сервер предъявляет недоверенный сертификат.

Mock-сервер может наблюдать токен Vault:

root@kitploit:~
GET /v1/auth/token/lookup-self
X-Vault-Token: CNA-DEMO-VAULT-TOKEN
X-Vault-Namespace: cna-demo-namespace

Уязвимый путь AppRole

Запустите:

root@kitploit:~
python poc_confluent_kafka.py approle

Mock Vault получает:

root@kitploit:~
POST /v1/auth/approle/login
{"role_id": "CNA-DEMO-ROLE-ID", "secret_id": "CNA-DEMO-SECRET-ID"}

Контраст между безопасным режимом control и уязвимыми режимами token / approle демонстрирует, что поведение обусловлено жёстко заданным:

root@kitploit:~
verify=False

а не тестовым окружением.


Устранение

Базовое безопасное исправление — позволить hvac выполнять проверку сертификата:

root@kitploit:~
hvac.Client(
    url=vault_url,
    token=token,
    namespace=ns
)

Поскольку проверка TLS включена по умолчанию, явное её отключение не требуется.

Надёжная реализация должна:

  1. Включать проверку TLS-сертификата по умолчанию.

  2. Поддерживать настраиваемый CA-бандл, например:

root@kitploit:~
ssl.ca.location
  1. Поддерживать конфигурацию CA, специфичную для Vault, например:
root@kitploit:~
VAULT_CACERT
  1. Поддерживать клиентские сертификаты для сред, использующих mutual TLS.

  2. Предотвращать незаметное отключение проверки сертификата пустым или ложным значением конфигурации.

  3. Добавить регрессионное тестирование, подтверждающее, что самоподписанные и иные недоверенные сертификаты отклоняются по умолчанию.


Исправленная версия

Уязвимость исправлена в:

root@kitploit:~
confluent-kafka 2.15.0

Затронутые версии:

root@kitploit:~
2.8.0
through
2.14.2

В 2.15.0 поведение клиента Vault было изменено так, что проверка TLS включена по умолчанию.

Обновлённая реализация также вводит конфигурацию, связанную с TLS, включая:

root@kitploit:~
ssl.ca.location
VAULT_CACERT
ssl.certificate.location
ssl.key.location

Это позволяет развёртываниям, использующим инфраструктуру приватной PKI, предоставлять конфигурацию доверенного CA и клиентского сертификата без отключения проверки сертификатов.


CVSS

Уязвимость оценена:

root@kitploit:~
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N

Оценка CVSS 3.1: 7.4 — Высокий

Разбор вектора

AV:N — Сеть

Уязвимое взаимодействие с Vault происходит по сетевому соединению.

AC:H — Высокая сложность атаки

Злоумышленник должен получить позицию MITM в сети или иным образом перенаправить соединение с Vault.

Это существенное предусловие, и именно поэтому уязвимость оценена как Высокая, а не Критическая.

PR:N — Привилегии не требуются

Злоумышленнику не требуются привилегии внутри затронутого приложения.

UI:N — Взаимодействие с пользователем не требуется

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

S:U — Область не изменена

Влияние остаётся в пределах области безопасности затронутого приложения и его взаимодействия с Vault.

C:H — Высокое влияние на конфиденциальность

Токены Vault или учётные данные AppRole могут быть раскрыты злоумышленнику.

I:H — Высокое влияние на целостность

Злоумышленник может выдать себя за Vault и вернуть поддельные ответы Vault/KMS.

A:N — Влияние на доступность отсутствует

Прямого влияния на доступность продемонстрировано не было.


Статус

  • Затронуто: с 2.8.0 по 2.14.2
  • Исправлено: 2.15.0
  • CWE: CWE-295
  • CVE: Ожидается / ещё не присвоен

Жёстко заданный verify=False существовал с момента появления интеграции HCVault вплоть до версии 2.14.2.

Поведение безопасности было исправлено в 2.15.0.


Хронология раскрытия

  • YYYY-MM-DD — Сообщено в Confluent.
  • 2026-06-26 — Исправление безопасной проверки TLS объединено в upstream.
  • Исправленная версия выпущена как 2.15.0.
  • Присвоение CVE ожидается.

Благодарности

Обнаружено и сообщено Rahul Karne.


Ссылки

  • confluent-kafka-python
    https://github.com/confluentinc/confluent-kafka-python

  • confluent-kafka на PyPI
    https://pypi.org/project/confluent-kafka/

  • Python-клиент HashiCorp hvac
    https://hvac.readthedocs.io/

  • Аутентификация HashiCorp Vault AppRole
    https://developer.hashicorp.com/vault/api-docs/auth/approle

  • CWE-295 — Некорректная проверка сертификатов
    https://cwe.mitre.org/data/definitions/295.html

  • Документация Python по TLS / проверке сертификатов
    https://docs.python.org/3/library/ssl.html#ssl-security


О проекте

Этот репозиторий документирует результат скоординированного раскрытия информации об уязвимости и предоставляет безвредное автономное доказательство концепции.

PoC работает исключительно против локального mock-сервера Vault с использованием фиктивных учётных данных.

Он не взаимодействует с реальным HashiCorp Vault, Kafka, Schema Registry, производственной инфраструктурой или реальными учётными данными.

Материал предоставлен для оборонительных исследований в области безопасности и образовательных целей.


Пресса

Медиа-запросы: [email protected]. Полный PoC (сервер злоумышленника, архив обхода, приложение-жертва) и дополнительные технические детали доступны по запросу.

Скачать инструмент