【问题标题】:Project using [Dapper] gets reported by Veracode as CWE ID 89 (Improper Neutralization of Special Elements used in an SQL Command)Veracode 将使用 [Dapper] 的项目报告为 CWE ID 89(SQL 命令中使用的特殊元素的不当中和)
【发布时间】:2015-09-14 17:32:31
【问题描述】:

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

在静态扫描期间发现了以下漏洞: SQL 命令中使用的特殊元素的不当中和(“SQL 注入”)(CWE ID 89)请参阅https://cwe.mitre.org/data/definitions/89.html 的详细信息

似乎引用 Dapper 的报告详细信息文件和行号:

OurOwnDll.dll 开发/.../dapper net40/sqlmapper.cs 1138

App_Browsers.dll 开发/.../sqlmapperasync.cs 126

OurOwnDll 正在使用 Dapper。

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

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

【问题讨论】:

标签: asp.net .net dapper veracode wce


【解决方案1】:

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

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

在使用 VeraCode 读取代码期间,建议的适当补救措施 是用 EntityFramework 6.1 替换 ServiceStack ORM。

来自该问题的 cmets:

区别在于EF,执行上下文实现IDbCommand 但是 CreateDataAdapter 和其他可以允许动态 sql 的 api 已实现抛出异常。中没有代码路径 允许动态 sql 而无需先经过过滤的 EF 类似于 OWASP 的机制。

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 2019-02-17
    • 2017-05-14
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多