
Proof-of-concept exploit for CVE-2022-0185, a Linux kernel heap buffer overflow enabling local privilege escalation and container escape via FUSE and ROP chains.
CVE-2022-0185 の概念実証エクスプロイト。Linux カーネルの legacy_parse_param 関数 (fs/fs_context.c) におけるヒープベースのバッファオーバーフローです。これにより、ローカルの非特権ユーザーが root への権限昇格を実行できます。
オリジナルのエクスプロイト: Crusaders of Rust。詳細な解説: https://www.willsroot.io/2022/01/cve-2022-0185.html
このバグは、legacy_parse_param() 内の境界チェックにおける整数アンダーフローです。内部バッファ size が4095バイトに達すると、符号なし減算がラップアラウンドしてチェックを回避し、kmalloc-4k スラブで無制限のヒープオーバーフローを引き起こします。
影響を受けるカーネル: Linux 5.1 – 5.15 パッチ適用済み: Linux 5.16+
| ファイル | 説明 |
|---|---|
exploit_fuse.c | FUSE + SYSVIPC を使用した Ubuntu LPE エクスプロイト |
exploit_kctf.c | パイプ + ROP チェーンを使用した kCTF コンテナエスケープ |
fakefuse.c / .h | 競合状態を引き起こすためのカスタム FUSE ファイルシステム |
util.c / .h | 共有ユーティリティ |
libfuse/, libfuse3.a | 静的コンパイルされた libfuse (dl_open なし) |
Makefile | ビルドスクリプト |
make
# Enter a user namespace to get CAP_SYS_ADMIN
unshare -Urm
# Run the exploit — makes /bin/bash SUID
./exploit_fuse
# Get a root shell
bash -p
Ubuntu カーネル ≥ 5.7 で動作します。お使いのカーネルバージョンに合わせて、
exploit_fuse.c内のsingle_startとmodprobe_pathのオフセットを調整してください。
./exploit_kctf
信頼性は約50%で、Kubernetes 1.22 (カーネル 5.10) を対象としています。
教育および研究目的のみに使用してください。所有していない、または明示的なテスト許可を得ていないシステムに対して使用しないでください。