Falla de seguridad en la función de análisis URL de Python

Se encontró una vulnerabilidad en urllib.parse de Python que permite a los atacantes evadir bloqueos al usar una URL con espacios en blanco al inicio. Identificada como CVE-2023-24329, esta vulnerabilidad tiene un puntaje CVSS de 7.5 y podría dar lugar a fallas de seguridad como lecturas de archivos no autorizadas, ejecución de comandos sin restricciones, así como potenciales ataques SSRF y CSRF.

urllib.parse es una función muy empleada para analizar URLs, ya sea descomponiéndolas en sus partes individuales o, en su lugar, combinando elementos en una dirección URL completa. «Las funciones urlsplit() y urlparse() no llevan a cabo una validación adecuada de las entradas».

La vulnerabilidad emerge debido a la carencia de validación de las entradas, lo cual da lugar a un escenario donde es viable evadir los mecanismos de bloqueo mediante la introducción de una URL que comienza con espacios en blanco, por ejemplo, «https://youtube[.]com».

«A pesar de ser considerada una alternativa menos preferible, aún existen numerosas situaciones en las que resulta imprescindible contar con la lista de bloqueo», afirmó uno de los programadores. «Esta vulnerabilidad permitiría a un atacante burlar las salvaguardias implementadas por el desarrollador en relación con el esquema y el anfitrión. Es razonable anticipar que esta debilidad propiciaría ataques de SSRF y RCE en una amplia variedad de contextos».

Versiones afectadas

  • >= 3.12
  • 3.11.x >= 3.11.4
  • 3.10.x >= 3.10.12
  • 3.9.x >= 3.9.17
  • 3.8.x >= 3.8.17
  • 3.7.x >= 3.7.17

Solución

  • Actualizar a versiones de Python a una versión no vulnerable.

Recomendación

  • Se recomienda a los usuarios deshabilitar los métodos de listas de bloqueo que se basan en urllib.parse.

Referencias

Para mayor información sobre la vulnerabilidad descrita, consultar los siguientes enlaces: