2015-05-08 194 views
0

我正在尝试编写在linux命令行中调用命令的C++代码,并且我正在使用HP Fortify检查代码中的漏洞。熟悉HP Fortify源码分析器的人能否告诉我是否可以在没有得到HP Fortify的低威胁警告的情况下使用C++代码中的system()linux调用(低:Command Injection:semantic)?如果我在写入程序和/或调用文件的完整路径时硬编码输入到system()函数,是否仍然存在命令注入的威胁?我不明白给它输入比输入硬编码更安全的方法。我应该忽略system()函数并找到另一种方法从我的C++代码调用命令到linux命令行吗?HP Fortify分析结果system()命令注入

编辑:我尝试使用execv()而不是system()来调用一个程序,但它仍然给我使用execv()的命令注入警告。

+0

环境变量,也可以攻击面的一部分,e.g:如弹震漏洞。 – ninjalj

回答

1

总之“否”。

HP Fortify语义分析器可在程序内层级检测函数和API的潜在危险用途。基本上是一个聪明的GREP。所以它基本上只是在代码中查找“system()”和“execv()”。它将它们评为“低”,因为它找不到攻击者可能会影响system()将使用的字符串命令的路径。

但是,如果代码的用户输入连接在传递给system()的字符串中,那么数据流分析器应该将其选为Critical Command Injection。

低语义调查结果“安全傻瓜”的思考;-)