概要
EPyT-Flow は 水道 配水 ネットワーク の 水理・水質 シナリオ データ を 生成 する Python パッケージ です。WaterFutures プロジェクト の 一部 として 開発 されて おり、EPANET シミュレーション エンジン と 連携 して 水道 ネットワーク の 解析 に 利用 されます。0.16.1 より 前 の バージョン の REST API は、カスタム デシリアライザ(my_load_from_json)で JSON リクエスト ボディ を パース する 際 に type フィールド を サポート して います。
type が 指定 されて いる と、攻撃者 が 指定 した モジュール と クラス を 動的 に インポート し、攻撃者 が 提供 した 引数 で インスタンス化 します。これ に より subprocess.Popen 等 の 危険 な クラス を 呼び出す こと が でき、JSON パース 中 に OS コマンド 実行 が 可能 です。JSON ファイル の 読み込み に も 同様 の 影響 が あります。
CVSS 10.0 は 最高 スコア で あり、ネットワーク 経由 で 認証 不要、ユーザー 操作 不要 で 攻撃 可能 な ため です。
技術的 背景
この 脆弱性 は CWE-502(信頼 できない データ の デシリアライゼーション)に 分類 されます。Python の 動的 インポート 機能(importlib 等)を ユーザー 入力 に 基づいて 使用 する パターン は、任意 コード 実行 に 直結 する ため 非常 に 危険 です。
特に REST API の エンドポイント で この パターン が 使われて いる 場合、外部 ネットワーク から の 攻撃 が 容易 に なります。JSON の パース 段階 で 攻撃 が 成立 する ため、アプリケーション ロジック の 認証・認可 チェック より 前 に 実行 される 点 も 問題 です。
同様 の デシリアライゼーション 脆弱性 は Python の pickle、Java の ObjectInputStream、.NET の BinaryFormatter 等 で も 頻繁 に 報告 されて おり、信頼 できない データ の デシリアライゼーション は OWASP Top 10 の A08:2021 にも 含まれる 代表的 な 脆弱性 カテゴリ です。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 10.0 |
| 深刻度 | Critical |
| 攻撃元区分 | ネットワーク |
| 攻撃条件の複雑さ | 低 |
| 必要な特権レベル | なし |
| ユーザ関与 | なし |
| CWE | CWE-502 (信頼できないデータのデシリアライゼーション) |
影響を受けるソフトウェア
| 製品 | ベンダー | 影響バージョン |
|---|---|---|
| EPyT-Flow | WaterFutures | < 0.16.1 |
修正バージョンと回避策
- 修正バージョン: 0.16.1(2026年2月 リリース)
- 回避策: REST API を 外部 に 公開 して いる 場合 は 即座 に アップデート して ください。アップデート が 困難 な 場合 は ネットワーク アクセス を 制限 して ください
- 追加対策: ファイアウォール で API エンドポイント へ の アクセス を 信頼 できる IP アドレス に 制限 する こと を 推奨 します
関連リンク
データソース: NVD (NIST) AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
