このリポジトリには、Copy Fail として広く知られ、CVE-2026-31431 として追跡されている Linux カーネルの脆弱性に関する、整理された技術図と補足ノートが含まれています。
この資料の目的は以下のとおりです:
AF_ALG、algif_aead、splice()、ファイルバッキングページ、およびページキャッシュ破損の間の関係を文書化すること;このリポジトリは悪用ガイドではありません。
実用的には、このリポジトリは、公開されている最小化された copy.fail 概念実証を、より検査しやすい非最小化形式で拡張・文書化したものであり、C++ バイナリ指向のバリアントも含まれています。含まれる資料は64ビットシステム専用です。
高レベルでは、この問題は algif_aead パスにおける誤ったインプレース処理に関連しています。
重要な概念的連鎖は以下のとおりです:
AF_ALG を通じてカーネル暗号 API と対話する;algif_aead に送信される;splice() を含むゼロコピーパスを通じて、ファイルバッキングページが処理チェーンに入る可能性がある;中核となる分析ポイントは、以下の間の乖離です:

copyfail.cpp — C++ 研究用ソース成果物copyfail.py — Python 研究用ソース成果物copyfail — コンパイル済み C++ バイナリ成果物このリポジトリには、C++ ソースファイルからビルドされたコンパイル済み C++ バイナリ成果物も含まれています。ビルドコマンドの例:
g++ -Os -s copyfail.cpp -lz -o copyfail
このリポジトリは、防御研究、文書化、および教育目的の分析のみを目的として提供されています。
実際のシステムを標的にしたり、特権実行ファイルを改変したり、不正アクセスを取得したりするために使用しないでください。