Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-47103-python-statemachine-rce — Python StateMachine 3.0.0 < 3.2.0 における、安全でない SCXML <data expr> 評価と Python eval() インジェクションによる RCE | Kitploit
ツール/GitHubGitHub/saiteja-erukude/cve-2026-47103-python-statemachine-rce
ペイロード生成脆弱性分析エクスプロイトペネトレーションテスト
GitHubsaiteja-erukude/cve-2026-47103-python-statemachine-rce

CVE-2026-47103-python-statemachine-rce

Python StateMachine 3.0.0 < 3.2.0 における、安全でない SCXML <data expr> 評価と Python eval() インジェクションによる RCE

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
289日前未レビュー

CVE-2026-47103: SCXML eval() インジェクションによる Python StateMachine のリモートコード実行

深刻度: Critical、CVSS 4.0 9.3、CVSS 3.1 9.8(CNA である VulnCheck により割り当て)

ベクター (v4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

ベクター (v3.1): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

影響を受けるバージョン: Python StateMachine >= 3.0.0, < 3.2.0

修正バージョン: 3.2.0

CWE: CWE-95(動的に評価されるコードにおけるディレクティブの不適切な中和、Eval インジェクション)。また CWE-94(コード生成の不適切な制御、コードインジェクション)にも該当

発見・報告者: Sai Teja Erukude

公開日: 2026年6月17日


概要

Python StateMachine の 3.0.0 から 3.2.0 より前のバージョンには、SCXML 処理パスにおけるリモートコード実行の脆弱性が存在します。

SCXMLProcessor は SCXML ドキュメントを受け入れ、<data expr="..."> のような式属性を保持します。脆弱なバージョンでは、これらの式文字列が SCXML データモデル処理パスを通過し、最終的にサンドボックス化されていない Python 組み込みの eval() に到達します。

SCXML ドキュメントを提供または影響を与えることができる攻撃者は、<data expr="..."> 属性内に Python コードを埋め込むことができます。利用側のアプリケーションが SCXML ファイルを解析してプロセッサを起動すると、その式はホストとなる Python プロセスのコンテキストで評価されます。

影響

脆弱なアプリケーションが攻撃者の制御する SCXML コンテンツを処理する場合、攻撃者は任意の Python コードを実行できる可能性があります。

露出の範囲は、利用側のアプリケーションが SCXML ドキュメントをどのように受け取るかに応じて、リモートまたはローカルとなり得ます。リスクの高い入力経路には以下が含まれます:

  • アップロードされた SCXML ファイル。
  • ユーザーが制御するワークフローまたはステートマシンの定義。
  • 信頼できない場所から読み込まれた設定ファイル。
  • プラグイン、拡張機能、または統合機能が提供する SCXML コンテンツ。
  • ユーザー入力から SCXML を受け入れる、または生成するネットワーク向け機能全般。

悪用に成功すると、以下が可能になります:

  • ホストプロセスがアクセス可能なファイルの読み取りまたは変更。
  • 環境変数やアプリケーションのシークレットへのアクセス。
  • ホストから到達可能な内部サービスへの呼び出し。
  • アプリケーションの動作の妨害または置き換え。

影響を受けるパス

VulnCheck に報告された脆弱な呼び出しチェーンは以下のとおりです:

SCXMLProcessor.parse_scxml_file()
SCXMLProcessor.process_definition()
create_datamodel_action_callable()
_create_dataitem_callable()
_eval()
eval()

この問題は、プロセッサの起動中に解析された SCXML データモデル項目が評価されるときに発生します。

技術的詳細

脆弱な制御フローには 2 つの信頼境界の失敗があります:

  1. SCXML プロセッサが SCXML ドキュメントから式テキストを受け入れます。
  2. 式テキストが生の Python の eval() で評価されます。

PoC は <data expr="..."> 属性を使用します。これは、このパスが SCXMLProcessor.start() の実行中に実行されるためです。eval() に空の globals 辞書を渡しても Python の組み込み関数は無効化されません。Python は依然として使用可能な組み込み関数を評価コンテキストに注入できます。その結果、式は __import__ にアクセスして Python コードを実行できます。

無害なプルーフペイロードはローカルのマーカーファイルを書き込みます:

<data id="x" expr="__import__('pathlib').Path(...).write_text(...)"/>

マーカーは、SCXML ドキュメントが解析され、start() がデータモデル式を評価した後にのみ作成されます。

概念実証

package_builder.py は、攻撃者が制御するローカルの SCXML ファイルを malicious-charts/data_expr_start.scxml に生成します。生成されたファイルには、この PoC ディレクトリに marker.txt を書き込む無害な <data expr> ペイロードが含まれています。

run_poc.py はフックを一切インストールせず、対象パッケージも変更しません。公開されている python-statemachine==3.1.2 パッケージをインポートし、生成された SCXML ファイルを SCXMLProcessor.parse_scxml_file(...) で解析し、プロセッサを起動して、マーカーの前後の証拠を出力します。

ローカルのテスト環境でのみ実行してください:

python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python run_poc.py

脆弱なバージョンで想定されるエビデンス:

statemachine_version: 3.1.2
installed_package: True
data_marker_before_start: False
data_marker_after_start: True
marker_contents:
python_statemachine_scxml_data_expr_eval_triggered
success: True

重要な動作は、marker.txt が start() の前に存在せず、その後存在することであり、これにより SCXML 式がホストしている Python プロセス内で実行されたことが証明されます。

ペイロードは意図的に無害です。ローカルのマーカー文字列を書き込むだけです:

python_statemachine_scxml_data_expr_eval_triggered

シェルを起動したり、ネットワークサービスに接続したり、シークレットを読み取ったり、データを削除したり、PoCディレクトリ外のファイルを変更したりすることはありません。

修復

Python StateMachine 3.2.0 以降にアップグレードしてください。

恒久的な修正では、攻撃者が制御するSCXML式テキストを生のPython eval() で評価することを避けるべきです。より安全なアプローチには以下が含まれます:

  • 生の eval() を制約付きの式評価器に置き換える。
  • 完全なPython式評価を明示的な信頼済み入力モードとして扱う。
  • 信頼できないソースからのSCXMLに対して、Python評価をデフォルトで無効にする。
  • 処理前に危険なSCXML式属性を拒否またはサニタイズする。

即時のアップグレードが不可能な場合:

  • 信頼できないユーザーからのSCXMLドキュメントを処理しない。
  • SCXMLのアップロード機能やワークフロー定義機能を未認証のクライアントに公開しない。
  • SCXMLファイルが SCXMLProcessor に到達する前に検証する。
  • SCXML処理を最小限の権限を持つ制限された隔離環境で実行する。

開示タイムライン

日付イベント
2026年5月22日脆弱性をVulnCheckに提出
2026年5月26日VulnCheckが開示を開始;CVE-2026-47103 を暫定割り当て
2026年6月17日CVE-2026-47103 を公開

クレジット

Sai Teja Erukude によって発見・報告されました。

開示はVulnCheckを通じて調整されました。

参考情報

  • CVEレコード: https://www.cve.org/CVERecord?id=CVE-2026-47103
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-47103
  • VulnCheckアドバイザリ: https://www.vulncheck.com/advisories/python-statemachine-rce-via-scxml-eval-injection
  • GitHubアドバイザリ: https://github.com/fgmacedo/python-statemachine/security/advisories/GHSA-v4jc-pm6r-3vj8
  • Python StateMachine 3.2.0リリースノート: https://github.com/fgmacedo/python-statemachine/releases/tag/v3.2.0
  • Python StateMachineプロジェクト: https://github.com/fgmacedo/python-statemachine
ツールをダウンロード