Fortify软件
强化静态代码分析器
使软件更快地生产
如何修正HP Fortify SCA报告中的弱点?
HP Fortify SCA,Lucent Sky AVM以及法规遵循
如果你的组织的法规遵循要求要修正HP Fortify SCA找到的所有结果(或是符合特定条件的结果,例如严重和高风险),Lucent Sky AVM可以被调整来找一一的结果,并提供更多的功能 - 修正多达90%的弱点。
有效果的报告
许多静态程序码扫描工具是由资讯安全专家所设计来给其他的资讯安全专家使用。因此,它们需要人士操作,而且产出的报告和结果难以实际帮助开发者。Lucent Sky AVM提供为开发提供分析结果以及即时修复(能够直接修正如跨站脚本和SQL注入等常见弱点的程式码片段),让不是资讯安全专家的使用者能够使用强化程式码的安全。
对于需要法规遵循报告的企业来说,Lucent Sky AVM能协助开发与资讯安全团队通过HP Fortify SCA的检测并减少误报带来的困扰,同时大幅地降低强化应用程序安全所需要的时间和精力。进一步了解Lucent Sky AVM和静态程序码扫描工具报告的差别,请下载报告比较表。
修正HP Fortify SCA报告中的弱点可以轻松快速
申请测试来亲自体验Lucent Sky AVM。想知道Lucent Sky AVM可以如何在你的环境中和HP Fortify SCA共享,别再等了!
Fortify软件
强化静态代码分析器
使软件更快地生产
如何解决Fortify报告的扫描问题
已经注意到以下错误消息,但是软件保障计划办公室还没有关于如何解决这些问题的指导。建议尝试使用以下步骤解决这些问题:
生成日志文件并查看它以获取有关该问题的更多信息
打开支持票帮助
联系Fortify技术支持(fortifytechsupport@)寻求帮助
如果这些步骤无法解决问题,请将您与Fortify技术支持部门的通讯连同V&V安全代码审查资料一起提供,并在准备报告时将其纳入考量
请注意,这不是错误消息的完整列表,并将更多地变得更加广泛:
错误代码
错误信息
笔记
1意外的异常:高阶分析不适用
101文件。 。 。没有找到N / A
1002,1003解析文件N / A时出现意外的异常
1005数据流分析期间的意外异常N / A
1009构建调用图N / A时出现意外异常
1038初始分析阶段N / A中出现意外异常
1142在内部存储器管理期间发生意外错误。扫描将继续,但内存可能会迅速耗尽,扫描结果可能不完整。 N / A
1202无法解析符号。 。 。 N / A
1207配置文件。 。 。无法找到网络应用程序N / A
1211无法解析类型N / A
1213无法解析字段N / A
1216无法找到导入(?)N / A
1227尝试加载类路径存档时发生异常...文件可能已损坏或无法读取。 N / A
1228属性文件。 。 。以连续标记结束。该文件可能已损坏。 N / A
1232格式错误或IO异常阻止了类文件。 。 。从被读取不适用
1236无法将以下aspx文件转换为分析模型。 N / A
1237以下对java符号的引用无法解决。某些实例可以通过调整提供给Fortify的类路径来解决,但是在所有情况下都不能解决此问题。
1551,1552多个ColdFusion错误(无法解析组件,找不到函数,意外令牌等)可以与使用不支持的ColdFusion版本相关。
12002找不到Web应用程序的部署描述符(web.xml)。 N / A
12004 Java前端无法解析以下包含N / A
12004 Python前端无法解析以下导入N / A
13509规则脚本错误可能是Fortify错误,但需要确认
某些错误消息可能是Fortify工具中的问题的结果。确认的问题以及如何处理这些问题,都会发布在OISSWA博客中,以及有关解析/语法错误的技术说明。已确认的Fortify问题也在本页顶部的表格中注明。
如果您在解决警告或错误消息时遇到问题,请参阅我们的常见问题解答以获取有关打开支持票证的信息。
参考
参见参考技术说明
Fortify软件
强化静态代码分析器
使软件更快地生产
“将FINDBUGS XML转换为HP FORTIFY SCA FPR | MAIN | CA特权身份管理员安全研究白皮书»
强化针对JSSE API的SCA自定义规则滥用
日期:2017年6月8日上午7:00
在提供GDS安全SDLC服务的同时,我们经常开发一系列定制安全检查和静态分析规则,以检测我们在源代码安全评估中发现的不安全的编码模式。这些模式可以代表特定于正在评估的应用程序,其架构/设计,使用的组件或甚至开发团队本身的常见安全漏洞或独特的安全弱点。这些自定义规则经常被开发以针对特定语言,并且可以根据客户端使用的或者舒服的方式在特定的静态分析工具中实现 - 以前的例子包括FindBugs,PMD,Visual Studio以及Fortify SCA。
使用Findbugs审核不安全代码的Scala
为Spring MVC构建Fortify自定义规则
用PMD保护发展
在本博客文章中,我将专注于开发Fortify SCA的PoC规则,以针对基于Java的应用程序,然而,相同的概念可以轻松扩展到其他工具和/或开发语言。
影响Duo Mobile的近漏洞证实了Georgiev等人的分析,他们展示了各种非浏览器软件,库和中间件中SSL / TLS证书验证不正确的严重安全漏洞。
具体来说,在这篇文章中,我们专注于如何识别Java中SSL / TLS API的不安全使用,这可能导致中间人或欺骗性攻击,从而允许恶意主机模拟受信任的攻击。将HP Fortify SCA集成到SDLC中可以使应用程序定期有效地扫描漏洞。我们发现,由于SSL API滥用而导致的问题并未通过开箱即用的规则集确定,因此我们为Fortify开发了一个全mian的12个自定义规则包。
Fortify软件
强化静态代码分析器
使软件更快地生产
“将FINDBUGS XML转换为HP FORTIFY SCA FPR | MAIN | CA特权身份管理员安全研究白皮书»
强化针对JSSE API的SCA自定义规则滥用
允许所有的行动
应用程序不检查服务器发送的数字证书是否发送到客户端正在连接的URL。
Java安全套接字扩展(JSSE)提供两组API来建立安全通信,一个HttpsURLConnection API和一个低级SSLSocket API。
HttpsURLConnection API默认执行主机名验证,再次可以通过覆盖相应的HostnameVerifier类中的verify()方法来禁用(在GitHub上搜索以下代码时,大约有12,800个结果)。
HostnameVerifier allHostsValid = new HostnameVerifier(){
public boolean verify(String hostname,SSLSession session){
返回真
}
};
SSLSocket API不开箱即可执行主机名验证。以下代码是Java 8片段,仅当端点标识算法与空字符串或NULL值不同时才执行主机名验证。
private void checkTrusted(X509Certificate [] chain,String authType,SSLEngine engine,boolean isClient)
throws CertificateException {
...
String identityAlg = engine.getSSLParameters()。
getEndpointIdentificationAlgorithm();
if(identityAlg!= null && identityAlg.length()!= 0){
checkIdentity(session,chain [0],identityAlg,isClient,
getRequestedServerNames(发动机));
}
...
}
当SSL / TLS客户端使用原始的SSLSocketFactory而不是HttpsURLConnection包装器时,识别算法设置为NULL,因此主机名验证被默认跳过。因此,如果攻击者在客户端连接到“”时在网络上具有MITM位置,则应用程序还将接受为“some-evil-”颁发的有效的服务器证书。
这种记录的行为被掩埋在JSSE参考指南中:
“当使用原始SSLSocket和SSLEngine类时,您应该始终在发送任何数据之前检查对等体的凭据。 SSLSocket和SSLEngine类不会自动验证URL中的主机名与对等体凭