什么是Fortify?

Fortify是Micro Focus旗下的一款应用程序安全测试产品,包括Fortify Static Code Analyzer(SCA)提供静态代码分析器,Fortify WebInspect是动态应用安全测试软件,Software Security Centre是软件安全中心和 Application Defender是实时应用程序自我保护。

由于使用Fortify来做静态检测,所以使用到的产品是SCA。SCA可以检测600多种漏洞,包括XSSCSRF等类型的漏洞。SCA的漏洞数据来源于OWASP,CWE,PCI等组织的漏洞统计。

在使用Fortify来分析软件漏洞时,分析结果可能从前面代码推断出来的。如果没有注意到这一点可能会认为我们在修复漏洞的时候只能修改漏洞出现的代码行,但是事实上我们还可以修改代码前面的逻辑

问题分类

  1. Dynamic Code Evaluation: Unsafe Deserialization

    private static Object copyWithoutValidation(byte\[\] cloneByte) {  
      try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(cloneByte)) {  
      ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);  
            return objectInputStream.readObject();  
        } catch (java.io.IOException | ClassNotFoundException e) {  
      return null;  
        }  
    }

    上面的代码未校验序列化的类,我们可以添加白名单的形式限定可以反序列化的类

    private static Object copyWithValidation(byte\[\] cloneByte) {  
      try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(cloneByte)) {  
      ValidatingObjectInputStream validatedObjectInputStream =  
                    new ValidatingObjectInputStream(byteArrayInputStream);  
            // 配置可以反序列化的对象  
      validatedObjectInputStream.accept("java.\*");  
            return validatedObjectInputStream.readObject();  
        } catch (java.io.IOException | ClassNotFoundException e) {  
      return null;  
        }  
    }

水一水
39 声望5 粉丝

总结经验,提升自己