Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Copy-Fail-CVE-2026-31431-Kubernetes-PoC — PoC: 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: CVE-2026-31431のページキャッシュ破損と共有イメージレイヤーにより、完全に非特権な状態からコンテナエスケープを達成し、ノードレベルのコード実行へ至ります。Alibaba Cloud ACK、Amazon EKS、Google GKEで検証済み。

リポジトリを見る
18428244ヶ月前Kitploit レビュー済み

Copy Fail(CVE-2026-31431)— Kubernetes コンテナエスケープ PoC

共有コンテナイメージレイヤーを介して CVE-2026-31431 Linux カーネルのページキャッシュ破損バグを悪用し、完全に非特権のコンテナが Kubernetes 上でノードレベルのコード実行を達成できることを示す概念実証です。

中核となる攻撃プリミティブは次のとおりです:攻撃者が制御するコンテナとイメージレイヤーを共有する特権 DaemonSet は、コンテナエスケープのために武器化され得る。この PoC は具体例として kube-proxy を使用していますが、この手法はクラスター上の任意の特権ワークロードに一般化できます。

Alibaba Cloud ACK、Amazon EKS、Google GKE で検証済み — 非特権 Pod が特権 kube-proxy DaemonSet を介してホストファイルシステムに [*] success を書き込みます:

Alibaba Cloud ACK(カーネル 6.6.88)Amazon EKS(カーネル 6.12.79)Google GKE(カーネル 6.12.68)
ACKEKSGKE

免責事項: このリポジトリは教育的および防御的目的のみで公開されています。所有しているシステム、または明示的なテスト許可を得たシステムでのみ使用してください。

Background

CVE-2026-31431("Copy Fail")は、ページキャッシュのコピーオンライト(CoW)パスにおける Linux カーネルの脆弱性です。AF_ALG の splice レースにより、非特権プロセスが読み取り専用ファイルのページキャッシュページを破損できます。この破損はカーネルのページキャッシュに残り、その後そのファイルを読み取るまたは実行するすべてのプロセス(他のコンテナやホスト上のプロセスを含む)から見えます。

元の脆弱性の詳細については、copy.fail を参照してください。

Attack Principle

この攻撃は、Kubernetes クラスターで一般的に共存する3つの特性を悪用します:

  1. カーネルページキャッシュの破損(CVE-2026-31431) — 非特権プロセスは、読み取り専用で開ける任意のファイルのメモリ内キャッシュページを上書きできます。
  2. イメージレイヤーの共有 — コンテナランタイム(containerd、CRI-O)は overlay ファイルシステムを使用しており、同一のイメージレイヤーはコンテナ間で同じページキャッシュページにマッピングされます。
  3. 特権 DaemonSet — 多くのクラスターは、昇格した権限(privileged: true、hostNetwork: true、広範なケーパビリティなど)を持つ DaemonSet を実行し、それらは定期的にイメージからバイナリを実行します。

これらの条件が揃うと、非特権 Pod は共有イメージレイヤー内のバイナリを破損させ、同じノード上の特権 DaemonSet がその破損したバイナリを昇格した権限で知らずに実行することになり、完全なノードレベルのコード実行が達成されます。

脆弱性の標的は kube-proxy に限定されません。 コンテナイメージが攻撃者制御のイメージとレイヤーを共有する任意の特権 DaemonSet(監視エージェント、CNI プラグイン、ログコレクター、セキュリティエージェントなど)が実行可能な標的です。

How It Works

攻撃チェーンには3つの段階があります:ページキャッシュの破損、コンテナ間伝播、特権実行。

1. Page-Cache Corruption via AF_ALG Splice Race

カーネルの AF_ALG(crypto)サブシステムは、ユーザー空間の暗号操作のためのソケットベースのインターフェースを提供します。このエクスプロイトは、ファイルから AF_ALG ソケットへの splice() の処理におけるカーネルのレースコンディションを悪用します:

  1. ターゲットバイナリを読み取り専用で開きます。
  2. authesncesn(hmac(sha256),cbc(aes)) にバインドされた AF_ALG AEAD ソケットを作成します。
  3. MSG_MORE を使用して AF_ALG ソケット経由で小さなペイロードチャンクを送信し、カーネルにさらなるデータが来ることを伝えます。
  4. ターゲットファイルの内容を fd → パイプ → AF_ALG ソケットへ splice() します。
  5. CoW バグにより、カーネルは攻撃者のペイロードバイトを適切に分離する代わりにターゲットファイルのページキャッシュページに書き込みます。

このエクスプロイトは、ターゲットバイナリのキャッシュページ全体がカスタムペイロードで上書きされるまで、4バイトウィンドウごとにこれを繰り返します。

ファイルへの書き込み権限は不要です。ディスク上のファイルは変更されず、メモリ内のページキャッシュのみが破損します。

2. Cross-Container Propagation via Image Layer Sharing

コンテナランタイムは overlay ファイルシステムを使用します。2つのコンテナが同じイメージレイヤーを共有する場合、カーネルは同じページキャッシュページからファイル読み取りを提供します。

攻撃者は、ターゲットの特権 DaemonSet と同じベースイメージを FROM として PoC イメージを構築します。両方のコンテナが同じ overlay lower-dir を共有するため、共有レイヤー内のバイナリは同一のページキャッシュページにマッピングされます。

非特権の PoC コンテナがバイナリのページキャッシュを破損すると、その破損は同じノード上の特権コンテナから即座に見えるようになります — コンテナ間通信は一切必要ありません。

3. Privileged Execution by the Target DaemonSet

特権 DaemonSet が次に(通常の動作サイクルを通じて)破損したバイナリを実行すると、カーネルは破損したページキャッシュページを読み込みます。攻撃者のペイロードは DaemonSet の完全な権限で実行されます — 以下を含む可能性があります:

  • ノード上の完全な root
  • すべてのケーパビリティ
  • ホスト名前空間(network、PID、mount)へのアクセス

この PoC のペイロード(payload/payload.c)は、ホストのルートファイルシステムをマウントし、ノードレベルのコード実行の証明として /root/res にマーカーファイルを書き込むだけです。

Attack Flow Diagram

┌──────────────────────────┐     ┌──────────────────────────┐
│   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

Validated Cloud Environments

この PoC は以下のマネージド Kubernetes プラットフォームで正常に検証されています:

Alibaba Cloud ACK

PropertyValue
プラットフォーム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)

ACK PoC の結果

Amazon EKS

PropertyValue
プラットフォームAmazon Elastic Kubernetes Service (EKS)
Kubernetesv1.35.4
ノードカーネル6.12.79-101.147.amzn2023.x86_64
kube-proxy***.dkr.ecr.***.amazonaws.com.cn/eks/kube-proxy:v1.35.3-eksbuild.2
ベースイメージpublic.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-iptables:2026-03-11-1773190710.2023
ルートデバイス/dev/nvme0n1p1 (xfs)

EKS PoC の結果

Google GKE

PropertyValue
プラットフォームGoogle Kubernetes Engine (GKE)
Kubernetesv1.35.3-gke.1234000
ノード OSContainer-Optimized OS (COS) 125, BUILD_ID 19216.220.72
ノードカーネル6.12.68+ x86_64
kube-proxyus-central1-artifactregistry.gcr.io/gke-release/gke-release/kube-proxy:v1.35.3-gke.1234000
ベースイメージkube-proxy と同じ(GKE プロバイダー管理の Artifact Registry イメージ)
ルートデバイス/dev/dm-0(ext2、読み取り専用); /dev/sda1(ext4、書き込み可能なステートフルパーティション)
マーカーパス/mnt/stateful_partition/copyfail-res

GKE PoC の結果

3つのケースすべてにおいて、非特権の PoC Pod が [*] success マーカーファイルをホストファイルシステムに正常に書き込み、特権 kube-proxy DaemonSet を通じたノードレベルのコード実行を証明しました。

完全なウォークスルー(イメージレイヤー分析、ビルド手順、デプロイ)については:

  • EKS: docs/eks-poc.md
  • GKE: docs/gke-poc.md

kube-proxy as a Concrete Example

この PoC は、Kubernetes クラスターで最も一般的な特権 DaemonSet の1つであるため、kube-proxy をターゲットとして使用します。3つのバリアントが用意されています:

  • デフォルト(ACK / アップストリーム): registry.k8s.io/kube-proxy:v1.35.2 を FROM としてビルド(Dockerfile を参照)
  • EKS: public.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base-iptables:2026-03-11-1773190710.2023 を FROM としてビルド(Dockerfile.eks を参照)
  • GKE: us-central1-artifactregistry.gcr.io/gke-release/gke-release/kube-proxy:v1.35.3-gke.1234000 を FROM としてビルド(Dockerfile.gke を参照)

すべてのバリアントは、/usr/sbin/ipset、/usr/sbin/nft、/usr/sbin/xtables-legacy-multi、/usr/sbin/xtables-nft-multi などのバイナリを破損させます。

重要な注意事項:

ツールをダウンロード