🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónQué es una prueba de fuzzing y qué cobertura da
4 tareas · 38 min · Principiante
Una prueba normal comprueba los casos que alguien pensó. Una prueba de fuzzing genera miles de entradas por segundo, casi todas absurdas, y mira si el código propio se cae con alguna. En Pasca Analítica, una empresa ficticia, el equipo corrió por primera vez diez minutos de fuzzing sobre su biblioteca de tablas y el resultado fue «ningún fallo». Lees el arnés, las semillas, la salida de la corrida y el informe de cobertura para decidir qué dice ese resultado y qué no. Todo es lectura de evidencia ficticia sobre código propio; no se ejecuta nada.
Objetivo de la sala
Una prueba normal comprueba los casos que alguien pensó. Una prueba de fuzzing genera miles de entradas por segundo, casi todas absurdas, y mira si el código propio se cae con alguna. En Pasca Analítica, una empresa ficticia, el equipo corrió por primera vez diez minutos de fuzzing sobre su biblioteca de tablas y el resultado fue «ningún fallo». Lees el arnés, las semillas, la salida de la corrida y el informe de cobertura para decidir qué dice ese resultado y qué no. Todo es lectura de evidencia ficticia sobre código propio; no se ejecuta nada.Una prueba de ejemplos fija entradas y salidas esperadas: «con este archivo, la tabla tiene dos filas». Una prueba de fuzzing no espera una salida concreta; pregunta otra cosa: «¿existe alguna entrada con la que el programa falle de forma que nunca debería?». El motor parte de unas pocas entradas de ejemplo (el corpus semilla), las muta (cambia bytes, corta, repite, mezcla) y se queda con las que hacen pasar el código por caminos nuevos. Eso se llama fuzzing guiado por cobertura, y es lo que hacen motores de la familia libFuzzer o AFL++.
Lo que el motor detecta es un fallo observable: una excepción no prevista, una caída, un bloqueo que supera el tiempo límite, un consumo de memoria descontrolado. No sabe si el resultado era «correcto»; solo ve que algo reventó. Por eso se usa sobre código propio, con permiso, en el entorno de desarrollo o de CI.
Responde para continuar
¿Qué encuentra, por sí sola, una prueba de fuzzing?
Ver pista de ayuda
El motor no sabe qué resultado era el correcto; solo ve que algo reventó.
Un arnés es el pedazo de código que conecta el motor con la función que se prueba: recibe los bytes que genera el motor y se los entrega a la función. Su decisión más importante es qué excepciones son normales. Si la biblioteca rechaza un archivo mal formado con su propia excepción (TablaInvalida), eso es la respuesta correcta y el arnés la deja pasar; cualquier otra excepción es un hallazgo.
El corpus semilla da al motor un punto de partida con entradas válidas de varias formas. Cuantas más formas válidas distintas, más rápido llega a código profundo.
Abre fuzz/fuzz_lector.py y la carpeta fuzz/corpus-semilla.
Responde para continuar
¿Cuántos archivos tiene el corpus semilla?
Ver pista de ayuda
Con el explorador de archivos o `ls fuzz/corpus-semilla`, cuenta los archivos de la carpeta.
La cobertura mide qué líneas (o ramas) del código se ejecutaron durante la corrida. Es la única forma de saber qué parte del programa ha visto el motor: lo que nunca se ejecuta nunca se prueba. Un porcentaje bajo en un módulo no es un fallo, es una zona ciega: dice dónde no se ha mirado.
La causa más común de un cero es que ningún arnés llega hasta ese módulo: el motor solo explora lo que el arnés le deja alcanzar.
Abre informe/cobertura-por-modulo.csv.
Responde para continuar
Escribe el nombre del módulo que la corrida no ejecutó en ninguna de sus líneas.
Ver pista de ayuda
Busca la fila con cero líneas cubiertas y confirma con `fuzz/fuzz_lector.py` qué módulo importa el arnés.
La salida de la corrida termina con «ningún fallo encontrado». Lee con cuidado lo que cubrió: el lector alcanzó una cobertura alta, pero los módulos que el arnés no importa no se ejecutaron. Un resultado sin fallos describe lo que se ejecutó, con las entradas probadas, en el tiempo que corrió; no demuestra que no existan fallos. Y una cobertura de líneas alta tampoco: se puede pasar por una línea con una entrada que no la rompe y no pasar nunca con la que sí.
Revisa fuzz/corrida-10min.txt y el informe de cobertura antes de contestar.
Responde para continuar
Según la corrida de diez minutos y el informe de cobertura, ¿qué conclusión se sostiene?
Ver pista de ayuda
El resultado habla de lo que se ejecutó, no de lo que no se alcanzó.
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.