
改造されたDirty Pipe (CVE-2022-0847) のPoCで、SUIDバイナリを乗っ取ってルートシェルを生成します。(損傷したバイナリの復元も試みます)
Linuxカーネルのcopy_page_to_iter_pipeとpush_pipe関数において、新しいパイプバッファ構造体の"flags"メンバーが適切に初期化されず、古い値が残る可能性があるという欠陥が見つかりました。特権のないローカルユーザーは、この欠陥を利用して読み取り専用ファイルでバッキングされたページキャッシュ内のページに書き込むことができ、システム上で権限を昇格させる可能性があります。
「Dirty Pipe」として知られる新しいLinuxの脆弱性により、ローカルユーザーが公開されているエクスプロイトを通じてルート権限を取得できるようになります。
本日、セキュリティ研究者のMax Kellermann氏は責任を持って「Dirty Pipe」の脆弱性を開示し、Linux Kernel 5.8以降のバージョン(Androidデバイスも含む)に影響を与えると述べました。
この脆弱性はCVE-2022-0847として追跡されており、権限のないユーザーが読み取り専用ファイル(ルートとして実行されるSUIDプロセスを含む)にデータを注入して上書きすることを可能にします。
Kellerman氏は、顧客のWebサーバーアクセスログを破損していたバグを追跡している過程でこのバグを発見しました。
その後、Bl4styが別のバージョンを作成しました。/etc/passwdのようなファイルを上書きする代わりに、ユーザーが指定したSUIDバイナリ(例:/bin/su)を上書きし、特権ユーザー(すなわちルート)権限で実行されるシェルコードを注入します。
gcc dirtypipez.c -o exploit
./exploit /bin/su