
このリポジトリには、CVE-2017-7184(XFRM(IPsec)netlinkサブシステムにおけるLinuxカーネル脆弱性)に対する概念実証(PoC)ローカル権限昇格エクスプロイトが含まれています。
このエクスプロイトは、特権のないユーザーが以下の手順で**真のroot(UID 0)**を取得する方法を示しています。
特権のないユーザー+ネットワーク名前空間を作成
名前空間内でCAP_NET_ADMINを取得
XFRM netlink処理におけるカーネルスタックオーバーフローを引き起こす
カーネルROPチェーンを実行して以下を呼び出す:
prepare_kernel_cred(NULL)commit_creds()完全なroot権限で安全にユーザーランドに戻る
sudoは不要です。
| フィールド | 値 |
|---|---|
| CVE | CVE-2017-7184 |
| コンポーネント | Linux Kernel – XFRM Netlink |
| バグの種類 | カーネルスタックオーバーフロー |
| 影響 | ローカル権限昇格 |
| 攻撃ベクトル | ローカル(特権のないユーザー) |
| エクスプロイト分類 | 名前空間の悪用 + ROP |
| 最初に影響を受ける | Linuxカーネル ≤ 4.8 |
| 修正版 | 2017年にリリースされたカーネルパッチ |
特権のないユーザー名前空間
unshare(CLONE_NEWUSER | CLONE_NEWNET) を使用CAP_NET_ADMIN を付与XFRM Netlinkの悪用
NETLINK_XFRM ソケットを作成XFRM_MSG_NEWSA メッセージを送信カーネルROPの実行
ユーザーランドに戻る
swapgs; iretq を使用unprivileged_userns_clone = 1gcc名前空間のサポート確認:
cat /proc/sys/kernel/unprivileged_userns_clone
期待される出力:
1
gcc exploit.c -o exploit -pthread
./exploit
sudoを使用しないでください。
成功した場合、真のrootシェルを取得します:
uid=0(root) gid=0(root) groups=0(root)
エクスプロイトは以下を試みます:
/proc/kallsyms からシンボルをリーク
制限されている場合、以下のためのハードコードされたオフセットにフォールバック:
commit_credsprepare_kernel_cred⚠️ ROPガジェットとオフセットはカーネルバージョン固有です。 他のビルドでは調整する必要があります。
これでもシステムが脆弱であることが確認されます。
sysctl -w kernel.unprivileged_userns_clone=0
このコードは教育およびセキュリティ研究目的のみで提供されます。
commit_creds エクスプロイト