Narzędzie Microsoft Source Code Analyzer for SQL Injection do wykrywania zagrożeń iniekcją SQL w kodzie ASP jest dostępne

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 954476 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

WPROWADZENIE

W artykule opisano narzędzie Microsoft Source Code Analyzer for SQL Injection. Tego narzędzia do statycznej analizy kodu można używać do wykrywania zagrożeń iniekcją SQL w kodzie ASP.

Więcej informacji

Microsoft Source Code Analyzer for SQL Injection to narzędzie do statycznej analizy kodu ułatwiające wykrycie zagrożeń iniekcją SQL w kodzie Active Server Pages (ASP). W artykule opisano sposób korzystania z narzędzia, generowane przez nie ostrzeżenia, a także ograniczenia narzędzia. Więcej informacji można znaleźć w dokumencie Readme narzędzia.

Wymagania wstępne

To narzędzie wiersza polecenia wymaga następującego oprogramowania:
  • .NET Framework 3.0

Problemy związane z iniekcją SQL w kodzie ASP

Jeśli dane dostarczone przez użytkownika z kolekcji Request.Form lub Request.Querystring w kodzie ASP są używane do konstruowania dynamicznych instrukcji SQL, a poprawność danych nie jest sprawdzana, osoba atakująca może wprowadzić polecenia SQL do instrukcji SQL, a następnie wykorzystać je w szkodliwy sposób. Problem ten określa się jako zagrożenie iniekcją SQL pierwszego rzędu.

Jeśli dane wprowadzone przez użytkownika są przechowywane w bazie danych przy użyciu jednej strony ASP, a następnie zostaną pobrane z bazy danych i zastosowane do konstruowania dynamicznych instrukcji SQL na innej stronie ASP, osoba atakująca może wprowadzić polecenia SQL do instrukcji SQL, a następnie wykorzystać je w szkodliwy sposób. Problem ten określa się jako zagrożenie iniekcją SQL drugiego rzędu.

W celu zmniejszenia poziomu zagrożenia zaleca się stosowanie sparametryzowanych kwerend SQL. Aby uzyskać więcej informacji na temat zagrożeń iniekcją SQL w kodzie ASP oraz metod ich ograniczania, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Narzędzie Microsoft Source Code Analyzer for SQL Injection ułatwia automatyczne wykrywanie niektórych zagrożeń tego typu.

Użycie

W tej sekcji opisano sposób korzystania z narzędzia.

Składnia

W narzędziu stosowana jest następująca składnia:
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

Opis

Narzędzie analizuje kod ASP pod kątem zagrożeń iniekcją SQL.

Lista parametrów:

Zwiń tę tabelęRozwiń tę tabelę
Parametr Opcja Opis
/GlobalAsaPathścieżkaWyświetla ścieżkę pliku Global.asa.
/IncludePathsścieżkiWyświetla rozdzielone średnikiem ścieżki w celu przeanalizowania plików dołączonych za pomocą ścieżek wirtualnych.
/inputplik aspWyświetla ścieżkę bezwzględną pliku ASP, który należy przeanalizować.
/suppress warnings Ostrzeżenia nie są wyświetlane.
/nologo Logo narzędzia nie jest wyświetlane.
/quietBłędy analizy nie są wyświetlane. W przypadku użycia przełączników /nologo i /quiet wyświetlane są tylko komunikaty ostrzegawcze.

Przykłady

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"

Analiza danych wyjściowych

Narzędzie generuje następujące ostrzeżenia:
Zwiń tę tabelęRozwiń tę tabelę
OstrzeżenieOpis
80400Możliwe zagrożenie iniekcją SQL przez dane odczytywane z obiektu Request bez sprawdzania danych wejściowych. Takie ostrzeżenie najprawdopodobniej wskazuje usterki, które muszą być naprawione.
80406Możliwe zagrożenie iniekcją SQL przez dane odczytywane z obiektu Request, przy czym dane wejściowe są poddawane nieznanym wywołaniom funkcji, które mogą sprawdzać ich poprawność. Jeśli dane nie są sprawdzane w ramach wywołania funkcji, najprawdopodobniej są to usterki. W przeciwnym razie są to wyniki fałszywie dodatnie.
80403Możliwe zagrożenie iniekcją SQL przez dane pochodzące z serwera wewnętrznej bazy danych. Jeśli dane te są kontrolowane przez użytkownika końcowego za pośrednictwem innej witryny sieci Web, najprawdopodobniej są to usterki. Jeśli jednak są to zaufane dane, ostrzeżenia te nie muszą wskazywać usterek. Mimo to warto sparametryzować te kwerendy w ramach strategii wielostronnej obrony.
80407Możliwe zagrożenie iniekcją SQL przez dane pochodzące z serwera wewnętrznej bazy danych i poddawane nieznanym wywołaniom funkcji. Jeśli dane te są kontrolowane przez użytkownika końcowego za pośrednictwem innych witryn sieci Web, a ich poprawność nie jest sprawdzana, najprawdopodobniej są to usterki.
80420Możliwe zagrożenie iniekcją SQL przez parametry funkcji. Ostrzeżenia te są generowane na poziomie funkcji. W związku z powyższym, jeśli wartości parametrów funkcji pochodzą z zaufanych źródeł, są to wyniki fałszywie dodatnie. Jeśli wartości parametrów są kontrolowane przez użytkowników końcowych, najprawdopodobniej są to usterki. Aby sprawdzić, czy użytkownicy końcowi mogą uzyskać dostęp do tego kodu, do parametrów funkcji można użyć adnotacji __sql_pre_validated.
80421Możliwe zagrożenie iniekcją SQL przez parametry funkcji, przy czym parametry te są poddawane nieznanym wywołaniom funkcji, które mogą sprawdzać ich poprawność. Aby sprawdzić, czy użytkownicy końcowi mogą uzyskać dostęp do tego kodu, do parametrów funkcji można użyć adnotacji __sql_pre_validated, a do funkcji sprawdzania adnotacji __sql_validate.
Spośród wszystkich ostrzeżeń generowanych przez narzędzie ostrzeżenie 80400 najczęściej wskazuje rzeczywiste usterki. Deweloperzy witryn sieci Web używający kodu ASP muszą naprawiać te usterki za pomocą sparametryzowanych kwerend. Aby uzyskać więcej informacji o sposobie używania sparametryzowanych kwerend SQL w kodzie ASP, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://msdn.microsoft.com/en-us/library/cc676512.aspx

Ograniczenia

Narzędzie ma następujące znane ograniczenia:
  • Narzędzie odczytuje tylko kod ASP zapisany za pomocą skryptu VBScript. Aktualnie nie analizuje ono kodu po stronie serwera zapisanego w innych językach, takich jak Jscript.
  • W trakcie pracy nad tym narzędziem opracowano nowy parser kodu ASP. Parser ten może jednak nie analizować wszystkich konstrukcji kodu ASP. Dlatego mogą występować pewne błędy analizy.

Materiały referencyjne

Aby pobrać narzędzie Microsoft Source Code Analyzer for SQL Injection, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
Aby uzyskać więcej informacji o dokumentacji zawierającej najważniejsze wskazówki, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
Aby uzyskać więcej informacji o zapobieganiu iniekcji SQL w kodzie ASP, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://msdn.microsoft.com/en-us/library/cc676512.aspx
Aby uzyskać więcej informacji o atakach polegających na iniekcji SQL, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
Aby uzyskać więcej informacji o narzędziu, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://blogs.msdn.com/sqlsecurity
Aby wziąć udział w dyskusji na temat narzędzia na forum MSDN dotyczącym zabezpieczeń SQL, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1

Właściwości

Numer ID artykułu: 954476 - Ostatnia weryfikacja: 26 czerwca 2008 - Weryfikacja: 1.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft ASP.NET 2.0
Słowa kluczowe: 
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476

Przekaż opinię

 

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