Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Deserializacion insegura

4 tareas · 20 min · Principiante

La subida insegura de la sala anterior confia en lo que el usuario sube. La deserializacion insegura confia en algo mas sutil: un dato del usuario que la aplicacion reconstruye como un objeto, dandole forma y comportamiento a partir de un texto que controla quien lo envia. En Depostock una cookie se reconstruye con unserialize sin validar. Se localiza en el codigo, se clasifica como deserializacion insegura y se arregla; no se fabrica ningun objeto.

0 de 4 · 0%

Objetivo de la sala

La subida insegura de la sala anterior confia en lo que el usuario sube. La deserializacion insegura confia en algo mas sutil: un dato del usuario que la aplicacion reconstruye como un objeto, dandole forma y comportamiento a partir de un texto que controla quien lo envia. En Depostock una cookie se reconstruye con unserialize sin validar. Se localiza en el codigo, se clasifica como deserializacion insegura y se arregla; no se fabrica ningun objeto.

Serializar es convertir un objeto en texto para guardarlo o enviarlo; deserializar es el camino de vuelta, reconstruir el objeto desde ese texto. El problema aparece cuando el texto lo controla el usuario. En sesion.php de Depostock la cookie pref se pasa a unserialize, que rearma un objeto a partir de lo que venga en la cookie. Como el usuario decide el contenido de su cookie, decide que objeto se reconstruye y con que datos, y eso abre comportamientos que el programa nunca previo. El auditor lo reconoce por el par origen no confiable mas reconstruccion de objeto.

Lee el archivo y pregunta: de donde sale el texto que se reconstruye como objeto?

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

En sesion.php, por que es peligroso el unserialize de la cookie?

Ver pista de ayuda

Piensa quien decide el contenido de una cookie y que se construye a partir de ella.

El fallo no esta en guardar preferencias en una cookie, sino en reconstruir un objeto a partir de un dato que el usuario puede cambiar a su gusto. Una cookie viaja en cada peticion y quien la envia puede reescribirla entera. Tratar ese texto como la fuente para armar un objeto es confiar en el usuario para algo que el programa deberia controlar. El auditor marca el origen —la cookie, controlada por el usuario— como la raiz del problema, no la funcion en si.

Es la misma leccion del modulo de inyeccion: lo que viene de fuera es dato, no instruccion ni objeto, hasta que se valida.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Cual es la raiz del fallo de sesion.php?

Ver pista de ayuda

El problema no es leer la cookie, es construir un objeto de confianza a partir de ella.

El arreglo es no deserializar datos del usuario con el mecanismo nativo. Para guardar preferencias basta un formato de datos simple como JSON, que produce valores —no objetos con comportamiento— y se interpreta sin reconstruir clases. Si ademas hace falta asegurar que la cookie no se manipulo, se firma con una clave del servidor y se rechaza si la firma no cuadra. El auditor clasifica el fallo como deserializacion insegura (CWE-502) y recomienda esas dos piezas: JSON para datos, firma para integridad.

Cifrar la cookie no arregla el fallo de fondo: el problema no es que se lea, es que se reconstruya como objeto.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Que arreglo recomiendas para el unserialize de sesion.php?

Ver pista de ayuda

El arreglo cambia como se guarda el dato (valores, no objetos) y anade integridad, no solo confidencialidad.

La deserializacion insegura tiene su propia nota de triaje en Depostock, con el archivo, el origen del dato, la clasificacion CWE-502 y el arreglo. Abrela en el laboratorio, confirma que describe el unserialize de la cookie en sesion.php y lee el codigo del hallazgo con el que cierra.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Abre la nota de triaje de la deserializacion insegura de Depostock (carpeta auditoria) y escribe el codigo del hallazgo que la cierra.

Ver pista de ayuda

Es la nota del unserialize de la cookie en sesion.php, no la de la subida de archivos.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Preparando el escritorio…

16:24
Terminal (user@whoami)
user@whoami:~$
Tab Autocompletar ↑/↓ Historial
bash 5.2.21
Whoami-Labs OS v3.0.1 LTS · build bcc89e

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad