Microsoft Source Code Analyzer for SQL Injection 工具現已提供下載,可用來尋找 ASP 程式碼中的 SQL 隱碼攻擊弱點

文章翻譯 文章翻譯
文章編號: 954476 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

簡介

本文將介紹 Microsoft Source Code Analyzer for SQL Injection 工具。您可以使用這個靜態程式碼分析工具來尋找 ASP 程式碼中的 SQL 隱碼攻擊弱點。

其他相關資訊

Microsoft Source Code Analyzer for SQL Injection 工具是一個靜態程式碼分析工具,可幫助您尋找動態伺服器網頁 (ASP) 程式碼中的 SQL 隱碼攻擊弱點。本文將說明這個工具的使用方法,工具所產生的警告以及工具本身的限制。如需詳細資訊,請參閱工具的讀我檔案。

先決條件

這個命令列工具需要下列軟體:
  • .NET Framework 3.0

ASP 程式碼中的 SQL 隱碼攻擊問題

如果 ASP 程式碼中,來自 Request.FormRequest.Querystring 集合並由使用者提供的資料是用來建構動態 SQL 陳述式,卻未經任何資料驗證程序,攻擊者就可以將 SQL 命令植入 SQL 陳述式,進而任意濫用。這就是一般所謂的 一階 SQL 隱碼攻擊弱點

如果使用者輸入的資料是使用 ASP 網頁儲存在資料庫中,之後從資料庫中擷取出來用於建構另一個 ASP 網頁中的 SQL 陳述式,攻擊者就可以將 SQL 命令植入 SQL 陳述式,進而任意濫用。這就是一般所謂的 二階 SQL 隱碼攻擊弱點

如果要減少弱點的數量,最好的方法就是使用參數化的 SQL 查詢。如需關於 ASP 中的 SQL 隱碼攻擊弱點以及減少弱點數量之方法的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn.microsoft.com/zh-tw/library/cc676512(en-us).aspx
Microsoft Source Code Analyzer for SQL Injection 工具能自動幫助您尋找這些問題。

用法

本節將說明這個工具的使用方法。

語法

這個工具使用下列語法:
msscasi_asp.exe [/nologo] [/quiet] [/suppress=num;..;num] [/GlobalAsaPath=path] [/IncludePaths=path;..;path] /Input=file.asp

描述

這個工具會分析 ASP 程式碼,並找出其中的 SQL 隱碼攻擊弱點。

參數清單

摺疊此表格展開此表格
參數選項 描述
/GlobalAsaPath路徑顯示 Global.asa 檔案的路徑。
/IncludePaths多個路徑顯示用來解析使用虛擬路徑包含在內的檔案,以分號分隔。
/inputasp 檔案顯示必須接受分析之 ASP 檔案的絕對路徑。
/suppress warnings 不回報警告訊息。
/nologo 不顯示工具標誌。
/quiet不顯示剖析錯誤訊息。當您使用 /nologo/quiet 參數時,只有警告訊息會顯示。

範例

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"

檢視輸出

這個工具會產生下列警告:
摺疊此表格展開此表格
警告描述
80400從 Request 物件讀取但未經任何輸入驗證的資料,可能存在 SQL 隱碼攻擊弱點。這些警告極有可能是必須修正的錯誤。
80406從 Request 物件讀取且其輸入是透過可能會執行資料驗證之未知函式呼叫傳送的資料,可能存在 SQL 隱碼攻擊弱點。如果函式呼叫中並未執行資料驗證,這些警告極有可能是錯誤。相反地,這些警告就是誤判。
80403來自後端伺服器的資料可能存在 SQL 隱碼攻擊弱點。如果資料是由使用者透過其他網站控制的,這些警告極有可能是錯誤。但如果是受信任的資料,這些警告就可能不是錯誤。從深度防禦策略的角度看來,將這些查詢參數化仍然是相當好的做法。
80407來自後端伺服器且透過未知函式呼叫傳送的資料可能存在 SQL 隱碼攻擊弱點。如果資料是由使用者透過其他網站控制的,而且如果並未針對此資料執行資料驗證,這些警告極有可能是錯誤。
80420函式參數可能存在 SQL 隱碼攻擊弱點。這些警告是在函式範圍產生的。因此,如果函式參數值是來自受信任的來源,這些警告就是誤判。如果參數值是由使用者控制的,這些警告極有可能是錯誤。您可以在函式參數上使用 __sql_pre_validated 註解,藉以偵測使用者是否可以取得這份程式碼。
80421透過可能會執行資料驗證之未知函式呼叫傳送的函式參數可能存在 SQL 隱碼攻擊弱點。您可以在函式參數上使用 __sql_pre_validated 註解並且在驗證函式上使用 __sql_validate,藉以偵測使用者是否可以取得這份程式碼。
由工具產生的所有警告中,80400 是最有可能反映實際錯誤的警告。ASP Web 開發人員必須使用參數化查詢修正這些錯誤。如需關於在 ASP 程式碼中使用參數化 SQL 查詢之方法的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn.microsoft.com/zh-tw/library/cc676512(en-us).aspx

限制

這個工具有下列已知限制:
  • 這個工具只了解以 VBScript 撰寫的 ASP 程式碼,目前無法分析以其他語言撰寫的伺服器端程式碼,例如 Jscript。
  • 在工具的開發過程中,我們開發了新的 ASP 剖析器。不過,這個剖析器無法涵蓋所有的 ASP 建構。因此,您可能會看到一些剖析錯誤。

?考

如果要下載 Microsoft Source Code Analyzer for SQL Injection 工具,請造訪下列 Microsoft 網站:
http://www.microsoft.com/downloads/details.aspx?FamilyId=58A7C46E-A599-4FCB-9AB4-A4334146B6BA
如需各種最佳做法文件的詳細資訊,請造訪下列 Microsoft 網站:
http://blogs.technet.com/swi/archive/2008/05/29/sql-injection-attack.aspx
如需防範 ASP 受到 SQL 隱碼攻擊的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn.microsoft.com/zh-tw/library/cc676512(en-us).aspx
如需有關 SQL 隱碼攻擊的詳細資訊,請造訪下列 Microsoft 網站:
http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx
如需有關這個工具的詳細資訊,請造訪下列 Microsoft 網站:
http://blogs.msdn.com/sqlsecurity
請造訪下列 Microsoft 網站,在 MSDN SQL Security 論壇中進行這個工具的相關討論:
http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=92&SiteID=1

屬性

文章編號: 954476 - 上次校閱: 2008年6月27日 - 版次: 1.1
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 2.0
關鍵字:?
atdownload kbexpertiseadvanced kbcode kbexpertiseinter kbinfo kbsecadvisory kbsecurity kbsecvulnerability KB954476
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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