🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónAleatoriedad segura para tokens e identificadores
5 tareas · 40 min · Principiante
Casi toda aplicación fabrica valores que nadie escoge: el enlace de un documento, una clave para integrarse, una invitación, el nombre de un archivo temporal. Algunos son simples etiquetas; otros, si alguien los adivina, le abren la puerta. La revisión de código empieza por separar los dos grupos y mirar de dónde sale cada valor. Nómina Hatogrande, un portal de nómina electrónica para pymes, te entrega el inventario de sus valores al azar y el código que los produce.
Objetivo de la sala
Casi toda aplicación fabrica valores que nadie escoge: el enlace de un documento, una clave para integrarse, una invitación, el nombre de un archivo temporal. Algunos son simples etiquetas; otros, si alguien los adivina, le abren la puerta. La revisión de código empieza por separar los dos grupos y mirar de dónde sale cada valor. Nómina Hatogrande, un portal de nómina electrónica para pymes, te entrega el inventario de sus valores al azar y el código que los produce.Un valor puede ser único —no se repite nunca— y aun así ser fácil de adivinar. Un contador es único; la hora del servidor con microsegundos casi siempre lo es. Ninguno de los dos sirve como secreto, porque quien sabe cuándo se generó el valor puede reconstruirlo o acotarlo a unos pocos miles de candidatos.
Pasar ese valor por una función de resumen no cambia nada. Un resumen es determinista: la misma entrada da siempre la misma salida, y una salida de 32 caracteres hexadecimales no tiene más incertidumbre que la entrada de la que salió. Si la entrada era la hora, quien calcula el resumen de cada hora probable obtiene los mismos candidatos que el servidor. El tamaño de la salida impresiona en una revisión rápida, pero la incertidumbre se mide en el origen, no en la forma final.
Responde para continuar
Un identificador se calcula como el resumen de la hora del servidor con microsegundos. ¿Cuánta incertidumbre tiene para quien conoce el día y la hora aproximada de su creación?
Ver pista de ayuda
Piensa en cuántas entradas distintas tendría que probar alguien que sabe en qué minuto se generó.
Los lenguajes ofrecen dos clases de generadores. Los de propósito general son rápidos y sirven para simulaciones, juegos o decoración, pero no se diseñaron para resistir a quien observa sus salidas o conoce su estado. Los criptográficos toman su entropía del sistema operativo y están hechos para secretos. Algunas funciones que suenan aleatorias ni siquiera son generadores: devuelven un valor derivado de la hora y su propia documentación advierte que no sirven para nada que deba ser imposible de adivinar.
Abre el laboratorio y lee EnlaceDesprendible.php. El enlace llega por correo y descarga el desprendible de pago sin pedir sesión.
Responde para continuar
¿Qué función de PHP produce el valor que luego se pasa por el resumen para formar el identificador del enlace? Escríbela sin paréntesis.
Ver pista de ayuda
Mira la línea anterior al insert y lee lo que hay dentro de md5.
No todo valor al azar es un secreto, y marcarlos todos como hallazgo llena el informe de ruido. La pregunta que decide es una sola: ¿alguien obtiene acceso, o ve algo que no debería, si adivina este valor? Si la respuesta es sí, el valor tiene que salir de un generador criptográfico y tener longitud suficiente. Si es no, cualquier generador vale.
Lee inventario-aleatorios.txt y, para cada fila, cruza la última columna con la forma en que se genera el valor. Si dudas sobre alguna función, abre su archivo.
Responde para continuar
De los valores del inventario que bastan para entrar o ver algo, ¿cuántos no salen de un generador criptográfico?
Ver pista de ayuda
Barajar una cadena con la función estándar del lenguaje tampoco usa un generador criptográfico.
El escáner de código marcó dos filas del inventario por usar un generador de propósito general, y el equipo quiere cambiarlas para que no vuelvan a salir. Un escáner señala patrones; quien revisa decide si el patrón es un riesgo en ese contexto. Lee ReferenciaNomina.php y la fila A-04.
Responde para continuar
¿Cómo debe quedar en el informe la referencia que se imprime en la liquidación?
Ver pista de ayuda
Aplica la pregunta de la tarea anterior a esta fila concreta.
Cambiar la línea que genera el enlace corrige los enlaces futuros, pero no los que ya salieron. Según las notas del equipo, hay decenas de miles vigentes con un mes de vida, y cada uno sigue siendo tan predecible como el día en que se creó. Un arreglo completo cubre las dos cosas: lo que se emitirá y lo que ya está en circulación. MITRE clasifica este tipo de fallo como CWE-338, uso de un generador pseudoaleatorio criptográficamente débil, y como CWE-330 cuando la debilidad está en el origen del valor en general.
Responde para continuar
¿Qué plan corrige el enlace del desprendible?
Ver pista de ayuda
Un dato más que el atacante podría conocer no añade incertidumbre, y alargar la salida tampoco.
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.