Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Leer 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.

0 de 5 · 0%

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.

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