Проект: Эксплуатация уязвимостей протоколов для манипуляции секретами NHI и обхода политик нулевого доверия

Скриншоты
Ниже приведены реальные скриншоты демонстрации. Дополнительно: screenshots/README.md.
1. Эксплойт DNS (сбой BIND)
A. Отправка пакета эксплойта
Scapy отправляет повреждённый TSIG DNS-пакет на BIND (см. dns_exploit.py).
B. Подтверждение сбоя контейнера
docker ps -a показывает, что контейнер BIND завершился после эксплойта.
C. Доказательства из лога сбоя
Соответствующее нарушение утверждения и лог сбоя из docker logs vulnerable_bind.
2. Сбой ротации секретов NHI
Клиент NHI (client_nhi_rotation.py) не может выполнить ротацию секрета из-за сбоя DNS, возвращаясь к статическим учётным данным.
3. Обход нулевого доверия
Демонстрация обхода (bypass_demo.py): статические учётные данные принимаются защищённым API, обходя механизмы нулевого доверия.
Цель
Продемонстрировать, как злоумышленник может использовать критическую уязвимость DNS (CVE-2025-40775) для сбоя DNS-серверов, нарушения процессов ротации секретов нечеловеческих идентификаторов (NHI) и перехвата машинных идентификаторов, тем самым обходя системы безопасности нулевого доверия. Проект сосредоточен на уязвимостях на уровне протокола и пробелах в жизненном цикле NHI, без использования зависимостей AI/ML.
Предпосылки и актуальность
- Уязвимости DNS: Исследование критических уязвимостей DNS (например, DoS BIND через повреждённые TSIG-записи).
- Управление NHI: Анализ распространённых слабостей в управлении и жизненном цикле нечеловеческих идентификаторов (ключи API, сервисные аккаунты, машинные идентификаторы) в облачных средах.
- Фреймворки нулевого доверия: Понимание того, как принципы нулевого доверия опираются на непрерывную аутентификацию и ротацию секретов, и как сбои могут нарушить эти допущения.
Схема атаки
Фаза 1: Вызов сбоя DNS-сервера
- Цель: Нарушить DNS-резолвинг для целевых облачных сервисов.
- Метод: Создание повреждённых DNS-запросов с использованием известной уязвимости BIND, связанной с TSIG-записями (CVE-2025-40775).
- Инструмент:
Scapy для генерации пакетов.
Фаза 2: Эксплуатация сбоев ротации секретов NHI
- Цель: Вынудить системы полагаться на статические/запасные NHI и захватить их.
- Метод: Нарушить связь с менеджерами секретов (например, HashiCorp Vault) с помощью DNS DoS, вызывая повторные попытки ротации. Исследовать, передаются ли секреты в открытом виде во время этих попыток или использование устаревших секретов создаёт возможность.
- Инструмент:
tcpdump для захвата трафика, симуляция Python-клиента.
Фаза 3: Обход политик нулевого доверия
- Цель: Использовать украденные/раскрытые NHI для маскировки под сервисы и эксфильтрации данных.
- Метод: Подделка токенов аутентификации (например, JWT) или прямое использование ключей API для доступа к ограниченным ресурсам.
- Инструмент: Python-скрипт для доступа к защищённому конечному API.
Краткое описание демонстрации
- Эксплуатация BIND 9.20.8 с помощью повреждённого TSIG DNS-пакета (с использованием
dns_exploit.py и Scapy) для сбоя DNS-сервера.
- Наблюдение сбоев ротации секретов NHI в клиенте (
client_nhi_rotation.py) из-за отключения DNS, что приводит к возврату к статическим учётным данным / учётным данным аварийного доступа.
- Демонстрация обхода нулевого доверия с использованием статических учётных данных (
STATIC_BREAK_GLASS_KEY_XYZABC) для доступа к защищённому API (bypass_demo.py), который предоставляет доступ и обходит политику.
Ключевые файлы
dns_exploit.py: Scapy-скрипт для запуска DoS BIND.
client_nhi_rotation.py: Имитирует ротацию секретов NHI и возврат.
bypass_demo.py: Демонстрирует обход с использованием статического NHI.
api-service-mock/app.py: Защищённая конечная точка API.
secrets-manager-mock/app.py: Имитированный менеджер секретов.
docker-compose.yml: Оркестрирует среду.
Как запустить
- Соберите и запустите среду:
docker-compose up -d --build
- Запустите эксплойт DNS:
python .\dns_exploit.py
- Запустите симуляцию клиента NHI:
python .\client_nhi_rotation.py
- Запустите демонстрацию обхода:
python .\bypass_demo.py
Воздействие
- Цепочка эксплуатации от начала до конца: DNS DoS → сбой ротации NHI → раскрытие статических учётных данных → обход нулевого доверия.
- Реалистичный облачный сценарий: Демонстрирует, как атаки на уровне протокола могут подорвать современные системы безопасности.
Рекомендации
- По возможности исключите статические учётные данные / учётные данные аварийного доступа.
- Укрепите инфраструктуру DNS и отслеживайте аномалии протокола.
- Обеспечьте безопасное ухудшение работы менеджеров секретов и клиентов при сбоях инфраструктуры.
Раскрытие уязвимости
Этот проект демонстрирует воздействие CVE-2025-40775, уязвимости типа «отказ в обслуживании» в BIND 9.20.0–9.20.8. Лабораторная среда намеренно собирает и запускает BIND 9.20.8 для имитации этого сценария. Все тестирования проводились в контролируемой среде исключительно в исследовательских и образовательных целях.
Детали CVE
- CVE: CVE-2025-40775
- Описание: Когда входящее сообщение DNS-протокола содержит транзакционную подпись (TSIG), BIND всегда проверяет её. Если TSIG содержит недопустимое значение в поле алгоритма, BIND немедленно завершает работу с ошибкой утверждения.
- Затронутые версии: 9.20.0–9.20.8, 9.21.0–9.21.7
- Воздействие: Удалённый DoS без аутентификации (CVSS 7.5 ВЫСОКИЙ)
- Обходной путь: Нет. Исправление до версии 9.20.9 или новее.
- Ссылки: ISC Advisory, NVD
- CWE: CWE-232: Некорректная обработка неопределённых значений
Как используется уязвимая версия
Сервис vulnerable_bind собирается из исходников с использованием официального тарбола 9.20.8, как показано в Dockerfile. Это только для демонстрации — не используйте эту версию в производственной среде.
Отказ от ответственности
Этот репозиторий предназначен только для образовательных и исследовательских целей. Не используйте эти методы или код для несанкционированных или вредоносных действий. См. DISCLAIMER.md.