Proteger el software de código abierto (2ª parte)

19 de julio de 2022

Estas son las vulnerabilidades que hemos revelado durante 2022

El software de código abierto aumenta su presencia en centros de datos, dispositivos de consumo y aplicaciones; además, su comunidad sigue creciendo. A pesar de que el código está disponible, persisten los problemas de seguridad de memoria en el software popular. Nuestro equipo de investigación comenzó una nueva búsqueda para encontrar y notificar vulnerabilidades en los proyectos de código abierto que utilizamos a diario. Esta es la segunda parte de ese trabajo, donde comparten con nosotros la estrategia que utilizaron para encontrar estos fallos: fuzzing guiado por cobertura.

En primer lugar, repasemos los fundamentos del fuzzing. La idea básica es generar casos de prueba automáticamente. Para ello, partimos de un conjunto de entradas creadas a mano y dejamos que el fuzzer genere otras nuevas. El fuzzer ejecutará el programa alimentándolo con una entrada del pool con una mutación aleatoria aplicada. Entonces comprobará si el programa falla y, si lo hace, guardará dicha entrada para que podamos analizarla más tarde. Si el programa no falla, seguirá iterando aplicando mutaciones a las entradas y ejecutando el programa. Cuando un fuzzer se limita a ejecutar entradas mutadas aleatoriamente de esta forma, sin hacer un seguimiento del comportamiento del programa analizado, se denomina fuzzer de caja negra. Ya que está tratando al programa como una caja negra que sólo acepta datos y puede fallar o no, dependiendo de los datos que se le suministren.

0_1gOtr8qpY8OdF7uR

Pasemos a discutir la idea de utilizar la cobertura para ayudar al fuzzer. Esta estrategia consiste en modificar el programa utilizando una técnica conocida como instrumentación para obtener información sobre qué partes del código son ejecutadas por una entrada (normalmente denominada cobertura). Sólo aquellas entradas que aumenten la cobertura se utilizarán para el fuzzing posterior, permitiendo probar un programa de forma más exhaustiva. Dado que la instrumentación del programa requiere un análisis ligero del mismo, esto se conoce como fuzzing de caja gris.

Para instrumentar un programa, el compilador modifica las instrucciones generadas después de cada salto condicional. Introduce un fragmento de código que realiza un seguimiento de las ramas a medida que se ejecutan por cualquier entrada dada. El fuzzer utiliza esta información durante el tiempo de ejecución para detectar entradas interesantes que ejercitan nuevas rutas de ejecución, aumentando así la cobertura del programa. Para entender por qué esto es importante, consideremos la siguiente función:

1_i0H0EfVOk0G6hHu5qwYqeA

La probabilidad de generar una entrada que llegue a la llamada a abort() mutando aleatoriamente las entradas iniciales es muy baja. Sin embargo, si el fuzzer construye nuevas entradas basadas en las que previamente entraron en cada sentencia condicional, el número de casos que deben generarse para llegar a abort() disminuye drásticamente. Esta es la razón por la que la retroalimentación de cobertura permite al fuzzer ejercitar rutas interesantes que son disparadas por entradas complejas de manera más eficiente.

Aquí está la lista de las vulnerabilidades que hemos encontrado recientemente utilizando esta técnica:

¿Le interesan nuestros productos? Consulte nuestra versión gratuita, aquí.

Seguir leyendo

Los últimos artículos del blog

En Faraday, la seguridad siempre ha estado en el centro de nuestra forma de operar. Hoy, nos enorgullece compartir un hito importante en nuestro viaje: la obtención de la certificación ISO/IEC 27001:2022, la

19 de junio de 2026

La ingeniería inversa de procesadores no documentados tradicionalmente ha requerido meses de trabajo manual. En este artículo, los investigadores de Faraday comparten cómo un pipeline híbrido asistido por IA recuperó una arquitectura de conjunto de instrucciones propietaria, generó un

16 de junio de 2026

Acerca de Faraday Security Faraday es una plataforma de seguridad ofensiva todo en uno impulsada por IA que ayuda a las organizaciones a validar su exposición, priorizar el riesgo real y tomar decisiones de seguridad más rápidas y mejor informadas. Diseñada para equipos de seguridad modernos,

junio 12, 2026

Manténgase informado, suscríbase a nuestro boletín

Introduzca su correo electrónico y no se pierda nunca las alertas y consejos de seguridad de los expertos de Faraday.

Faraday ayuda a grandes empresas, MSSPs y equipos de seguridad de aplicaciones a aprovechar mejor su ecosistema de seguridad, optimizando lo que ya utilizan.

Sede central

Laboratorio de investigación y desarrollo

Soluciones

Código abierto

2025 Faraday Security. Todos los derechos reservados.
Términos y condiciones | Política de privacidad