pandas python输入导致checkmarx sql_injection/命令注入

rdlzhqv9  于 2022-12-09  发布在  Python
关注(0)|答案(1)|浏览(160)

我们有一个Flask/ML应用程序,它在训练时接受用户输入。在生产时,它跳过接受用户输入,而是从steps.ob文件中读取。
但是,Checkmarks仍将此标识为潜在的SQL注入漏洞。

for i in range(0, n): 
    ele = input("Enter column name (one at a time): ")
    cols_drop.append(ele) # adding the element
X = df.drop(cols_drop,axis='columns')

是否有解决此漏洞的短期解决方案?(在生产中,由于我们提供steps.ob文件,因此它不会接受用户输入,但checkmarx不会考虑存在if/else生产条件)

4si2a6ki

4si2a6ki1#

静态分析不会通过值来执行代码,以查看采用了哪些逻辑分支。在Checkmarx的情况下,它正在进行数据流分析,因此将忽略if/else,并查看从用户交互input到DB API的流。这意味着这是一个肯定的结果。您只需确定它是否可利用,因为(可能)在部署期间使用了补偿控件。
如果报告了SQL注入,则可能是您的代码没有正确执行SQL参数绑定/清理,或者Checkmarx无法识别您用于SQL I/O的API。没有足够的代码来真正判断是否是这种情况,我根据您的问题内容做了一些假设。
我还相当肯定Checkmarx无法识别任何Pandas API,因此无法理解通过steps.obs文件进行的交互式输入。根据文件的放置方式以及防止攻击者潜在修改的方式,这可能是一个误报SQL注入。如果Pandas API被识别,该分析可能会看到文件输入并为您提供另一个SQL注入漏洞。
好消息是这两个问题都可以通过正确的参数绑定来解决。
1.将其标记为不可利用
1.调整分析查询以识别任何源/汇/清理程序
Checkmarx通常可以帮助您优化查询。

相关问题