Aviso de seguridad
Nivel de peligrosidad: Alto
Descripción
- La vulnerabilidad está en django.core.serializers.xml_serializer.getInnerText(). Cuando Django procesa input XML — por ejemplo a través de su deserializador XML — y el XML es especialmente malicioso (muy profundo, con muchas repeticiones o nodos manipulados), la función entra en un bucle costoso en CPU/memoria.
- Esto puede permitir a un atacante remoto, con sólo enviar un input XML, saturar los recursos del servidor y causar que la aplicación deje de responder, ocasionando Denial of Service (DoS).
- No se requiere autenticación, privilegios especiales ni interacción del usuario (ataque desde red).
- Vulneran las versiones de Django: todas las versiones >= 4.2 hasta < 4.2.27, >= 5.1 hasta < 5.1.15, y >= 5.2 hasta < 5.2.9.
Recursos afectados
- Framework Django en las versiones mencionadas (4.2.x, 5.1.x, 5.2.x dentro del rango vulnerable).
- Aplicaciones web / servicios construidos con Django que utilicen la funcionalidad XML deserialization — es decir, que reciban o procesen datos XML desde fuentes externas sin validación segura.
- Cualquier servidor expuesto a red (internet o intranet) que acepte XML como input para procesos Django.
Solución
- Actualizar Django a versiones 4.2.27 (o superior), 5.1.15 (o superior), o 5.2.9 (o superior). Estas versiones incluyen corrección para esta vulnerabilidad.
- Si tu aplicación procesa XML, revisar dependencias y librerías, y actualizar lo antes posible.
Recomendaciones
- Auditar todas las aplicaciones Django en uso: identificar cuáles aceptan o procesan XML — tanto importaciones, APIs, servicios internos, feeds externos, etc.
- Para entornos críticos: añadir controles de validación o saneamiento de inputs XML, limitar tamaño máximo, profundidad máxima, deshabilitar la función de deserialización XML si no es estrictamente necesaria.
- Implementar monitoreo de uso de recursos (CPU, memoria) en servidores — establecer alertas para picos inesperados, especialmente en endpoints que reciben XML.
- En entornos productivos, aplicar el parche tan pronto como sea posible, e idealmente durante la próxima ventana de mantenimiento.
- Informar al equipo de desarrollo sobre la vulnerabilidad, y actualizar los manuales internos de hardening / buenas prácticas de codificación para evitar el uso de deserialización XML insegura o sin controles.
Referencias