Outils d'audit de sécurité

Plusieurs paquets disponibles dans l'archive Debian sont destinés à faciliter les audits de code source. Sont inclus :

De plus, il existe d'autres outils spécifiques à un domaine spécifique des vulnérabilités, qui n'ont pas encore été empaquetés pour Debian mais peuvent néanmoins être utiles à un auditeur, notamment :

Aucun de ces outils n'est parfait. Ils ne peuvent être utilisés que comme point de départ pour des études plus poussées. Mais étant donné leur simplicité d'utilisation, cela vaut le coup de passer du temps à les essayer.

Chaque outil a ses avantages et ses inconvénients. C'est pourquoi il est recommandé d'en utiliser plus d'un.

Flawfinder

flawfinder est un outil codé en Python destiné à analyser du code source C et C++ à la recherche de défauts de sécurité potentiels.

Lorsqu'il est exécuté dans un répertoire contenant du code source, la liste des problèmes potentiels détectés est générée, triés par risque (où la variable risk est un entier entre 1 et 5). Pour ignorer les risques mineurs, il est possible de configurer le programme pour ne pas lister les défauts en dessous d'un certain niveau de risque. Par défaut, la sortie sera formatée en texte brut, mais une sortie au format HTML est également disponible.

Le programme fonctionne en parcourant le code à la recherche de fonctions connues pour être couramment mal utilisées.

Afin de faciliter la lecture du rapport, il est possible de générer un rapport contenant la ligne du code source, contenant la fonction utilisée. Cela peut être utile pour détecter immédiatement un problème, ou également l'éliminer.

Vous pouvez voir un exemple de la façon dont est utilisé flawfinder, ainsi que le rapport qu'il génère dans la section des exemples d'audit.

ITS4

ITS4 est un outil appartenant à la section non-free de l'archive Debian, qui est disponible uniquement pour la distribution Woody.

ITS4 peut être utilisé pour chercher dans du code source C et C++ de potentielles failles de sécurité, de même que flawfinder.

Le rapport généré essaie d'être pertinent, en excluant une partie des cas où les appels à des fonctions dangereuses ont été faits avec précaution.

RATS

RATS est un outil similaire à ceux de la liste ci-dessus, excepté qu'il prend en charge plus de langages. Sont actuellement gérés : C, C++, Perl, PHP et Python.

Cet outil utilise un simple fichier XML pour obtenir les vulnérabilités, ce qui en fait l'outil le plus simple à modifier. De nouvelles fonctions peuvent être ajoutées facilement pour chaque langage pris en charge.

Vous pouvez voir un exemple d'utilisation de RATS et le rapport généré dans la section des exemples d'audit.

pscan

pscan diffère des outils précédemment décrits, car ce n'est pas du tout un scanner généraliste. Au contraire, c'est un programme qui vise spécifiquement la détection de bogues dans le format des chaînes de caractères.

L'outil essaiera de trouver des problèmes potentiels dans l'utilisation des fonctions variadiques (pouvant accepter un nombre variable d'arguments) dans du code C et C++, par exemple les fonctions printf, fprintf et syslog.

Les bogues de format des chaînes de caractères sont facilement détectables et réparables. Ainsi, bien qu'ils constituent la nouvelle génération d'attaques logicielles, la majorité d'entre eux ont sans doute déjà été trouvés et corrigés.

Vous pouvez voir un exemple d'utilisation de pscan et le rapport généré dans la section des exemples d'audit.

Comprendre les résultats du scanner

Tous les outils généralistes de recherche fournissent des résultats incluant la description du défaut détecté, et dans certains cas un conseil pour corriger le code.

Par exemple, ce qui suit est tiré du rapport généré par RATS et décrit les dangers de getenv :

« Les variables d'environnement sont des paramètres d'entrée auxquels on ne peut pas faire confiance. Ils peuvent être de toute taille, et contenir n'importe quelles données. Ne faites pas d'hypothèse sur leur contenu ou leur taille. Évitez si possible de les utiliser, et si cela est nécessaire, vérifiez-les et tronquez-les à une taille raisonnable. »

Si vous avez besoin de conseils avancés sur la manière de corriger une vulnérabilité signalée, vous devriez étudier un ouvrage sur la manière de programmer sûrement, tel que Secure Programming for Linux and Unix HOWTO par David A. Wheeler.

(Rappelez-vous qu'un correctif au trou de sécurité est grandement appréciée lorsque vous signalez un bogue de sécurité.)

Des discussions portant sur la correction de portions de code particulièrement problématiques peuvent également se tenir sur la liste de diffusion debian-security. Comme il s'agit d'une liste de diffusion publique avec des archives publiques, veillez simplement à ne pas rendre évident le nom du programme concerné par le défaut.