El proyecto Django, un framework web de código abierto basado en Python, ha reparado una vulnerabilidad de alta gravedad en sus últimas versiones. Rastreada como CVE-2022-34265, la vulnerabilidad potencial de inyección de SQL existe en la Branch principal de Django y en las versiones 4.1 (actualmente en versión beta), 4.0 y 3.2. Los nuevos lanzamientos y parches emitidos hoy eliminan la vulnerabilidad.
Impacto de la vulnerabilidad
Identificado como CVE-2022-34265, la vulnerabilidad puede permitir que un actor de amenazas ataque las aplicaciones web de Django a través de argumentos proporcionados a las funciones Trunc (tipo) y Extract (lookup_name). Las funciones de base de datos Trunc() y Extract() estaban sujetas a la inyección de SQL si se usaban datos que no eran de confianza como un valor de tipo/nombre de búsqueda.
Las aplicaciones que restringen el nombre de búsqueda y la elección de tipo a una lista segura conocida no se ven afectadas. En otras palabras, su aplicación no es vulnerable si está realizando algún tipo de desinfección de entrada o escapando antes de pasar estos argumentos a las funciones Trunc y Extract.
Parches disponibles
Para aquellos que no pueden actualizar a las versiones corregidas de Django 4.0.6 o 3.2.14, el equipo ha puesto a disposición parches que se pueden aplicar a las versiones afectadas existentes.
Se han aplicado parches para resolver el problema en la branch principal de Django y en las branch de las versiones 4.1, 4.0 y 3.2. Los parches se pueden obtener de los siguientes conjuntos de cambios:
- En el Branch principal.
- En la Branch de versión 4.1
- En la Branch de versión 4.0
- En la Branch de versión 3.2
Esta versión de seguridad mitiga el problema, pero hemos identificado mejoras en los métodos de la API de la base de datos relacionados con la extracción y el truncado de fechas que sería beneficioso agregar a Django 4.1 antes de su versión final. Es importante tener en cuenta que esto afectará a los backends de bases de datos de terceros que utilizan Django 4.1 versión candidata 1 o posterior, hasta que puedan actualizarse a los cambios de la API.
Recomendaciones
- Actualizar a las versiones corregidas de Django
- Aplicar los parches para las versiones afectadas existentes (en caso de que no pueda actualizar).
Para mayor información