我们有一个.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的浏览器功能检测有关。
我想知道是否有任何方法可以防止此漏洞。
答案 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。