Herramientas para auditar la seguridad

Hay varios paquetes disponibles en el archivo de Debian que están diseñados para dar asistencia a las auditorías de código fuente. Entre ellos están:

Tenga en cuenta también que hay algunas otras herramientas específicas para una serie de vulnerabilidades de seguridad que aún no se han empaquetado para Debian pero que pueden ser útiles para los auditores. Entre ellas están:

Ninguna de las herramientas es perfecta, y sólo se pueden usar como guías para un posterior estudio, pero dado que su uso es muy sencillo, es preferible invertir algo de tiempo en probarlas.

Cada una de las herramientas tienen distintos puntos fuertes y débiles, por lo que se recomienda usar más de una.

Flawfinder

flawfinder es una herramienta de Python diseñada para analizar código fuente C y C++ en busca de potenciales debilidades de seguridad.

Cuando se hace funcionar sobre un directorio que contiene código fuente, se obtiene un informe de los problemas potenciales que ha detectado, ordenados por riesgo (riesgo es un entero de 1 a 5). Para obviar los riesgos menores, es posible decirle al programa que no informe sobre debilidades menores de un nivel de riesgo particular. De forma predefinida, la salida aparecerá en texto plano, pero también hay disponible un informe en HTML.

El programa funciona escaneando el código y buscando el uso de las funciones que tiene en su base de datos de funciones que normalmente se usan mal.

Para facilitar la lectura del informe, se puede indicar que contenga la línea en la que se usa la función, lo que puede ser útil apra detectar un problema inmediatamente, ya que de otra forma podría ser imposible.

Puede ver un ejemplo de uso de flawfinder y de su salida en la sección de ejemplos de auditoría.

ITS4

ITS4 es una herramienta que pertenece a la sección non-free (no libre) del archivo de Debian, y sólo está disponible para la distribución woody.

ITS4 se puede usar para buscar potenciales agujeros de seguridad en C y C++, al igual que flawfinder.

La salida que produce pretende ser inteligente, ya que no tiene en cuenta algunos de los casos en los que las llamadas a las funciones peligrosas se han hecho con cuidado.

RATS

RATS es una herramienta similar a las citadas anteriormente, con la excepción de que admite un mayor abanico de lenguajes. En la actualidad, tiene soporte para C, C++, Perl, PHP y Python.

La herramienta usa un archivo XML sencillo para leer sus vulnerabilidades, lo que la convierte en una de las herramientas más sencillas para hacer modificaciones. Fácilmente se pueden añadir funciones nuevas para cada uno de los lenguajes soportados.

Puede ver un ejemplo de uso de RATS y de su salida en la sección de ejemplos de auditoría.

pscan

pscan difiere de las herramientas anteriores en que no es un analizador de propósito general. Se trata de un programa específico para ayudar a detectar errores de cadena de formato.

La herramienta intentará encontrar incidencias en el uso de funciones variadic (n.t. que no siempre toman el mismo número de argumentos) en código fuente C y C++, como printf, fprintf y syslog.

Los errores de cadena de formato son bastante sencillos de detectar y corregir. A pesar de que sean el tipo más reciente de ataques de software, la mayoría de ellos ya se pueden descubrir y reparar.

Puede ver un ejemplo de uso de pscan y de su salida en la sección de ejemplos de auditoría.

Comprender la salida del analizador

Cada una de las herramientas generales de análisis incluye una salida que describe la debilidad detectada y, posiblemente, algunos consejos para reparar el código.

Por ejemplo, lo siguiente se ha tomado de la salida de RATS y describe el peligro de getenv:

"Environment variables are highly untrustable input. They may be of any length, and contain any data. Do not make any assumptions regarding content or length. If at all possible avoid using them, and if it is necessary, sanitize them and truncate them to a reasonable length."

Si necesita alguna pista más para corregir un agujero del que ya se ha informado, debería estudiar un libro de programación segura, como Secure Programming for Linux and Unix HOWTO (n.t. en inglés), de David A. Wheeler.

(Cuando informe de las cuestiones de seguridad, recuerde que se aprecia mucho un parche que cierre el agujero).

Las discusiones relativas a cerrar un trozo de código problemático también se pueden llevar a cabo en la lista de correo debian- security, simplemente, al ser ésta una lista pública con archivos públicos, tenga cuidado de no ser demasiado explícito a la hora de decir qué programa tiene la debilidad.