L'outil Analyseur de code source Microsoft pour l'injection SQL est disponible pour rechercher les vulnérabilités d'injection SQL dans un code ASP

Traductions disponibles Traductions disponibles
Numéro d'article: 954476 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

INTRODUCTION

Cet article décrit l'outil Analyseur de code source Microsoft pour l'injection SQL (Microsoft Source Code Analyzer for SQL Injection). Vous pouvez utiliser cet outil d'analyse de code statique pour identifier les vulnérabilités d'injection SQL dans un code ASP.

Plus d'informations

L'outil Analyseur de code source Microsoft pour l'injection SQL est un outil d'analyse de code statique qui vous permet de rechercher les vulnérabilités d'injection SQL dans un code ASP (Active Server Pages). Cet article décrit comment utiliser l'outil, les avertissements générés par cet outil ainsi que ses limitations. Consultez le fichier Lisezmoi de l'outil pour plus d'informations.

Configuration requise

Cet outil de ligne de commande nécessite le logiciel suivant :
  • .NET Framework 3.0

Problèmes d'injection SQL dans un code ASP

Si des données fournies par l'utilisateur provenant des collections Request.Form ou Request.Querystring dans un code ASP sont utilisées pour construire des instructions SQL dynamiques sans aucune validation des données, un utilisateur malveillant peut injecter des commandes SQL dans une instruction SQL et l'utiliser à des fins mal intentionnées. Ce problème est généralement connu sous le nom de vulnérabilité d'injection SQL de premier ordre.

Si des entrées utilisateur sont stockées dans une base de données à l'aide d'une page ASP, puis qu'elles sont récupérées de la base de données et utilisées pour construire des instructions SQL dynamiques sur une autre page ASP, un utilisateur malveillant peut injecter des commandes SQL dans une instruction SQL, puis l'utiliser à des fins mal intentionnées. Ce problème est généralement connu sous le nom de vulnérabilité d'injection SQL de deuxième ordre.

Pour réduire ces vulnérabilités, il est recommandé d'utiliser des requêtes SQL paramétrées. Pour plus d'informations sur les vulnérabilités d'injection SQL dans ASP et sur les méthodes permettant de réduire ces vulnérabilités, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://msdn.microsoft.com/fr-fr/library/cc676512.aspx
L'outil Analyseur de code source Microsoft pour l'injection SQL vous permet d'identifier certains de ces problèmes automatiquement.

Utilisation

Cette section décrit comment utiliser l'outil.

Syntaxe

L'outil utilise la syntaxe suivante :
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=chemin] [/IncludePaths=chemin;..;chemin] /Input=fichier.asp

Description

L'outil analyse le code ASP pour détecter les vulnérabilités d'injection SQL.

Liste de paramètres

Réduire ce tableauAgrandir ce tableau
Paramètre Option Description
/GlobalAsaPathcheminAffiche le chemin d'accès au fichier Global.asa.
/IncludePathscheminsAffiche des chemins d'accès séparés par des points-virgules pour résoudre les fichiers inclus à l'aide de chemins virtuels.
/inputfichier aspAffiche le chemin d'accès absolu du fichier ASP à analyser.
/suppress warnings Les avertissements ne sont pas signalés.
/nologo Le logo de l'outil n'est pas affiché.
/quietLes erreurs d'analyse ne sont pas affichées. Lorsque vous utilisez les commutateurs /nologo et /quiet, seuls les messages d'avertissement sont affichés.

Exemples

MSSCASI_ASP /input="c:\source\logon.asp"
MSSCASI_ASP /GlobalAsaPath="C:\source" /input="c:\source\webitems\display.asp"
MSSCASI_ASP /GlobalAsaPath="C:\source" /input="c:\source\webitems\display.asp" /IncludePaths="C:\virtualdirectory1;C:\virtualdirectory2"
MSSCASI_ASP /input="c:\source\webitems\display.asp" /suppress="80406;80407"

Examen du résultat

L'outil génère les avertissements suivants :
Réduire ce tableauAgrandir ce tableau
AvertissementDescription
80400Vulnérabilité possible d'injection SQL par le biais de données lues de l'objet Requête sans validation de l'entrée. Ces avertissements sont très probablement des bogues qui doivent être corrigés.
80406Vulnérabilité possible d'injection SQL par le biais de données lues de l'objet Requête lorsque l'entrée est passée par des appels de fonctions inconnues pouvant ou non effectuer la validation des données. Si aucune validation des données n'est effectuée dans l'appel de fonction, il s'agit très probablement de bogues. Dans le cas contraire, ces avertissements sont des faux positifs.
80403Vulnérabilité possible d'injection SQL par le biais de données provenant d'un serveur principal. Si les données sont contrôlées par un utilisateur final par le biais d'un autre site Web, il s'agit très probablement de bogues. Toutefois, si les données sont approuvées, ces avertissements peuvent ne pas être des bogues. Il est toujours recommandé de paramétrer ces requêtes dans le cadre d'une stratégie de défense en profondeur.
80407Vulnérabilité possible d'injection SQL par le biais de données provenant d'un serveur principal et passant par des appels de fonctions inconnues. Si les données sont contrôlées par un utilisateur final par le biais d'autres sites Web et qu'aucune validation n'est effectuée sur ces données, il s'agit très probablement de bogues.
80420Vulnérabilité possible d'injection SQL par le biais de paramètres de fonctions. Ces avertissements sont générés dans la portée de la fonction. Par conséquent, si les valeurs des paramètres de fonctions proviennent de sources approuvées, il s'agit de faux positifs. Si les valeurs des paramètres sont contrôlées par des utilisateurs finaux, il s'agit très probablement de bogues. Vous pouvez utiliser l'annotation __sql_pre_validated sur les paramètres de fonctions pour détecter si des utilisateurs finaux peuvent avoir accès à ce code.
80421Vulnérabilité possible d'injection SQL par le biais de paramètres de fonctions passés par des appels de fonctions inconnues pouvant ou non effectuer la validation des données. Vous pouvez utiliser l'annotation __sql_pre_validated sur les paramètres de fonctions et __sql_validate sur la fonction de validation pour détecter si des utilisateurs finaux peuvent avoir accès à ce code.
De tous les avertissements générés par l'outil, l'avertissement 80400 indique le plus probablement des bogues réels. Les développeurs Web ASP doivent résoudre ces bogues en utilisant des requêtes paramétrées. Pour plus d'informations sur la façon d'utiliser des requêtes SQL paramétrées dans du code ASP, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://msdn.microsoft.com/fr-fr/library/cc676512.aspx

Limitations

Cet outil est soumis aux limitations suivantes :
  • L'outil gère uniquement le code ASP écrit en VBScript. À l'heure actuelle, il n'analyse pas le code côté serveur écrit en d'autres langages, tels que Jscript.
  • Un nouvel analyseur ASP a été développé dans le cadre du processus de développement de cet outil. Toutefois, cet analyseur peut ne pas couvrir toutes les constructions ASP et vous pouvez donc rencontrer des erreurs d'analyse.

Références

Pour télécharger l'outil Analyseur de code source Microsoft pour l'injection SQL, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
Pour plus d'informations sur diverses documentations sur les méthodes recommandées, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
Pour plus d'informations sur la façon d'empêcher les injections SQL dans un code ASP, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://msdn.microsoft.com/fr-fr/library/cc676512.aspx
Pour plus d'informations sur les attaques d'injection SQL, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
Pour plus d'informations sur cet outil, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://blogs.msdn.com/sqlsecurity
Pour consulter des discussions sur cet outil dans le forum MSDN SQL Security, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1

Propriétés

Numéro d'article: 954476 - Dernière mise à jour: vendredi 27 juin 2008 - Version: 1.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 2.0
Mots-clés : 
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com