Je k dispozici nástroj Microsoft Source Code Analyzer for SQL Injection, který odhalí v kódu ASP zranitelnosti vůči vložení SQL

Překlady článku Překlady článku
ID článku: 954476 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

ÚVOD

Tento článek popisuje nástroj Microsoft Source Code Analyzer for SQL Injection. Pomocí tohoto nástroje pro statickou analýzu kódu lze v kódu ASP odhalit zranitelnosti vůči vložení SQL.

Další informace

Microsoft Source Code Analyzer for SQL Injection je nástroj pro statickou analýzu kódu, který vám pomůže odhalit zranitelnosti vůči vložení SQL v kódu ASP (Active Server Pages). Tento článek popisuje použití nástroje, upozornění generovaná nástrojem a jeho omezení. Další informace naleznete v souboru Readme nástroje.

Požadavky

Tento nástroj příkazového řádku vyžaduje následující software:
  • .NET Framework 3.0

Problémy s vložením SQL v kódu ASP

Pokud jsou uživatelem dodaná data z kolekcí Request.Form nebo Request.Querystring v kódu ASP používána k sestavování dynamických příkazů SQL bez provedení ověření dat, útočník může do sestaveného příkazu SQL vložit vlastní příkazy SQL a zneužít jej. Toto se obecně označuje jako zranitelnost vůči vložení SQL prvního řádu.

Pokud je vstup od uživatele ukládán do databáze pomocí jedné stránky ASP a následně je načítán z databáze a používán k sestavování dynamických příkazů SQL na jiné stránce ASP, útočník může vložit vlastní příkazy SQL do sestaveného příkazu SQL a zneužít jej. Toto se obecně označuje jako zranitelnost vůči vložení SQL druhého řádu.

Nejlepším způsobem, jak minimalizovat tyto hrozby, je používat parametrizované dotazy SQL. Další informace o zranitelnostech vůči vložení SQL v kódu ASP a o metodách, jak tomu předcházet, naleznete na následujícím webu společnosti:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Nástroj Microsoft Source Code Analyzer for SQL Injection vám pomůže najít možné problémy automaticky.

Použití

Tato část popisuje používání nástroje.

Syntaxe

Nástroj používá následující syntaxi:
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=cesta] [/IncludePaths=cesta;..;cesta] /Input=soubor.asp

Popis

Tento nástroj analyzuje kód ASP a hledá zranitelnosti vůči vložení SQL.

Seznam parametrů

Zmenšit tuto tabulkuRozšířit tuto tabulku
Parametr Možnost Popis
/GlobalAsaPathcestaUvádí cestu k souboru Global.asa.
/IncludePathscestyStředníky oddělené cesty pro nalezení souborů zahrnutých pomocí virtuálních cest.
/inputsoubor ASPAbsolutní cesta souboru ASP, který je třeba analyzovat.
/suppress warnings Nejsou hlášena upozornění.
/nologo Nezobrazí se logo nástroje.
/quietNezobrazují se chyby analyzátoru. Když použijete přepínače /nologo a /quiet, zobrazují se pouze upozornění.

Příklady

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"

Práce s výstupem nástroje

Nástroj generuje následující upozornění:
Zmenšit tuto tabulkuRozšířit tuto tabulku
UpozorněníPopis
80400Možná zranitelnost vůči vložení SQL prostřednictvím dat čtených z objektu Request bez ověřování vstupu. Tato upozornění ve většině případů znamenají chybu zabezpečení, kterou je nutné opravit.
80406Možná zranitelnost vůči vložení SQL prostřednictvím dat čtených z objektu Request, kde vstup prochází skrze volání neznámých funkcí, které mohou provádět ověřování dat. Pokud ve volání funkce nedochází k ověřování dat, jde pravděpodobně o chybu zabezpečení. Pokud volání funkce ověřuje data, jde o falešný poplach.
80403Možná zranitelnost vůči vložení SQL prostřednictvím dat pocházejících ze serveru back-end. Pokud jsou tato data řízena konečným uživatelem (prostřednictvím nějakého jiného webu), jde velmi pravděpodobně o chybu zabezpečení. Pokud jsou však tato data důvěryhodná (pocházejí ze zcela důvěryhodného zdroje), nemusí se jednat o chybu. Nicméně v rámci strategie ochrany do hloubky je i tak vhodné tyto dotazy parametrizovat.
80407Možná zranitelnost vůči vložení SQL prostřednictvím dat pocházejících ze serveru back-end a procházejících skrze volání neznámých funkcí. Pokud jsou tato data řízena konečným uživatelem (prostřednictvím nějakého jiného webu) a neprovádí se žádné ověřování těchto dat, jde tu velmi pravděpodobně o chybu zabezpečení.
80420Možná zranitelnost vůči vložení SQL prostřednictvím parametrů funkce. Tato upozornění jsou generována na úrovni funkce. Pokud hodnoty parametrů funkcí pocházejí z důvěryhodného zdroje, jedná se tedy o falešný poplach. Pokud jsou hodnoty parametrů řízeny konečnými uživateli, jde velmi pravděpodobně o chybu zabezpečení. Můžete použít anotaci __sql_pre_validated na parametry funkce, což umožní zjistit, zda koneční uživatelé mohou mít přístup k tomuto kódu.
80421Možná zranitelnost vůči vložení SQL prostřednictvím parametrů funkce, přičemž tyto parametry prochází skrze volání neznámých funkcí, které mohou provádět ověřování dat. Můžete použít anotaci __sql_pre_validated na parametry funkce a anotaci __sql_validate na ověřovací funkci, což umožní zjistit, zda koneční uživatelé mohou mít přístup k tomuto kódu.
Ze všech upozornění generovaných nástrojem je nejzávažnější upozornění 80400, které nejčastěji znamená skutečnou chybu. Vývojáři webu v kódu ASP musí tyto chybu opravit pomocí parametrizovaných dotazů. Další informace o použití parametrizovaných dotazů SQL v kódu ASP naleznete na následujícím webu společnosti Microsoft:
http://msdn.microsoft.com/en-us/library/cc676512.aspx

Omezení

Nástroj má následující známá omezení:
  • Nástroj umí pracovat pouze s kódem ASP napsaným v jazyce VBScript. V současnosti neumí analyzovat kód na straně serveru napsaný v jiných jazycích (například v jazyce Jscript).
  • V rámci procesu vývoje tohoto nástroje byl vyvinut nový analyzátor ASP. Tento analyzátor však nemusí umět zpracovat všechny konstrukty ASP. Mohou být tedy hlášeny chyby analyzátoru.

Odkazy

Nástroj Microsoft Source Code Analyzer for SQL Injection můžete stáhnout na následujícím webu společnosti Microsoft:
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
Další informace dokumentující různé doporučené postupy naleznete na následujícím webu společnosti Microsoft:
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
Další informace o tom, jak zabránit vložení SQL v kódu ASP, naleznete na následujícím webu společnosti Microsoft:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Další informace o útocích pomocí vložení SQL naleznete na následujícím webu společnosti Microsoft:
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
Další informace o popisovaném nástroji naleznete na následujícím webu společnosti Microsoft:
http://blogs.msdn.com/sqlsecurity
Diskusi o nástroji naleznete v síti MSDN ve fóru věnovaném zabezpečení SQL na následujícím webu společnosti Microsoft:
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1

Vlastnosti

ID článku: 954476 - Poslední aktualizace: 27. června 2008 - Revize: 1.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ASP.NET 2.0
Klíčová slova: 
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476

Dejte nám zpětnou vazbu

 

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