Ejemplo de auditoría automatizada: pscan

pscan es un paquete diseñado para auditar archivos fuente de C y C++ en busca de vulnerabilidades de cadena de formato.

No es una herramienta de auditoría de propósito general.

Hacer funcionar pscan

Hacer funcionar pscan es una empresa tan sencilla como invocar el comando con el nombre del archivo o de los archivos que se vayan a comprobar. Por ejemplo:

pscan test.c

La salida se mostrará directamente en la consola (Nota del traductor: se mantiene la salida literal del comando, que es en inglés):


test.c:42 SECURITY: printf call should have "%s" as argument 0

La salida

En este caso, la salida se entiende fácilmente. Ha identificado correctamente que en la llamada a printf no se citan los argumentos correctamente.

La salida también nos muestra qué debemos hacer para corregir la debilidad, esto es, cambiar el código que lee:

printf( buff );

Para que lea:

printf( "%s", buff );

Si no se hace esto, se le podría permitir a un atacante que pudiera controlar la salida de ls para que atacara el programa, creando un archivo llamado "%s" o similar.

Los ataques de cadena de formato se tratan en esta introducción de Security Focus (en inglés).

El Secure Programming for Linux and Unix HOWTO (Cómo programar de forma segura para Linux y Unix, en inglés) explica cómo protegerse frente a estos ataques a funciones variadic (nota del traductor: que no siempre toman el mismo número de argumentos), como:


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