
このスクリプトは、Linux の needrestart ユーティリティにおける脆弱性 CVE-2024-48990 を、ライブラリパスのハイジャック(PYTHONPATH hijacking)によって悪用します。元のベクターとは異なり、この方法は純粋に Python のみを使用するため、標的マシンに gcc などのコンパイラがインストールされている必要はありません。
/tmp/malicious/importlib ディレクトリを作成します。これは Python 標準ライブラリの構造を模倣します。importlib/__init__.py):
昇格した権限で実行されるコードが含まれています。読み込まれると、現在のユーザーが root(UID 0)であるかどうかを確認します。該当する場合、/bin/bash バイナリを /tmp/poc にコピーし、SUID ビット(chmod 4755)を設定します。これにより、任意のユーザーが権限を昇格できるバックドアが作成されます。e.py):
無限ループで実行され続ける無害なスクリプトです。2つの機能を果たします:needrestart が傍受できるように、Python インタープリターをシステム上で実行し続けます。/tmp ディレクトリを常に監視します。/tmp/poc ファイルが作成されたことを検出すると、-p フラグ付きで自動的に実行し(root 権限を失わないため)、対話型シェルを提供します。PYTHONPATH="$PWD" python3 e.py で囮を実行すると、Python の動作を変更します。あらゆるインポートが、システムの正規のパスよりも先に /tmp/malicious を検索するように強制します。needrestart):
needrestart が管理者権限で実行されると(手動またはシステムのスケジュールタスクによる)、アクティブなプロセスをスキャンします。e.py に到達すると、その環境変数を抽出し、分析のために独自の Python プロセスを起動します。悪意のある PYTHONPATH を継承するため、root プロセスの needrestart は偽の importlib ライブラリをインポートしてペイロードを実行し、マシンに対する完全な制御を獲得します。