
[!WARNING] このPoCは、防御担当者、メンテナー、および許可されたセキュリティチームが、自身が所有する、または明示的にテストを許可されたシステム上で、パッチ、緩和策、検知、および露出を検証するのを支援することのみを目的として提供されています。
この資料の使用が合法で、許可され、制御され、かつ隔離されたテスト環境で実施されることを保証する責任は、あなた自身にあります。
[!WARNING] このPoCは破壊的です。 約8 MiBのカーネルメモリを上書きし、破損したページテーブルを
diagspill_holdの犠牲メモリホルダーが再起動まで保持し続けます。そのプロセスを強制終了すると、カーネルが不安定になる可能性があります。無関係なメモリが破損し、マシンがパニックを起こす可能性があります。使い捨てのVM/捨てホストでのみ実行してください。
PoCの動作:
sudoを通じてrootシェルを開き、破損したマッピングを保持しているプロセスをデタッチするPoCは簡潔さを保つためx86-64を想定し、対象としています。理論的には、このバグはアーキテクチャ固有ではないはずです。
完全を期すため網羅的に列挙します:
6.17.0-35-genericを搭載したUbuntu 24.04、または6.19.10-300.fc44.x86_64を搭載したFedora 44(これらのチェックを削除してみることはできますが、他のディストリビューション/カーネルバージョンではターゲットごとのカスタマイズ/グルーミングが必要になる場合があります)MemTotalが3,700,000から4,200,000 KiBの間_、または-のみ/rootへの既存の読み取りアクセス、またはパスワードなしsudoが存在しないことsctp_diagカーネルサポート、トランスペアレントヒュージページ割り当て、2,048ワーカーと診断ソケットウォールに十分なプロセス/ファイル制限、およびUbuntuで約2,343 MiB、Fedoraで3,125 MiBのページテーブルを保持するのに十分なx86-64アドレス空間とメモリ/etc/sudoers.dインクルードと実行可能な/usr/bin/sudo/usr/bin/env、libcおよびLinux UAPI開発ヘッダー付きのcc、id、sudo、true、sh、rmPoCはvCPU数/ RAMに非常に敏感であるため、4 vCPUと4 GB RAMを強制します。他のvCPU/メモリの組み合わせでは、ターゲットごとのカスタマイズ/グルーミングが必要になる可能性が高いです。
passwdエントリを持つ非特権ユーザーとして実行してください。PoCは大きなSCTPアソシエーションを構築するのに少し時間がかかる場合があります。
python3 diagspill_root_repro.py
実行後(成功・失敗にかかわらず)、安全のためdiagspill_holdを解放するためにマシンを再起動してください。直接強制終了すると、ほぼ確実にカーネルが不安定になります。