Reino: Security Features

La seguridad de un software no es un software de seguridad. Nos preocupamos de cuestiones como la autenticación, el control de acceso, la confidencialidad, la criptografía y la gestión de privilegios.

Django Bad Practices: Pickle Serialized Sessions

Abstract
Las sesiones serializadas con subclases pueden provocar la ejecución de código remoto si los usuarios malintencionados pueden controlar los datos de sesión.
Explanation
Si se utilizan sesiones basadas en cookies y SECRET_KEY se filtra, un usuario malintencionado podrá almacenar datos arbitrarios en la cookie de sesión que se deserializará en el servidor, lo que provocará la ejecución de código arbitrario.

Si se utilizan sesiones basadas en cookies, tenga mucho cuidado y asegúrese de que la clave secreta siempre se mantenga completamente secreta para cualquier sistema que podría tener acceso remoto.

Ejemplo 1: El siguiente método de vista permite que un usuario malintencionado robe SECRET_KEY si se codifica en el archivo de configuración settings.py:


...
def some_view_method(request):
url = request.GET['url']
if "http://" in url:
content = urllib.urlopen(url)
return HttpResponse(content)
...


El método Example 1 comprueba que el parámetro url sea una dirección URL válida al comprobar que "http://" esté presente en la dirección URL. Un atacante malintencionado podría enviar la siguiente dirección URL para filtrar el archivo de configuración settings.py que puede contener SECRET_KEY:


file://proc/self/cwd/app/settings.py#http://


Nota: "/proc/self/cwd" en los sistemas UNIX señala el directorio de trabajo del proceso. Esto permite que los usuarios malintencionados hagan referencia a archivos sin conocer la ubicación exacta.
References
[1] Django Foundation Session serialization
[2] Balda Python web frameworks and pickles
[3] Standards Mapping - General Data Protection Regulation (GDPR) Access Violation
[4] Standards Mapping - OWASP Mobile 2024 M4 Insufficient Input/Output Validation
[5] Standards Mapping - Web Application Security Consortium Version 2.00 Application Misconfiguration (WASC-15)
desc.structural.python.django_bad_practices_pickle_serialized_sessions