问题描述
一般: 要扫描的代码是 .java 文件 (Java EE),依赖项作为单独的 JAR 提供
目标: 我如何为 checkmarx 提供所有必需的 Java 依赖项来构建项目以获得尽可能健全和完成扫描?我对检测依赖项本身的问题不感兴趣,也不希望这些问题包含在 checkmarx 报告中。
为什么: 没有依赖关系的扫描没有返回任何结果,这对于代码库的大小和复杂性来说有点不寻常。我在本地拥有所有依赖项,可以在我的 IDE(想法)中构建项目。当我压缩文件夹并通过 Web 界面将其上传以进行新扫描时,我认为无法告诉 Chekmarx 有关依赖项(CLI 和 maven 插件只有在扫描中包含或排除文件和目录的选项)。我没有使用 maven checkmarx 插件,因为它需要 Checkmarx 扫描仪无法访问的资源(包括依赖项)。
我目前正在探索的方法是将依赖项分解到项目源文件夹中,以便解析导入并且 Checkmarx 可以构建项目。然而,一些依赖 JAR 包含 java 源文件,其他只包含类文件,而且 Checkmarx CxSAST 看起来不支持扫描类文件(也不支持 JAR)。 如果我可以扫描代码,我可以通过在 Web 界面中标记它们并将它们从报告中排除来过滤掉在依赖项中发现的任何问题。
解决方法
如果它们不是您维护的代码,则您不需要静态分析的依赖项。如果您没有看到结果,则可能是您的代码中没有识别出源或接收器。
下载扫描日志并在接近尾声时查找名称类似于 Find_Interactive_Inputs
和 Find_Interactive_Outputs
的查询的结果数量。如果其中一个或两个的计数为零,则您正在扫描的代码没有可识别的源/接收器。这对于类库 jar 或如果您使用 SAST 无法识别的框架并不少见。如果确实有找到它们的模式,通常可以通过 CxQL 调整查询以识别源/接收器。