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 工具是一种静态代码分析工具,可帮助查找 Active Server Page (ASP) 代码中的 SQL 注入漏洞。本文介绍此工具的使用方法、生成的警告及其局限性。有关更多信息,请参阅工具自述文档。

先决条件

此命令行工具需要以下软件:
  • .NET Framework 3.0

ASP 代码中的 SQL 注入问题

如果在未经任何数据验证的情况下使用 ASP 代码中的“Request.Form”或“Request.Querystring”集合中用户提供的数据构造动态 SQL 语句,攻击者可能会将 SQL 命令注入 SQL 语句,然后滥用此语句。此问题通常称为一级 SQL 注入漏洞

如果使用一个 ASP 页面将用户输入的数据存储在数据库中,然后在数据库中检索并使用用户输入的数据在其他 ASP 页面中构造动态 SQL 语句,攻击者可能会将 SQL 命令注入 SQL 语句,然后滥用此语句。 此问题通常称为二级 SQL 注入漏洞

为了减少这些漏洞,最好使用参数化的 SQL 查询。有关 ASP 中的 SQL 注入漏洞以及减少这些漏洞的方法的更多信息,请访问下面的 Microsoft 网站:
http://msdn.microsoft.com/zh-cn/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在未经任何输入验证的情况下,从请求对象读取的数据中可能存在 SQL 注入漏洞。这些警告很可能是必须修补的 bug。
80406在通过某些可能执行数据验证的未知函数调用来传递输入数据的情况下,从请求对象读取的数据中可能存在 SQL 注入漏洞。如果函数调用内部未进行数据验证,这些警告很可能是 bug。否则,这些警告为误报。
80403来自于后端服务器的数据中可能存在 SQL 注入漏洞。如果这些数据是由最终用户通过其他网站控制,则这些警告很可能是 bug。但是,如果这些数据可信度很高,则这些警告可能不是 bug。作为深度防御策略的一部分,实行查询的参数化不失为一种好做法。
80407来自于后端服务器并通过某些未知函数调用的数据中可能存在 SQL 注入漏洞。如果这些数据是由最终用户通过其他网站控制,并且未对这些数据进行数据验证,则这些警告很可能是 bug。
80420函数参数中可能存在 SQL 注入漏洞。这些警告是在函数作用域生成的。因此,如果这些函数参数值的来源可信,则这些警告为误报。如果这些参数值是由最终用户控制,则这些警告很可能是 bug。您可以对这些函数参数使用 __sql_pre_validated 批注来检测最终用户是否能够访问此代码。
80421在通过某些可能执行数据验证的未知函数调用传递的函数参数中可能存在 SQL 注入漏洞。您可以对这些函数参数使用 __sql_pre_validated 批注并对验证函数使用 __sql_validate 来检测最终用户是否能够访问此代码。
在此工具生成的所有警告中,警告 80400 最可能指示实际 bug。ASP Web 开发人员必须使用参数化查询修补这些 bug。有关如何在 ASP 代码中使用参数化 SQL 查询的更多信息,请访问下面的 Microsoft 网站:
http://msdn.microsoft.com/zh-cn/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-cn/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
若要在 MSDN SQL 安全论坛中讨论此工具,请访问下面的 Microsoft 网站:
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