Pythonのstr.lower()がセキュリティ脆弱性になる理由

When str.lower() is a security vulnerability in Python – Seth Larson

Pythonのstr.lower()がセキュリティ脆弱性になる理由

Pythonの標準ライブラリに含まれるIDNA 2003エンコーディング(`.encode('idna')`)には、Unicodeのバージョン差異によって仕様と実装が乖離する脆弱性が存在しました。StringPrepのケースフォールディングはUnicode 3.2.0に基づくべきですが、`str.lower()`は実行環境のUnicodeバージョン(例: 17.0.0)を使用するため、特定の文字で異なる結果を生じます。この問題はCVE-2026-17084として報告され、Pythonの`stringprep`モジュールに例外テーブルを追加することで修正されました。

この関数内の`str.lower()`呼び出しは脆弱性です!なぜなら、`str`はPythonインタープリタが搭載するUnicodeデータを使用するからです。

この日のほかの記事

2026-08-25