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

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

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

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

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

Категории

Все категории
Loading categories
leaky-vessels-dynamic-detector — Детектор на основе eBPF для обнаружения уязвимостей выхода из контейнера в runc и Docker в реальном времени, отслеживающий системные вызовы и обращения к демону Docker для выявления эксплуатации CVE-2024-21626, CVE-2024-23651, CVE-2024-23652 и CVE-2024-23653 во время сборки и выполнения. | Kitploit
Инструменты/GitHubGitHub/snyk/leaky-vessels-dynamic-detector
Оборонительные ИнструментыБезопасность контейнеровДинамический анализ (песочница)Анализ уязвимостейБезопасность облачных средОбнаружение ВторженийArchived
GitHubsnyk/leaky-vessels-dynamic-detector

leaky-vessels-dynamic-detector

Популярное

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

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

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

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

Смотреть все инструменты →
Репозиторий
10581 год назадПроверено Kitploit

Описание

Детектор на основе eBPF для обнаружения уязвимостей выхода из контейнера в runc и Docker в реальном времени, отслеживающий системные вызовы и обращения к демону Docker для выявления эксплуатации CVE-2024-21626, CVE-2024-23651, CVE-2024-23652 и CVE-2024-23653 во время сборки и выполнения.

Поделиться

ВНИМАНИЕ

Этот репозиторий заархивирован.

В код больше не будут вноситься обновления, и к моменту прочтения этого уведомления он может быть небезопасным или даже неработоспособным. Рассматривайте его только в исторических целях и обращайтесь с ним осторожно.

Leaky Vessels Dynamic Detector

snyk-oss-category

В этом репозитории вы найдёте эталонную реализацию динамического обнаружения на основе eBPF для уязвимостей runc и Docker CVE-2024-21626, CVE-2024-23651, CVE-2024-23652 и CVE-2024-23653. Она перехватывает системные вызовы Linux (например, chdir, mount) и вызовы функций демона Docker, связывая их со сборками Docker и процессами контейнеров для выявления эксплуатации этих уязвимостей. Для подхода, основанного на статическом анализе, см. этот репозиторий.

runc process.cwd и утечка файловых дескрипторов: побег из контейнера [CVE-2024-21626]

CVE-2024-21626 — это уязвимость в среде выполнения контейнеров runc, позволяющая атакующему выйти за пределы изоляции контейнера и получить полный root RCE с помощью специально созданного образа, эксплуатирующего проблему в обработке инструкции WORKDIR. Поскольку существует состояние «гонки» между моментом открытия и закрытия некоторых файловых дескрипторов хоста, атакующий может создать Dockerfile со следующей инструкцией WORKDIR /proc/self/fd/[ID] (где ID — системно-зависимый файловый дескриптор), которая будет указывать на файловую систему базового хоста. Это можно эксплуатировать при выполнении:

  1. docker build — в 2 случаях:
    • Когда собираемый Dockerfile содержит инструкцию, запускающую эксплойт.
    • Когда собираемый Dockerfile ссылается на базовый образ через инструкцию FROM, содержащую команду ONBUILD, запускающую эксплойт, например ONBUILD WORKDIR /proc/self/fd/[ID]. Инструкция ONBUILD внедряет команду не в образ, который её содержит, а в образ, который использует его как базовый. Это означает, что если базовый образ скомпрометирован или намеренно вредоносен (например, размещён на Dockerhub или в других публичных реестрах контейнеров), эксплуатация возможна, даже если в образе, который фактически собирает команда docker build, ничего не меняется.
  2. docker run

Таким образом, эта уязвимость может подвергать риску как системы сборки, так и производственные среды.

Buildkit Mount Cache Race: гонка состояний во время сборки, приводящая к побегу из контейнера [CVE-2024-23651]

CVE-2024-23651 — это уязвимость в Docker, когда команда RUN использует флаг --mount=cache. Существует уязвимость типа «проверка во времени / использование во времени» (TOCTOU) между проверкой существования каталога source на хосте демона Docker и фактическим вызовом системного вызова mount. Атакующий может создать Dockerfile, который разместит символическую ссылку между этими двумя вызовами, чтобы вызвать произвольное bind-монтирование, приводящее к полному root RCE на хосте. Эта уязвимость затрагивает только команду docker build.

Buildkit GRPC SecurityMode: проверка привилегий [CVE-2024-23653]

CVE-2024-23653 — это уязвимость в Docker, возникающая при использовании пользовательского генератора LLB Buildkit с директивой # syntax. Генератор может использовать GRPC-вызовы Client.NewContainer и Container.Start для выполнения нового контейнера во время сборки. Аргумент StartRequest.SecurityMode не проверяется должным образом на соответствие ожиданиям привилегий демона Docker или вызова docker build, что позволяет вызывающему GRPC создать привилегированный контейнер во время сборки. Из этого нового привилегированного контейнера затем можно совершить побег для получения полного root RCE на хосте сборки. Эта уязвимость затрагивает только команду docker build.

Buildkit Build-time Container Teardown: произвольное удаление [CVE-2024-23652]

CVE-2024-23652 — это уязвимость произвольного удаления в Docker. Когда в Dockerfile используется RUN --mount, если цель монтирования не существует, она будет создана для этого окружения. После завершения выполнения созданный каталог будет очищен. Если выполняемая команда изменяет путь, используемый для монтирования, на символическую ссылку, процедура очистки пройдёт по этой символической ссылке и потенциально очистит произвольные каталоги в корневой файловой системе хоста. Эта уязвимость затрагивает только команду docker build.

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

Обнаружение eBPF во время сборки

Обнаружение во время сборки применимо ко всем 4 уязвимостям.

  1. Скомпилируйте бинарный файл детектора: GOOS=linux GOARCH={{amd64/arm64}} go build.
  2. Запустите скомпилированный бинарный файл в фоновом режиме с помощью sudo (требуется для eBPF) в вашей среде сборки (например, sudo ebpf-detector &).
  3. Если обнаружена эксплуатация одной из уязвимостей, вы увидите сообщение Leaky vessels vulnerability detected, выведенное в STDOUT, вместе с соответствующим CVE, названием уязвимости и дополнительными данными криминалистического анализа.

Обнаружение eBPF во время выполнения в Kubernetes

Обнаружение во время выполнения применимо только к уязвимости WORKDIR (CVE-2024-21626).

  1. Соберите образ контейнера детектора с помощью предоставленного Dockerfile и отправьте его в реестр образов.
  2. Заполните значение image в файле detector.yaml (помечено как TODO).
  3. Запустите детектор как DaemonSet в вашем кластере Kubernetes, выполнив kubectl apply -f detector.yml.
  4. Если обнаружена эксплуатация уязвимости WORKDIR, вы увидите сообщение Leaky Vessels vulnerability detected в журналах подов DaemonSet.

Тестирование

Модульные тесты необходимо запускать с правами sudo, так как они зависят от eBPF: sudo go test ebpf-detector/....

Ограничения

  • Требуется root-доступ / запуск контейнеров в привилегированном режиме (требуется для eBPF).
  • Эксплуатация WORKDIR во время выполнения (CVE-2024-21626) происходит во время инициализации контейнера, поэтому она не будет обнаружена на уже запущенных контейнерах. Обнаружение также предполагает, что средой выполнения контейнеров является containerd.
  • Обнаружение Buildkit Mount Cache Race (CVE-2024-23651) и Buildkit Build-time Container Teardown Arbitrary Delete (CVE-2024-23652) основано на времени и может давать ложные отрицательные результаты из-за состояний гонки.
  • Протестировано в следующих средах:
    • Ubuntu 20.04/22.04 (AMD64)
    • GKE (Ubuntu и Alpine Linux, AMD64)
    • EKS (Ubuntu и Alpine Linux, AMD64) — поддерживается версией EKS >= 1.25
    • Ubuntu 22.04 (ARM64)

Проблемы

Актуальный список ошибок и проблем см. в разделе issues проекта.

Участие в разработке

Вклад приветствуется. Подробности см. в CONTRIBUTING.md.

Лицензия

Leaky Vessels Dynamic Detector распространяется под лицензией Apache-2.0. Дополнительную информацию см. в LICENSE.

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