🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónCifrado autenticado frente a cifrado solo
5 tareas · 40 min · Principiante
«Va cifrado» es una de las frases que más hallazgos esconde en una revisión. Cifrar impide leer, pero no impide cambiar, y una aplicación que confía en lo que descifra sin comprobar que nadie lo tocó acaba decidiendo con datos que escribió otro. Nómina Hatogrande guarda el rol de cada persona en una cookie cifrada, y una nómina quedó aprobada por alguien que no podía aprobarla. Te entregan el código de la cookie, el de las cuentas bancarias y el registro de ese día.
Objetivo de la sala
«Va cifrado» es una de las frases que más hallazgos esconde en una revisión. Cifrar impide leer, pero no impide cambiar, y una aplicación que confía en lo que descifra sin comprobar que nadie lo tocó acaba decidiendo con datos que escribió otro. Nómina Hatogrande guarda el rol de cada persona en una cookie cifrada, y una nómina quedó aprobada por alguien que no podía aprobarla. Te entregan el código de la cookie, el de las cuentas bancarias y el registro de ese día.La confidencialidad responde a «¿quién puede leerlo?»; la integridad, a «¿quién puede cambiarlo sin que se note?». Un cifrado solo, como AES en modo CBC o CTR sin nada más, da lo primero y no lo segundo. En CTR, cambiar un bit del texto cifrado cambia exactamente ese bit del texto claro. En CBC, cambiar un byte del bloque anterior (o del vector de inicialización, para el primer bloque) cambia de forma controlada el mismo byte del bloque siguiente. Quien conoce o intuye una parte del texto claro puede alterarla sin conocer la clave.
El cifrado autenticado añade una etiqueta que se calcula con la clave sobre todo el mensaje. Al descifrar, la etiqueta se comprueba primero y, si no coincide, no se devuelve nada. Los modos AES-GCM y ChaCha20-Poly1305 lo hacen en una sola operación; con un cifrado solo, la alternativa es cifrar y después calcular un HMAC con otra clave sobre el texto cifrado, comprobándolo antes de descifrar.
Responde para continuar
Una cookie va cifrada con una clave que solo conoce el servidor y un vector nuevo en cada cookie, sin etiqueta ni HMAC. ¿Qué garantiza?
Ver pista de ayuda
Separa las dos preguntas: quién puede leer y quién puede cambiar sin que se note.
Abre el laboratorio y lee CookiePreferencias.php junto a CuentaBancaria.php. Los dos cifran con AES de 256 bits, los dos usan un vector o nonce nuevo cada vez, y en un vistazo rápido parecen equivalentes. Fíjate en el nombre del cifrado que recibe cada llamada y en qué devuelve cada uno además del texto cifrado.
Responde para continuar
¿Qué cifrado y modo usa la cookie de preferencias? Escríbelo tal como aparece en el código.
Ver pista de ayuda
Es el segundo argumento de la llamada que cifra en el método sellar.
Cuando el descifrado de un cifrado solo falla, la causa suele ser el relleno del último bloque. Si la aplicación responde distinto según el relleno sea válido o no —un código de estado, un mensaje, un tiempo—, cualquiera que pueda enviarle cookies modificadas recibe una respuesta de sí o no por cada intento. Con suficientes intentos, esa diferencia basta para recuperar el texto claro sin conocer la clave. No hace falta reproducirlo para reconocerlo: en un registro se ve como miles de fallos de descifrado desde un solo origen, mezclados con otro tipo de rechazo.
Lee MiddlewarePreferencias.php y después resumen-por-minuto.txt.
Responde para continuar
¿Qué código de estado HTTP devuelve la aplicación cuando el descifrado de la cookie falla por el relleno? Escribe solo el número.
Ver pista de ayuda
Busca el bloque catch del middleware.
El middleware toma el rol de la cookie para decidir quién puede aprobar una nómina. Eso ya es un problema de diseño —la autorización depende de un dato que guarda el cliente—, y deja de ser teórico cuando ese dato se puede alterar. El controlador registra en cada aprobación el rol que trajo la cookie y el que tiene la base: busca la línea donde no coinciden.
Responde para continuar
¿Qué cuenta aprobó una nómina con un rol en la cookie distinto del que tiene en la base? Escríbela tal como aparece en el registro.
Ver pista de ayuda
Compara rol_cookie y rol_base en cada línea de aprobación.
El equipo cree que la clave no se filtró, y probablemente tiene razón: el problema no necesitaba la clave. Lo que falló es el diseño de la cookie y lo que la aplicación hace con ella. MITRE lo recoge como CWE-353, falta de comprobación de integridad, y la decisión de autorizar con un dato del cliente se clasifica aparte, como control de acceso roto.
Responde para continuar
¿Qué conjunto de cambios corrige la causa y no solo el síntoma?
Ver pista de ayuda
El cambio que importa más ni siquiera es criptográfico.
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
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.