在可执行文件或.o文件上加强SCA构建 我试图做的是C++编写的二进制代码的静态分析。然而,这个构建需要几个小时——有时甚至超过一天——才能完成

在可执行文件或.o文件上加强SCA构建 我试图做的是C++编写的二进制代码的静态分析。然而,这个构建需要几个小时——有时甚至超过一天——才能完成,c++,fortify,C++,Fortify,为了解决这个问题,我尝试单独构建所有的.o文件,方法是创建一个假的归档文件作为目标。我在这种方法中看到的优点是,代码不属于我们的团队,不需要构建,并且节省了链接时间。当我这样做的时候,我们在构建时间方面看到了巨大的收益 然而,我团队中的一位成员认为,这可能导致误报和误报,因为它忽略了与我们所有权之外的代码的交互。他给出的一个例子是,在API调用到我们所属之外的库之间共享对象。换句话说,我们将无法知道在您的域之外对对象的操作。但是当所有的文件所有者都对他们的代码执行相同的操作时,这不是可以处理的吗

为了解决这个问题,我尝试单独构建所有的.o文件,方法是创建一个假的归档文件作为目标。我在这种方法中看到的优点是,代码不属于我们的团队,不需要构建,并且节省了链接时间。当我这样做的时候,我们在构建时间方面看到了巨大的收益

然而,我团队中的一位成员认为,这可能导致误报和误报,因为它忽略了与我们所有权之外的代码的交互。他给出的一个例子是,在API调用到我们所属之外的库之间共享对象。换句话说,我们将无法知道在您的域之外对对象的操作。但是当所有的文件所有者都对他们的代码执行相同的操作时,这不是可以处理的吗


请告知我的方法是否正确。

您的方法可能会导致误报,但更可能是误报,更糟糕的是,和/或风险评级过低

数据流分析器使用全局过程间污染传播分析来检测(用户输入)和接收器(危险函数调用)之间的数据流

如果数据流分析器找不到接收器,那么分析器将停止跟踪此污染传播并转到另一个,从而丢失漏洞(假阴性)

以下伪代码是PII暴露SQL注入的示例:

public static void main(String args[]) throws Exception {
  ResultSet results = SQLInj(args);
  System.out.println(results.Password);
}

public static ResultSet SQLInj(String args[]) {
  String query = "SELECT * FROM user_data WHERE last_name = '" + args[1] + "'";
  Statement statement = connection.createStatement();
  ResultSet results = statement.executeQuery(query);
}
源是main->args[],接收器是SQLInj->executeQuery()


如果函数SQLInj驻留在未扫描的代码(不是您团队的代码)中,则不会发现SQL注入问题,因为数据流分析器从未找到接收器。语义分析器可以通过查找“密码”一词来发现PII暴露,但置信度要低得多。

您是否在每个构建上都运行SCA?构建的频率是多少?通常情况下,您应该每周扫描一次SCA。嗨,LaJmOn,因为我们每两周有一次sprint,每周运行可能太晚了。因此,我们更喜欢一个较短的周期。更重要的是,我们不希望在进行这些跑步时受到Fortify速度的限制。嗨,LaJmOn,我正试图了解这到底是如何发生的。请帮我理解/指给我看相关文件。这说明够了吗?我也可以告诉你一些如何减少C++扫描时间的想法。我现在明白你的意思了。你能给我一些关于C++扫描时间减少的想法吗?