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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Copyfail-sh — copyfail(CVE-2026-31431)のBash実装 | Kitploit
ツール/GitHubGitHub/nonameuserosint-hue/copyfail-sh
特権昇格脆弱性分析エクスプロイトシェルコードペネトレーションテストレッドチーミングバイナリエクスプロイト
GitHubnonameuserosint-hue/copyfail-sh

Copyfail-sh

copyfail(CVE-2026-31431)のBash実装

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

人気

すべて見る →

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

すべてのツールを探索

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

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

copyfail-sh

レースなし。オフセットなし。盲目的に信頼するプレビルドバイナリもなし。

CVE-2026-31431(Copy Fail)の bash 実装です。このスクリプトは、実行時にインラインで最小限の C ヘルパーをコンパイルします。bash 層はアーキテクチャ検出、ペイロード展開、ターゲット選択を担当し、C 層は bash 単体では到達できない実際のカーネル操作(AF_ALG ソケット、splice、sendmsg)を実行します。

完全な技術解説は copy.fail を参照してください。

仕組み(要約)

バグはカーネルの AF_ALG AEAD ソケットインターフェースである algif_aead にあります。2017 年に導入されたインプレース最適化により、ページキャッシュのページが authencesn 復号操作の書き込み可能な宛先 scatterlist に紛れ込む可能性があります。splice() 経由で適切な入力を与えると、所有していない setuid バイナリを含む、読み取り可能な任意のファイルのページキャッシュへの決定論的な 4 バイト書き込みが発生します。

/usr/bin/su にシェルコードを 4 バイトずつ上書きし、実行すると root シェルが得られます。レースウィンドウなし、カーネル固有シンボルなし、リトライなし。

使用方法

root@kitploit:~
chmod +x copyfail.sh

# 何かを行う前にシステムが脆弱かどうかを確認
./copyfail.sh -c

# エクスプロイトを実行(root 以外である必要があります)
./copyfail.sh

# 別の setuid ターゲットを指定
./copyfail.sh -t /usr/bin/passwd

# システム上のすべての setuid-root 候補を一覧表示
./copyfail.sh -s

シェル取得後の su の復元

このエクスプロイトはページキャッシュのみをメモリ上で上書きするため、ディスク上のファイルは無傷です。再起動すればすべて元に戻ります。すぐにクリーンアップしたい場合:

root@kitploit:~
# root シェル内で
/usr/bin/su --version   # ページキャッシュが追い出されていればディスクから正常に動作
# または単に再起動

-t で su 以外を指定した場合も同じです。ページキャッシュのみで、ディスクはクリーンです。

要件

  • Linux(カーネル 4.11 から 7.0、下記参照)
  • インライン C ヘルパーをコンパイルするための gcc
  • シェルコードペイロードを展開するための python3(ワンライナー、追加パッケージ不要)
  • カーネルモジュール: algif_aead、authencesn、hmac、cbc

アルゴリズムが利用できない場合:

root@kitploit:~
sudo modprobe algif_aead authencesn hmac cbc

一部のディストリビューションでは、一時的な回避策として /etc/modprobe.d/ にブロック設定が含まれています。存在する場合は削除してください:

root@kitploit:~
sudo rm /etc/modprobe.d/disable-algif{_,-}aead.conf 2>/dev/null

影響を受けるカーネル

root@kitploit:~
下限:    torvalds/linux 72548b093ee3   2017年8月、v4.14
                                        (AF_ALG iov_iter 再設計により、
                                         splice 経由のファイルページ書き込みプリミティブが
                                         AEAD scatterlist に導入された)

上限:    torvalds/linux a664bf3d603d   2026年4月、mainline
                                        (2017年のインプレース最適化を revert。
                                         ソースと宛先の scatterlist が分離され、
                                         ページキャッシュのページが書き込み可能な
                                         暗号出力にならないようになった)

これら 2 つのコミットの間: 修正をバックポートしなかった major ディストリビューションすべて。Ubuntu、RHEL、SUSE、Amazon Linux、Debian はすべて開示時に脆弱であることが確認されました。ディストリビューションのバックポートは 2026-04-29 頃から始まりました。特定のカーネルを確認するには、changelog で a664bf3d603d(またはそのディストリビューションのバックポート)を探してください。

サポートされているアーキテクチャ

ArchStatus
x86_64✓
aarch64✓
i386 / i686✓
armv7l✓

緩和策

恒久対策: カーネルを更新してください。

回避策(AF_ALG ソケットをブロックします。カーネル暗号 API を直接使用する IPsec/XFRM には影響しません):

root@kitploit:~
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null

コンテナ: AF_ALG ソケット作成をブロックする seccomp プロファイルを追加し、Pod のセキュリティコンテキストで allowPrivilegeEscalation: false を設定してください。これにより no_new_privs が有効になり、カーネルが execve() で setuid ビットを尊重しなくなります。

他の実装との比較

bash バージョンは依存関係の点で劣りますが、実行前に最初から最後まで読める単一のスクリプトです。C ヘルパーは heredoc から実行時に生成・コンパイルされるため、別途監査するバイナリブロブはありません。

参考リンク

  • copy.fail - 公式サイトおよび解説記事
  • Xint.io blog - 技術的な詳細解説
  • Kernel fix - a664bf3d603d
  • CVE-2026-31431 - NVD
  • oss-security disclosure
  • badsectorlabs/copyfail-go - Go 実装(シェルコードペイロードはここから取得)
  • xeloxa/copyfail-exploit - Python 実装

クレジット

  • Taeyang Lee & Theori / Xint Code - 脆弱性の発見とオリジナル PoC

免責事項

許可されたセキュリティテストおよび研究専用です。所有していないシステム、または明示的な書面によるテスト許可がないシステムでは実行しないでください。

ツールをダウンロード
PythonGoBash
依存関係python3なし(静的バイナリ)gcc + python3
プレビルドバイナリなしありなし
単一ファイルありなしあり
コンパイルステップなしなしあり(インライン、自動)