30秒で判断
- 対応すべき人:Python 3.x(3.9.1以前)を本番環境で利用しており、浮動小数点数を含む未検証の外部入力を
ctypes経由で処理するアプリケーションの運用者 - 対応不要な人:Pythonを利用していない、または既に3.9.2 / 3.8.8 / 3.7.10 / 3.6.13以降を利用している方
- 確認コマンド:
python3 --versionでバージョンを確認する
概要
Python 3.x(3.9.1以前)において、_ctypes/callproc.c の PyCArg_repr が内部的に sprintf を安全でない形で使用していることに起因するバッファオーバーフローの脆弱性です。浮動小数点数を未検証のまま受け取るPythonアプリケーションでは、c_double.from_param に極端な値(例: 1e300)を渡すことでバッファオーバーフローが発生し、リモートコード実行に至る可能性があります。
攻撃条件
| 項目 | 内容 |
|---|---|
| 攻撃元区分 | アプリケーションの入力経路に依存(未検証の浮動小数点入力をctypesで処理する箇所) |
| 必要な権限 | 不要(対象アプリケーションの入力受付箇所に到達できれば可能) |
| ユーザー操作 | 不要 |
| CVSSスコア | 9.8(Critical) |
影響を受けるソフトウェア
| 製品 | ベンダー | バージョン |
|---|---|---|
| Python | Python Software Foundation | 3.x 〜 3.9.1 |
修正バージョンと回避策
- 修正バージョン: 3.9.2 / 3.8.8 / 3.7.10 / 3.6.13 以降
- 回避策: アップデートが困難な場合は、未検証の浮動小数点数を
ctypesのc_double.from_param等に直接渡さないよう入力値の検証・制限を行う
関連リンク
データソース: NVD (NIST) AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
