🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLeer un informe de fallos y su semilla
5 tareas · 40 min · Principiante
Una corrida nocturna de fuzzing termina con un archivo de informe: una traza, el nombre de un archivo de entrada y una cifra llamada semilla. Quien lo lee sin haberlo escrito necesita saber qué es cada cosa, qué basta para reproducir el fallo y cuántos fallos distintos hay de verdad detrás de una lista de ocho avisos. En Pasca Analítica, una empresa ficticia, lees el informe de una corrida de media hora sobre la biblioteca de tablas y el resumen de la semana. Todo es lectura de evidencia ficticia sobre código propio.
Objetivo de la sala
Una corrida nocturna de fuzzing termina con un archivo de informe: una traza, el nombre de un archivo de entrada y una cifra llamada semilla. Quien lo lee sin haberlo escrito necesita saber qué es cada cosa, qué basta para reproducir el fallo y cuántos fallos distintos hay de verdad detrás de una lista de ocho avisos. En Pasca Analítica, una empresa ficticia, lees el informe de una corrida de media hora sobre la biblioteca de tablas y el resumen de la semana. Todo es lectura de evidencia ficticia sobre código propio.Un informe de fuzzing reúne cuatro cosas. La traza muestra por dónde pasó el programa hasta romperse. La entrada que falló es el archivo que el motor guardó. La minimización reduce esa entrada al tamaño más pequeño que sigue fallando, lo que facilita entender la causa. Y la semilla (seed) es el número con que se inicializó el generador aleatorio del motor: fija la secuencia de mutaciones de esa corrida.
La entrada guardada es lo que reproduce el fallo: basta entregársela a la función. La semilla ayuda a repetir la exploración (que el motor recorra el mismo camino de entradas), pero no es necesaria para volver a ver este fallo, y el motor puede dar resultados distintos si cambia el corpus o el tiempo.
Responde para continuar
Alguien del equipo necesita reproducir el fallo del informe en su máquina. ¿Qué es lo esencial que debe conservar?
Ver pista de ayuda
Reproducir un fallo es volver a darle a la función la entrada que lo causó.
Una traza de Python lista las llamadas en el orden en que se hicieron: primero el arnés, al final la línea que lanzó la excepción. La causa inmediata está en el último marco que pertenece al código propio, no en el arnés que lo llamó. Ahí se mira la línea concreta y el tipo de excepción.
Abre informe/corrida-nocturna.txt y el extracto de tablas/lector.py.
Responde para continuar
Escribe el nombre de la función de la biblioteca donde se lanza la excepción.
Ver pista de ayuda
Lee la traza hasta su última llamada y comprueba la línea 88 en el extracto de `tablas/lector.py`.
El informe repite al principio los parámetros con los que corrió el motor: el tiempo máximo, el corpus de partida y la semilla. Guardarlos junto al informe es parte de la evidencia, porque sin ellos nadie puede repetir la corrida con las mismas condiciones.
Abre el informe de la corrida nocturna.
Responde para continuar
¿Cuál fue la semilla de la corrida nocturna?
Ver pista de ayuda
Está en las primeras líneas del informe, junto al tiempo máximo.
Una semana de corridas produce muchos avisos y pocas causas. Dos avisos son el mismo fallo cuando comparten la firma: la función donde se lanza la excepción y su tipo. Contar avisos infla el problema; contar firmas distintas dice cuánto trabajo hay de verdad.
Abre informe/resumen-corridas.csv y cuenta las firmas diferentes.
Responde para continuar
¿Cuántas causas distintas (firmas) hay en el resumen de corridas?
Ver pista de ayuda
Agrupa las filas por la columna `firma` y cuenta los grupos, no las filas.
El motor redujo el archivo de 1874 bytes a otro de tres: una marca de orden de bytes al principio y nada más. Un archivo de tres bytes se entiende de un vistazo; uno de 1874 no. La minimización revela la condición mínima: aquí, un archivo que no está vacío pero queda sin líneas al quitar la marca, mientras el código supone que la primera línea existe.
Lee fuzz/crashes/minimizacion.txt junto con el extracto del lector, y decide qué corrección corresponde.
Responde para continuar
Con la entrada mínima y el extracto del lector a la vista, ¿qué corrección ataca la causa del fallo?
Ver pista de ayuda
La función suponía algo que ya no es cierto tras quitar la marca.
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.