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

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

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

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

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

Категории

Все категории
Loading categories
Copy-Fail-CVE-2026-31431-Kubernetes-PoC — PoC: полностью непривилегированный побег из контейнера до выполнения кода на уровне узла в Kubernetes через повреждение page-cache CVE-2026-31431 + общие слои образов. Проверено на Alibaba Cloud ACK, Amazon EKS и Google GKE. | Kitploit
Инструменты/GitHubGitHub/percivalll/copy-fail-cve-2026-31431-kubernetes-poc
Повышение привилегийАнализ уязвимостейЭксплуатацияБезопасность облачных средСтатьи и ИсследованияОбучение и ОбразованиеПобег из Контейнера
GitHubpercivalll/copy-fail-cve-2026-31431-kubernetes-poc

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Copy-Fail-CVE-2026-31431-Kubernetes-PoC

PoC: полностью непривилегированный побег из контейнера до выполнения кода на уровне узла в Kubernetes через повреждение page-cache CVE-2026-31431 + общие слои образов. Проверено на Alibaba Cloud ACK, Amazon EKS и Google GKE.

Репозиторий
18428254 месяцев назадПроверено Kitploit

Copy Fail (CVE-2026-31431) — PoC побега из контейнера Kubernetes

Proof-of-concept, демонстрирующий, как полностью непривилегированный контейнер может добиться выполнения кода на уровне узла в Kubernetes, эксплуатируя ошибку повреждения page-cache ядра Linux CVE-2026-31431 через общие слои образов контейнеров.

Основной примитив атаки: любой привилегированный DaemonSet, разделяющий слои образа с контейнером, контролируемым атакующим, может быть использован для побега из контейнера. В этом PoC в качестве конкретного примера используется kube-proxy, но метод применим к любой привилегированной рабочей нагрузке в кластере.

Проверено на Alibaba Cloud ACK, Amazon EKS и Google GKE — непривилегированный pod записывает [*] success в файловую систему узла через привилегированный DaemonSet kube-proxy:

Alibaba Cloud ACK (kernel 6.6.88)Amazon EKS (kernel 6.12.79)Google GKE (kernel 6.12.68)
ACKEKSGKE

Отказ от ответственности: Этот репозиторий опубликован только в образовательных и защитных целях. Используйте его исключительно в системах, которыми вы владеете или на тестирование которых имеете явное разрешение.

Предыстория

CVE-2026-31431 («Copy Fail») — уязвимость ядра Linux в пути Copy-on-Write (CoW) page-cache. Гонка splice через AF_ALG позволяет непривилегированному процессу повредить страницы page-cache файла, открытого только для чтения. Повреждение сохраняется в page-cache ядра и видно каждому процессу, который впоследствии читает или исполняет этот файл, — включая процессы в других контейнерах или на узле.

Полные сведения об исходной уязвимости см. на copy.fail.

Принцип атаки

Атака использует три свойства, которые часто сосуществуют в кластерах Kubernetes:

  1. Повреждение page-cache ядра (CVE-2026-31431) — непривилегированный процесс может перезаписать кэшированные в памяти страницы любого файла, который он может открыть только на чтение.
  2. Совместное использование слоёв образов — контейнерные рантаймы (containerd, CRI-O) используют overlay-файловые системы, где одинаковые слои образов сопоставляются с одними и теми же страницами page-cache в разных контейнерах.
  3. Привилегированные DaemonSet — во многих кластерах работают DaemonSet с повышенными привилегиями (privileged: true, hostNetwork: true, широкими capabilities и т.д.), которые периодически выполняют бинарные файлы из своего образа.

Когда эти условия совпадают, непривилегированный pod может повредить бинарный файл в общем слое образа, а привилегированный DaemonSet на том же узле неосознанно выполнит повреждённый бинарный файл со своими повышенными привилегиями — достигая полного выполнения кода на уровне узла.

Цель уязвимости НЕ ограничивается kube-proxy. Любой привилегированный DaemonSet (агенты мониторинга, CNI-плагины, сборщики логов, агенты безопасности и т.д.), чей образ контейнера разделяет слои с образом, контролируемым атакующим, является подходящей целью.

Как это работает

Цепочка атаки состоит из трёх этапов: повреждение page-cache, распространение между контейнерами и привилегированное выполнение.

1. Повреждение page-cache через гонку splice в AF_ALG

Подсистема ядра AF_ALG (crypto) предоставляет интерфейс на основе сокетов для криптографических операций из пользовательского пространства. Эксплойт злоупотребляет состоянием гонки в том, как ядро обрабатывает splice() из файла в сокет AF_ALG:

  1. Откройте целевой бинарный файл только на чтение.
  2. Создайте AEAD-сокет AF_ALG, привязанный к authesncs(hmac(sha256),cbc(aes)).
  3. Отправьте небольшой фрагмент полезной нагрузки через сокет AF_ALG с флагом MSG_MORE, сообщая ядру, что ожидаются ещё данные.
  4. С помощью splice() передайте содержимое целевого файла из fd → pipe → сокет AF_ALG.
  5. Из-за ошибки CoW ядро записывает байты полезной нагрузки атакующего в страницы page-cache целевого файла вместо их корректной изоляции.

Эксплойт повторяет это для каждого 4-байтового окна, пока все кэшированные страницы целевого бинарного файла не будут перезаписаны специальной полезной нагрузкой.

Права на запись в файл не требуются. Файл на диске остаётся неизменным — повреждён только page-cache в памяти.

2. Распространение между контейнерами через совместное использование слоёв образов

Контейнерные рантаймы используют overlay-файловые системы. Когда два контейнера используют один и тот же слой образа, ядро обслуживает чтение файлов из одних и тех же страниц page-cache.

Атакующий собирает образ PoC FROM того же базового образа, что и целевой привилегированный DaemonSet. Поскольку оба контейнера используют один и тот же lower-dir в overlay, бинарные файлы в общем слое сопоставляются с идентичными страницами page-cache.

Когда непривилегированный PoC-контейнер повреждает page-cache бинарного файла, повреждение немедленно становится видимым привилегированному контейнеру на том же узле — без какой-либо связи между контейнерами.

3. Привилегированное выполнение целевым DaemonSet

Когда привилегированный DaemonSet в следующий раз выполнит любой повреждённый бинарный файл (в рамках своего обычного цикла работы), ядро загрузит повреждённые страницы page-cache. Полезная нагрузка атакующего выполняется с полными привилегиями DaemonSet, потенциально включая:

  • Полный root на узле
  • Все capabilities
  • Доступ к namespace узла (network, PID, mount)

Полезная нагрузка в этом PoC (payload/payload.c) просто монтирует корневую файловую систему узла и записывает файл-маркер в /root/res как доказательство выполнения кода на уровне узла.

Схема потока атаки

┌──────────────────────────┐     ┌──────────────────────────┐
│   PoC Container          │     │   Privileged DaemonSet   │
│   (unprivileged)         │     │   (e.g. kube-proxy,      │
│                          │     │    monitoring agent, etc.)│
│  1. Open target binary   │     │                          │
│     (read-only)          │     │                          │
│                          │     │                          │
│  2. AF_ALG splice race   │     │                          │
│     corrupts page cache  │     │                          │
│          │               │     │                          │
└──────────┼───────────────┘     └──────────────────────────┘
           │                                  │
           ▼                                  │
  ┌─────────────────────┐                     │
  │  Kernel Page Cache   │                     │
  │                      │◄────────────────────┘
  │  Shared-layer binary │     3. DaemonSet executes the
  │  (CORRUPTED)         │        corrupted binary
  │  contains attacker's │        → loads corrupted pages
  │  payload bytes       │        → payload runs with
  └─────────────────────┘           DaemonSet's privileges

Проверенные облачные среды

PoC успешно проверен на следующих управляемых платформах Kubernetes:

Alibaba Cloud ACK

СвойствоЗначение
ПлатформаAlibaba Cloud Container Service for Kubernetes (ACK)
Kubernetesv1.35.2
Ядро узла6.6.88-4.2.alnx4.x86_64
kube-proxyregistry-cn-*.ack.aliyuncs.com/acs/kube-proxy:v1.35.2-aliyun.1
Базовый образregistry.k8s.io/kube-proxy:v1.35.2 (апстрим)
Корневое устройство/dev/vda3 (ext4)

Результат PoC на ACK

Amazon EKS

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