Ejemplo de auditoría automatizada: flawfinder

flawfinder es un analizador de propósito general para encontrar e informar de debilidades potenciales en código fuente tanto de C como de C++.

Hacer funcionar flawfinder

Hacer funcionar flawfinder es tan sencillo como invocar el comando con el directorio o los nombres de los archivos que se van a procesar. Si se indica un directorio, se procesarán todos los archivos que se encuentren y que se reconozcan como archivos fuente en ese directorio.

Además de proporcionar al programa una lista de archivos o directorios, hay varias opciones de la línea de comandos que se utilizan para controlar el comportamiento de las herramientas.

Las opciones se explican al detalle en la página del manual, pero hay opciones particularmente útiles que usaremos en el ejemplo:

Para producir un archivo HTML con el resultado de nuestro programa, teniendo en cuenta sólo las funciones de «alto riesgo», tendríamos que teclear algo como esto:

flawfinder --html --context --minlevel=4 test.c > output.html

El resultado

Al hacer funcionar flawfinder sobre nuestro código de ejemplo, se produce la siguiente salida (Nota del traductor: se mantiene la salida literal del comando, que es en inglés):


Examining test.c

Number of hits = 4
Number of Lines Analyzed = 48 in 0.53 seconds (1392 lines/second)


Comprender la salida

Al igual que ocurría con la salida de RATS, este informe es es muy fácil de leer. Muestra claramente las funciones que se han detectado como potencialmente peligrosas, así como la descripción del problema.

También es muy útil la inclusión de información de contexto, porque así se concentra la atención inmediatamente sobre los puntos de interés y se evita considerar otros que no son tan válidos.

El análisis del código de nuestro ejemplo es bastante inteligente, puesto que no avisa de todas las funciones strcpy problemáticas, sino sólo de la que piensa que podría ser potencialmente peligrosa.

De esta forma, ha conseguido resaltar todas las debilidades de nuestro código sin dar lugar a falsos positivos.


Volver al proyecto de auditoría | Volver a la página de ejemplos de auditoría