Cuando str.lower() es una vulnerabilidad de seguridad en Python

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

Cuando str.lower() es una vulnerabilidad de seguridad en Python

Seth Larson descubre que la función str.lower() de Python puede ser explotada como vulnerabilidad de seguridad en el contexto de IDNA 2003. El problema surge porque str.lower() utiliza la versión de Unicode del intérprete, mientras que StringPrep (RFC 3454) requiere Unicode 3.2.0. Esto provoca inconsistencias en la codificación de nombres de dominio internacionalizados, como se demuestra con el ejemplo de 'ᎠᎠ'. La solución consistió en añadir excepciones para que str.lower() se comporte según Unicode 3.2.0 en casos específicos, corrigiendo la vulnerabilidad CVE-2026-17084.

La llamada a str.lower() en esta función es una vulnerabilidad, porque str utiliza los datos Unicode que vienen con el intérprete de Python, y eso puede diferir de la versión Unicode 3.2.0 requerida por StringPrep.

Más de este día

2026-08-25