Persistencia de Fallos: Cómo los Errores Persisten a Través del Fuzzing Continuo

3
minutos de tiempo de lectura
Elena Digital López

En el ámbito del software de código abierto, la seguridad sigue siendo un desafío, incluso para proyectos que llevan años siendo analizados. El programa OSS-Fuzz, reconocido por su labor en la identificación de vulnerabilidades, no siempre logra descubrir todos los errores ocultos. A pesar de que esta iniciativa, en colaboración con la Fundación OpenSSF, ha contribuido significativamente al detectar miles de vulnerabilidades, la complejidad y la evolución del software requieren un enfoque de seguridad que no dependa exclusivamente del fuzzing.

Las recientes auditorías de varios proyectos populares respaldados por OSS-Fuzz han sacado a la luz vulnerabilidades significativas. Un ejemplo destacable es GStreamer, el marco multimedia utilizado en el entorno de escritorio GNOME, donde se encontraron 29 nuevas vulnerabilidades. Sorprendentemente, esto ocurrió a pesar de sus siete años bajo el programa de fuzzing. Las estadísticas muestran que GStreamer cuenta con dos generadores de fuzzing activos y una cobertura de código del 19%, muy por detrás de estándares como OpenSSL, que dispone de 139 generadores.

Lo anterior señala la importancia de la supervisión humana en el proceso de fuzzing, ya que la percepción errónea de algunos desarrolladores sobre la seguridad que ofrece el estar en OSS-Fuzz puede generar falsas sensaciones de protección. Sin especialistas en seguridad para gestionar la cobertura y crear nuevos fuzzers, ciertas partes del código pueden permanecer desprotegidas.

Otro caso ejemplificador es el de Poppler, la biblioteca encargada de analizar PDFs en Ubuntu. Aunque cuenta con un 60% de cobertura de código y 16 generadores de fuzz, se encontró una vulnerabilidad crítica que permitía la ejecución remota de código. Este hallazgo resalta la importancia de incluir las dependencias externas en el proceso de fuzzing para evitar caminos de ejecución no probados.

Exiv2, una herramienta para modificar metadatos en imágenes, tampoco escapó a esta problemática. A pesar de su inclusión en OSS-Fuzz durante más de tres años, se descubrieron nuevas vulnerabilidades que ilustran un patrón común: el enfoque predominantemente en la decodificación durante el fuzzing, dejando la codificación y sus posibles errores en segundo plano.

Estos casos demuestran que el fuzzing, aunque útil en la detección masiva de bugs, no es infalible. La cobertura incompleta, el descuido de las dependencias externas y la necesidad de revisiones manuales siguen siendo obstáculos críticos. Investigadores del área sugieren un enfoque más proactivo que combine fuzzing con otras técnicas, como el análisis estático y las revisiones manuales, para mantener la seguridad del software frente a amenazas emergentes.

TE PUEDE INTERESAR

Persistencia de Fallos: Cómo los Errores Persisten a Través del Fuzzing Continuo — Andalucía Informa