Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

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

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) : 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

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 :
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) :

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) : 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) : 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) : Pour plus d'informations sur les attaques d'injection SQL, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) : Pour plus d'informations sur cet outil, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) : 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) :
Propriétés

ID d'article : 954476 - Dernière mise à jour : 06/27/2008 11:50:07 - Révision : 1.1

Microsoft ASP.NET 2.0

  • atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476
Commentaires