Django corrige vulnerabilidad de inyección de SQL en nuevas versiones

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:

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