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

Esta versión responde a las antiguas peticiones de los clientes y refuerza nuestra misión de hacer que la gestión de vulnerabilidades sea más sencilla, transparente y práctica.

19 de febrero de 2026

Nuestro equipo de investigación de seguridad investiga activamente vulnerabilidades en tecnologías de uso generalizado, con especial atención a la infraestructura de redes y los sistemas integrados. A lo largo de 2024, nuestros investigadores informaron de múltiples problemas de seguridad que afectaban a

8 de enero de 2026

Cada año, la Ekoparty nos recuerda por qué amamos lo que hacemos.Nos preparamos con la misma energía de siempre: para reencontrarnos con la comunidad, compartir lo que investigamos, aprender de otros y..,

6 de enero de 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