我在我的类中看到了Fortify SourceAnalyzer的以下警告,它实现了ISerializer
,IDeSerializer
接口: -
“缺少SecurityManager检查:可序列化”。
这是一个安全漏洞,因为如果您正在序列化某些敏感数据并且已经将安全管理器检查到类的构造函数中,以避免未经检查的新对象实例的创建。您必须覆盖write方法并将相同的安全管理器检查也写入write方法。 (因为有些人仍然可以从序列化字节创建一个新实例,因为没有对从序列化字节创建的对象进行java控制,它只会对这些字节进行反序列化,因此唯一要避免的方法是在写入时将相同的安全管理器检查法)。
如果我序列化一些敏感数据并在构造函数内部进行安全漫游检查,则上述解释完全正常。但是,如果我有不敏感的数据,我想序列化,没有任何安全管理器检查构造函数。我仍然从Fortify报告中得到了上述警告。我不知道如何摆脱这个警告,这是Fortify工具中的一个错误还是我错过了什么?
注意: - 我不希望任何安全管理器检查我的构造函数。
答案 0 :(得分:3)
我从Fortify得到了一个不同的解释,因为这个问题通常不是write
,而是read
(反序列化)。背景是在反序列化数据时不调用构造函数,因为运行时负责从序列化数据中对成员进行初始化,因此当构造函数中有SecurityManager
时,不会考虑通过反序列化创建实例的时间。
无论如何,对于您的问题,如果您已经分析了问题并得出结论认为这不是问题,那么您可以在审核问题时对其进行标记。这在Fortify SSC(中央强化服务器)和Audit Workbench(AWB)中都是可能的。在Fortify SSC中,转到您的问题列表,在特定问题上选择“查看详细信息”,然后在左下角选择“分析:不是问题”。 AWB中存在类似的选项。
如果您正在进行后续扫描并将其上传到服务器(或使用AWB合并它们),Fortify会认识到此问题已经过审核并且之前已标记为“非问题”,并保留“非问题”信息。