30秒で判断
- 対応すべき人: PyAthena 3.35.4 未満を利用し、外部由来の値を DELETE / CTAS などの文に渡している方。
- 対応不要な人: PyAthena を使用していない方、3.35.4 以降を利用している方。
- 確認コマンド:
pip show pyathenaでバージョンを確認。
概要
PyAthena 3.35.4 未満には、SQLインジェクションの脆弱性があります(CWE-89)。パラメータフォーマッタの DefaultParameterFormatter.format() におけるクォートのエスケープ処理が不適切で、DELETE 文と CTAS(CREATE TABLE AS SELECT)文が、シングルクォートをバックスラッシュでエスケープする(二重化ではない)内部関数に渡されます。
Amazon Athena や Trino は文字列リテラル内でバックスラッシュをエスケープ文字として扱わないため、シングルクォートに続けてSQL構文を与えると、文字列リテラルが途中で終了してしまいます。これにより、UNION SELECT を用いたデータ窃取、破壊的な文の実行、攻撃者が制御するCTASの出力先・内容の指定などにつながる可能性があります。
CVSSベクトル
| 項目 | 値 |
|---|---|
| CVSSスコア | 9.8(Critical) |
| 攻撃元区分 (AV) | ネットワーク |
| 攻撃条件の複雑さ (AC) | 低 |
| 必要な権限 (PR) | 不要 |
| CWE | CWE-89(SQLインジェクション) |
影響を受けるソフトウェア
| 製品 | ベンダー | バージョン |
|---|---|---|
| PyAthena | PyAthena (OSS) | < 3.35.4 |
修正バージョンと回避策
PyAthena 3.35.4 以降へアップデートしてください。アップデートまでの間は、DELETE / CTAS 文に外部由来の値を直接渡さないようにし、入力値の検証・パラメータ化を徹底することを推奨します。
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
