Notas de lanzamiento de Django 2.1.11

August 1, 2019

Django 2.1.11 resuelve problemas de seguridad en la versión 2.1.10.

CVE-2019-14232: Posibilidad de denegación de servicio en django.utils.text.Truncator

Si los métodos chars() y words() de django.utils.text.Truncator se pasaban el argumento html=True, eran extremadamente lentos para evaluar ciertos inputs debido a una vulnerabilidad de backtracking catastrófico en una expresión regular. Los métodos chars() y words() se utilizan para implementar los filtros de plantilla truncatechars_html y truncatewords_html, que estaban así mismo vulnerables.

Las expresiones regulares utilizadas por Truncator han sido simplificadas con el fin de evitar problemas potenciales de backtracking. Como consecuencia, la puntuación final puede incluirse en ocasiones en el resultado truncado.

CVE-2019-14233: Posibilidad de denegación de servicio en strip_tags()

Debido al comportamiento del parser HTMLParser subyacente, django.utils.html.strip_tags() sería extremadamente lento para evaluar ciertos inputs que contengan secuencias grandes de entidades HTML incompletas anidadas. El método strip_tags() se utiliza para implementar el filtro de plantilla correspondiente striptags, que estaba así mismo vulnerable.

strip_tags() ahora evita las llamadas recursivas a HTMLParser cuando se está eliminando progresivamente etiquetas, pero necesariamente entidades HTML incompletas.

Recuerda que NO se proporciona absolutamente ninguna garantía sobre la seguridad de los resultados de strip_tags(). Por lo tanto, NUNCA marques seguro el resultado de una llamada a strip_tags() sin escaparla primero, por ejemplo con django.utils.html.escape().

CVE-2019-14234: Posibilidad de inyección SQL en consultas de búsqueda de clave e índice para JSONField/HStoreField

Búsqueda de clave e índice para django.contrib.postgres.fields.JSONField y búsquedas de clave para HStoreField estaban sujetos a inyección SQL, utilizando un diccionario adecuadamente elaborado, con expansión de diccionario, como los **kwargs pasados a QuerySet.filter().

CVE-2019-14235: Agotamiento potencial de memoria en django.utils.encoding.uri_to_iri()

Si se le pasaban ciertos inputs, django.utils.encoding.uri_to_iri() podría dar lugar a un uso significativo de la memoria debido a una recursividad excesiva cuando re-encodeaba secuencias de octetos UTF-8 inválidas.

uri_to_iri() ahora evita la recursividad al re-encodear secuencias de octetos UTF-8 inválidas.