我面临与强化扫描相关的非常不寻常的错误。它从昨天晚上开始,我一直在努力解决它,因为它影响了整个团队的工作。我在Jenkins控制台中收到以下错误消息。
我尝试通过在Jenkins管道代码中使用以下参数来增加内存和Java堆大小来进行故障排除,但这样做也没有帮助。
fortifyMemory: '-Xmx6G -Xms2400M -Xss48M'
。
我尝试使用排除更多文件
sourceExclusions: 'src/main/resources/**/*.*
,
但这也没有用。
我在线发现可能使用并行处理并将java版本类型更改为64位-64可能解决了该问题,但由于没有太多可用信息,因此无法在Jenkins管道中正确配置它。
如果有人知道如何在下面的管道代码中传递这两个标志,或者是否有其他解决方案,请告诉我。
stage('Fortify Scan') {
agent {
label 'docker-fortify-slave'
}
steps {
unstash 'build'
fortifyscanjava([
useExternalDependencyDirectory: false,
buildVersion: "${TAG_VAL}",
fortifyCredentialsId: "fortify-credentials",
fortifyJavaVersion: '1.8',
sourceDirectory: "${env.WORKSPACE}/dist",
sourceExclusions: '',
criticalThreshold: 0,
fortifyMemory: '-Xmx32G -Xms4800M -Xss196M',
highThreshold: 0,
mediumThreshold: 1000,
lowThreshold: 1000,
fortifyVersion: '17.20',
failBuildAfterThresholdPassed: true,
archiveReports: true,
uploadScan: false,
sourceAnalyzerArgs: '',
onlyNewIssues: true,
outputFormatHtml: true,
additionalIssueFilters: 'analysis:!Not an Issue'
])
}
}
答案 0 :(得分:1)
Fortify SCA占用大量内存,无法扫描中型到大型应用程序。
在您的示例的第13行附近,删除“ fortifyMemory:'-Xmx1G -Xms600M -Xss24M -mt'”。
围绕第17行,如果可能,将内存增加到“ -Xmx16G”(或任何可能的值)。基本上,要继续为问题添加更多的内存,直到Fortify发出的“内存不足”警告/错误消失为止。
还...
可能发生的情况的说明
Fortify SCA的“ -mt”选项意味着您想要启用并行分析模式,该模式旨在通过创建多个从属进程来协助扫描,从而尝试加快源代码的扫描速度。使用“ -mt”,Fortify将为主机上的每个cpu内核自动创建1个从属进程,由于使用了“ -Xmx1GB”,Fortify将为每个进程分配1GB的内存。因此,您看到的错误可能是因为一个或多个从属设备的内存不足。
结论
对于此初始扫描,请勿使用并行分析模式。这就是我们在您的示例中删除第13行的原因。此外,您在第17行再次具有重复的内存配置设置。
成功完成扫描后,请尝试拨回内存量,然后尝试使用并行分析模式进行播放。
当使用并行分析模式时,用于计算使用“ -Xmx”分配多少内存的公式可能是:
(-2GB)/
答案 1 :(得分:0)
在您的情况下,最好使用CloudScan。
“翻译阶段在构建机器上完成,该阶段不需要处理器和时间。在翻译完成后,CloudScan会生成一个程序包,然后将其移动到分布式机器(传感器)云中以进行扫描。为了释放构建机器,此过程使您可以轻松地向云中添加更多资源并根据需要扩展系统,而不必中断构建过程。Fortify软件安全中心可以指导CloudScan直接将FPR文件输出到服务器。
答案 2 :(得分:0)
在Fortify扫描过程中可能会发生System.OutOfMemoryException错误。
对于.net文件,我们使用一个名为4gb_patch.exe的小工具解决了在Fortify扫描阶段使用的dotnet-translator.exe文件补丁的问题。该工具修补x86可执行文件,以使它们在x64平台上具有4 GB的虚拟内存(而不是2 GB)。您可以从https://ntcore.com/?page_id=371下载该工具。
dotnet-translator.exe文件可以在以下位置找到: C:\ Program Files \ HPE_Security \ Fortify_SCA_and_Apps_xx.xx \ Core \ private-bin \ sca \ dotnet-translator.exe
当然,您需要使用Fortify SCA版本更改XX.xx。 ;)