Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Deserialización insegura vista en el código

5 tareas · 40 min · Principiante

Serializar es convertir una estructura en memoria en una secuencia de bytes que se puede guardar o enviar; deserializar es el camino de vuelta. Hay formatos que solo transportan datos y hay formatos que reconstruyen objetos del lenguaje, y ahí está la diferencia que decide el hallazgo. Esta sala lee el inventario de conversiones de Editorial Cachipay —qué formato usa cada punto, de dónde llega el dato y qué se comprueba antes— y aprende a valorar cada uno por su origen y su control, sin construir ni enviar nada.

0 de 5 · 0%

Objetivo de la sala

Serializar es convertir una estructura en memoria en una secuencia de bytes que se puede guardar o enviar; deserializar es el camino de vuelta. Hay formatos que solo transportan datos y hay formatos que reconstruyen objetos del lenguaje, y ahí está la diferencia que decide el hallazgo. Esta sala lee el inventario de conversiones de Editorial Cachipay —qué formato usa cada punto, de dónde llega el dato y qué se comprueba antes— y aprende a valorar cada uno por su origen y su control, sin construir ni enviar nada.

Un formato de solo datos entrega al programa una estructura simple —textos, números, listas— y el programa decide qué hacer con ella. Un formato que reconstruye objetos del lenguaje hace algo distinto: al leer, crea instancias de tipos y les devuelve su estado, y en varios lenguajes eso ejecuta código de inicialización del propio tipo. Lo hace antes de que el programa mire nada.

Esa es la causa: la decisión sobre qué se construye la toma el contenido del dato, no el programa. Por eso la debilidad de MITRE, CWE-502, no habla de un formato concreto sino de deserializar datos en los que no se confía.

Responde para continuar

¿Dónde está exactamente el riesgo al deserializar un formato que reconstruye objetos?

Ver pista de ayuda

Pregúntate quién toma la decisión y en qué momento la toma.

El inventario marca, por cada punto donde la plataforma convierte bytes en estructuras, si el formato se limita a transportar datos o si además reconstruye objetos. Empieza por ahí: los puntos de solo datos se descartan en esta sala y los otros se revisan uno por uno.

Responde para continuar

¿Cuántos puntos del inventario reconstruyen objetos del lenguaje al leer?

Ver pista de ayuda

Ejecuta `SELECT id, componente, origen_del_dato, control FROM conversiones WHERE reconstruye_objetos = 'si'` y cuenta las filas.

Reconstruir objetos no es por sí solo un hallazgo: muchas plataformas lo hacen entre sus propios servicios y está bien. Lo que convierte un punto en hallazgo es la combinación de tres cosas: el formato reconstruye objetos, el dato llega por un camino que alguien de fuera controla, y no hay nada que se compruebe antes de leerlo.

Busca el único punto del inventario donde se cumplen las tres.

Responde para continuar

Escribe el identificador del punto que reconstruye objetos con un dato del navegador y sin ninguna comprobación previa.

Ver pista de ayuda

Ejecuta `SELECT * FROM conversiones` y cruza las tres últimas columnas.

Los otros dos puntos que reconstruyen objetos no se escriben igual. Uno acepta cualquier tipo pero exige que el archivo venga firmado por operaciones, así que quien no tenga la firma no llega a la lectura. El otro acepta solo tres tipos propios declarados en su configuración, y cualquier otro se rechaza antes de construir nada.

Los dos controles son válidos y protegen por razones distintas: uno comprueba quién manda el dato, el otro limita qué se puede construir con él.

Responde para continuar

¿Cómo tratas en el informe los dos puntos que reconstruyen objetos con control?

Ver pista de ayuda

Mira qué protege cada control y qué pasaría si mañana cambiara el origen del dato.

La corrección de fondo es cambiar el formato: si lo que viaja son preferencias, un formato de solo datos con una conversión explícita a los campos que el programa espera resuelve el problema entero y no se puede volver a encender por descuido.

Cuando el formato no se puede cambiar a corto plazo, las dos medidas que valen son una lista cerrada de tipos admitidos y una firma que se comprueba antes de leer. Y una que no vale: intentar reconocer contenidos peligrosos dentro del dato antes de deserializarlo, porque para saber qué trae hay que leerlo, que es justo lo que se quería evitar.

Responde para continuar

¿Qué recomiendas para el panel de preferencias?

Ver pista de ayuda

Una de las tres exige leer el dato para decidir si se puede leer.

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

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