HP Fortify分析结果,system()命令注入

时间:2015-05-08 23:05:10

标签: c++ linux security

我正在尝试编写在linux命令行中调用命令的c ++代码,我正在使用HP Fortify检查代码中的漏洞。熟悉HP Fortify源分析器的人是否可以告诉我是否可以在c ++代码中使用system()linux调用而无需获得HP Fortify的低威胁警告(低:命令注入:语义)?如果我在写出调用程序和/或文件的完整路径时硬编码system()函数的输入,是否还存在命令注入的威胁?我不理解一种更安全的方式来输入它而不是硬编码。我应该忽略system()函数并找到另一种方法从我的c ++代码调用命令到linux命令行吗?

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

1 个答案:

答案 0 :(得分:1)

一句话"否"。

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

但是,如果代码在传递给system()的字符串中连接了用户输入,则数据流分析器应将其作为关键命令注入进行选择。

将低语义发现视为"傻瓜安全" ; - )