Pythonのstr.lower()がセキュリティ脆弱性になる理由
When str.lower() is a security vulnerability in Python – Seth Larson

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データを使用するからです。