Documentation : Audit de code avec RATS
Date de publication : 19.7.2004
Date de modification : 9.11.2005
|
|
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 :
|
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.
Contributeur : Eric Romang