使用[Dapper]的项目由Veracode报告为CWE ID 89(SQL命令中使用的特殊元素的不正当中和)

时间:2015-09-14 17:32:32

标签: asp.net .net dapper veracode wce

我们有一个.Net 4.0项目正由Veracode扫描,以获得安全认证。

在静态扫描期间,发现了以下漏洞: SQL命令中使用的特殊元素的中和不正确('SQL注入')(CWE ID 89)详见https://cwe.mitre.org/data/definitions/89.html

报告详细文件&行号似乎是指Dapper:

OurOwnDll.dll dev /.../ dapper net40 / sqlmapper.cs 1138

App_Browsers.dll dev /.../ sqlmapperasync.cs 126

OurOwnDll正在使用Dapper。

App_Browsers.dll我不知道它来自哪里,但似乎与网站项目有关,而且似乎与asp.net的浏览器功能检测有关。

我想知道是否有任何方法可以防止此漏洞。

1 个答案:

答案 0 :(得分:0)

我不熟悉VeraCode,但正如@Kristen Waite Jukowski指出的那样,你的问题可能是因为你的一些查询没有参数化,在这种情况下它们被正确识别为易受SQL注入攻击。

或者,a similar question(与OrmLite有关的同一问题)可能会对此有所了解。与OrmLite类似,由于dapper提供了编写原始SQL查询的工具,可以使用未参数化(例如通过字符串连接)的输入组成,使用它可能被视为漏洞,即使您的特定项目中的每个查询当前都已完全参数化。该问题的答案(在您的情况下可能不可行)是用实体框架替换现有的ORM:

  

在使用VeraCode进行代码读取期间,建议进行适当的修复   是用EntityFramework 6.1替换ServiceStack ORM。

来自该问题的评论:

  

不同之处在于EF,执行上下文实现了IDbCommand   但CreateDataAdapter和其他api可以允许动态sql   已经实现了抛出异常。没有代码路径   允许动态sql而不首先进行过滤的EF   机制类似于OWASP。