Microsoft-verktyget Source Code Analyzer for SQL Injection kan användas för att hitta säkerhetsproblem i ASP-kod som beror på SQL-injektering

Artikelöversättning Artikelöversättning
Artikel-id: 954476 - Visa produkter som artikeln gäller.
Visa alla | Dölj alla

På den här sidan

INLEDNING

I den här artikeln beskrivs Microsoft-verktyget Source Code Analyzer for SQL Injection. Detta analysverktyg för statisk kod kan användas för att hitta säkerhetsproblem i ASP-kod som beror på SQL-injektering.

Mer Information

Microsoft-verktyget Source Code Analyzer for SQL Injection är ett analysverktyg för statisk kod som används för att hitta säkerhetsproblem i ASP-kod (Active Server Pages) som beror på SQL-injektering. I den här artikeln beskrivs användning av verktyget, varningar som genereras och begränsningar. Mer information finns i Readme-dokumentet för verktyget.

Förutsättningar

Detta kommandoradsverktyg kräver följande program:
  • .NET Framework 3.0

SQL-injekteringsproblem i ASP-kod

Om användardefinierade data från Request.Form- eller Request.Querystring-samlingar i ASP-kod används för att konstruera dynamiska SQL-uttryck utan någon datavalidering, kan en angripare infoga SQL-kommandon i ett SQL-uttryck och sedan missbruka det. Detta kallas ofta ett First Order SQL injection vulnerability (Första ordningens säkerhetsproblem på grund av SQL-injektering).

Om användarindata lagras i en databas med hjälp av en ASP-sida, och dessa användarindata sedan hämtas från databasen och används för att konstruera dynamiska SQL-uttryck på en annan ASP-sida, kan en angripare infoga SQL-kommandon i ett SQL-uttryck och missbruka det. Detta kallas i allmänhet ett Second Order SQL injection vulnerability (Andra ordningens säkerhetsproblem på grund av SQL-injektering).

Dessa säkerhetsproblem reduceras lämpligen med parametriserade SQL-frågor. Mer information om säkerhetsproblem i ASP som beror på SQL-injektering och om olika sätt att reducera dessa säkerhetsproblem finns på följande Microsoft-webbplats:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Microsoft-verktyget Source Code Analyzer for SQL Injection hjälper dig att hitta vissa av dessa problem automatiskt.

Användning

I detta avsnitt beskrivs användning av verktyget.

Syntax

I verktyget används följande syntax:
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

Beskrivning

Verktyget söker efter säkerhetsproblem i ASP-kod som beror på SQL-injektering.

Parameterlista

Dölj tabellenVisa tabellen
ParameterAlternativ Beskrivning
/GlobalAsaPathsökvägVisar sökvägen till filen Global.asa.
/IncludePathssökvägarVisar semikolonavgränsade sökvägar för matchning av filer som ingår med hjälp av virtuella sökvägar.
/inputasp-filVisar den absoluta sökvägen till den ASP-fil som måste analyseras.
/suppress warnings Varningar rapporteras inte.
/nologo Verktygslogotypen visas inte.
/quietTolkningsfel visas inte. När du använder växlarna /nologo och /quiet visas bara varningsmeddelandena.

Exempel

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"

Granska utdata

Verktyget genererar följande varningar:
Dölj tabellenVisa tabellen
VarningBeskrivning
80400Möjligt säkerhetsproblem på grund av SQL-injektering genom data som läses från Request-objektet utan någon indatavalidering. Dessa varningar är med största sannolikhet programfel som måste åtgärdas.
80406Möjligt säkerhetsproblem på grund av SQL-injektering genom data som läses från Request-objektet, där indata överförs genom okända funktionsanrop som kan utföra datavalidering. Om ingen datavalidering utförs i funktionsanropet rör det sig med största sannolikhet om programfel. Annars är det falska positiva resultat.
80403Möjligt säkerhetsproblem på grund av SQL-injektering genom data som kommer från en backend-server. Om data kontrolleras av en slutanvändare genom någon annan webbplats rör det sig med största sannolikhet om programfel. Om data är tillförlitliga är det emellertid kanske inte programfel. Det är ändå lämpligt att parametrisera dessa frågor som en del av en strategi för djupförsvar.
80407Möjligt säkerhetsproblem på grund av SQL-injektering genom data som kommer från en backend-server och överförs genom okända funktionsanrop. Om data kontrolleras av en slutanvändare genom några andra webbplatser, och det inte förekommer någon validering av dessa data, rör det sig med största sannolikhet om programfel.
80420Möjligt säkerhetsproblem på grund av SQL-injektering genom funktionsparametrar. Dessa varningar genereras vid funktionsscope. Om funktionsparametervärdena kommer från betrodda källor är detta därför falska positiva resultat. Om parametervärdena kontrolleras av slutanvändare rör det sig med största sannolikhet om programfel. Du kan använda __sql_pre_validated-anteckningen på funktionsparametrarna för att ta reda på om slutanvändare kan nå denna kod.
80421Möjligt säkerhetsproblem på grund av SQL-injektering genom funktionsparametrar, där funktionsparametrarna överförs genom okända funktionsanrop som kan utföra datavalidering. Du kan använda __sql_pre_validated-anteckningen på funktionsparametrarna och __sql_validate på valideringsfunktionen för att ta reda på om slutanvändare kan nå denna kod.
Av alla de varningar som genereras i verktyget är varning 80400 den som mest sannolikt anger verkliga programfel. ASP-webbutvecklare måste åtgärda dessa programfel med hjälp av parametriserade frågor. Mer information om hur du använder parametriserade SQL-frågor i ASP-kod finns på följande Microsoft-webbplats:
http://msdn.microsoft.com/en-us/library/cc676512.aspx

Begränsningar

Verktyget har följande kända begränsningar:
  • Det förstår bara ASP-kod som är skriven i VBScript. Det analyserar för närvarande inte serverbaserad kod som är skriven i ett annat språk, till exempel Jscript.
  • En ny ASP-tolk har utvecklats i samband med utvecklingen av detta verktyg, men denna tolk täcker kanske inte in alla ASP-konstruktioner. Därför kan det förekomma vissa tolkningsfel.

Referenser

Du kan hämta Microsoft-verktyget Source Code Analyzer for SQL Injection på följande Microsoft-webbplats:
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
Mer information om dokumentation av olika rekommendationer finns på följande Microsoft-webbplats:
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
Mer information om hur man förhindrar SQL-injektering i ASP finns på följande Microsoft-webbplats:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Mer information om SQL-injekteringsangrepp finns på följande Microsoft-webbplats:
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
Mer information om verktyget finns på följande Microsoft-webbplats:
http://blogs.msdn.com/sqlsecurity
På följande Microsoft-webbplats kan du diskutera verktyget i MSDN SQL Security-forumet:
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1

Egenskaper

Artikel-id: 954476 - Senaste granskning: den 27 juni 2008 - Revision: 1.0
Informationen i denna artikel gäller:
  • Microsoft ASP.NET 2.0
Nyckelord: 
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476

Ge feedback

 

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