The ZATAZ network :: ZATAZ.com :: ZATAZ.net


Documentation : Audit de code avec RATS

Date de publication : 19.7.2004
Date de modification : 9.11.2005

Contributeur : Eric Romang

Société : ZATAZ / http://eromang.zataz.com

Eric Romang co-fondateur de ZATAZ, avec Damien Bancal, supervise la direction technique de ZATAZ.

Situé au Luxembourg, Eric Romang a eu l'occasion au cours de ses années d'expériences dans le domaine au sein de datacenter de développer une expertise dans la haute disponibilité d'infrastructure, la mise en place de cluster MySQL, de solutions de stockages, de sauvegardes et de sécurisation d'environnement Linux.


Mise en condition

Le développement d'application en php, c, perl, etc. comportent tous comme un serveur des failles de sécurité. La plupart du temps, les failles de sécurité dans un code viennent d'erreur de programmation ou de négligeance de la part du développeur pour cause de rentabilité ou encore d'incompétence ;)

Des audits de code source ne sont pas à négliger afin d'éviter de se retrouver avec votre site pirater ou encore que votre site serve de relais à des attaques envers d'autres sites internet

RATS (Rough Auditing Tool for Security)

RATS - Rough Auditing Tool for Security - est un outil open-source developper et maintenu par les ingénieurs de Secure Software. RATS est un outil pour scanner les codes sources C, C++, Perl, PHP et Python. Un audit de sécurité du code est effectué afin de détecter les erreurs communes tels que les débordements de mémoire, etc.

RATS permet de détecter des erreurs de sécurité potentielles sur lesquelles le programmeur aura l'occasion de revenir. Une description des problèmes rencontrés, ainsi que des conseils pour remédier à ces erreurs de programmation sont effectués.

Comme son nom l'indique, cet outil n'est qu'un outil d'analyse qui pourra vous retoruner des faux-positifs, ainsi que de ne pas détecter toutes les erreurs de programmation. Un audit de sécurité de votre code d'une façon manuelle est tous de même conseiller. Cet outil n'est qu'une analyse préalable à cet audit complet.

RATS est un logiciel libre. Vous pouvez le copier, le distribuer, et le modifier dans le cadre de la licence "GNU Public License".

Utiliser RATS

Une fois que vous avez télécharger et installer RATS, il ne vous reste plus qu'à le tester.

RATS accepte quelques options d'éxécutions :

usage: rats [-adhilrwxR] [--help] [--database|--db] fichier1 fichier2 ... repertoire

Explication des options :

# -d : spécifier une base de donnée de vulnérabilité alternative
# -h : affiche l'aide d'utilisation
# -i : rapporte les fonctions qui autorise des entrées externes
# -l : force le langage à auditer
# -r : inclus les références qui ne sont pas des appels de fonctions
# -w <1,2,3> : niveau d'alerte (par défault 2)
# -x : ne charge pas la base de donnée des vulnérabilités par défault
# -R : n'autorise pas l'analyse récursive des fichiers audités
# --xml : rapport d'audit au format XML
# --html : rapport d'audit au format HTML
# --follow-symlinks : suit les liens symboliques
# --columns : Affiche la colonne dans laquelle RATS a trouver un problème de sécurité
# --context : Affiche la ligne dans laquelle RATS a trouver un problème de sécurité

Exemple d'utilisation

Nous allons auditer tous les fichiers php d'un répertoire :

rats -l php --columns --context --xml /www/monsite/*.php

Rapport d'audit de RATS :

-------------------------------------------------------------------------------------
Entries in perl database: 33
Entries in python database: 62
Entries in c database: 334
Entries in php database: 55

Analyzing /www/monsite/fichier1.inc.php
Analyzing /www/monsite/fichier2.inc.php

RATS results. Severity: High
Issue: mail
Arguments 1, 2, 4 and 5 of this function may be passed to an external program. (Usually sendmail). Under Windows, they will be passed to a remote email server. If these values are derived from user input, make sure they are properly formatted and contain no unexpected characters or extra data.

    File: /www/monsite/fichier1.inc.php Line:236[0]
    mail($VotreEmail,$subject,$message,$header);


Severity: Medium
Issue: fsockopen
Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source without first verifying that it contains nothing dangerous.


    File: /www/monsite/fichier1.inc.php Line:257[6]
    $url = fsockopen(eregi_replace("http://", "", $adresse), 80);


Inputs detected at the following points


Total lines analyzed: 536
Total time 0.003252 seconds
164821 lines per second
-------------------------------------------------------------------------------------

Comme nous pouvons le voir RATS à détecter 2 failles de sécurité susceptibles d'êtres exploitées par un pirate. Maintenant il ne nous reste plus qu'à sécuriser le tous

RATS est un bon outil d'audit de code, mais comme indiqué en début de documentation, il est évident qu'un audit manuel s'impose en toute circonstance.


Lien(s) Associé(s) :


contentRight


valider