java - 不受信任的数据变通办法的反序列化
去年,我们遇到了所谓的java对象反序列化漏洞(不是java的问题),它正在反序列化对象,这可能导致远程执行代码(RCE)或拒绝服务(DoS)攻击。
有关详细信息,请参阅 https://dzone.com/articles/java-serialization-vulnerability-threatens-million。
基本上,如果代码无法验证传入的对象,它就容易受到攻击。
这种攻击的影响将非常大,如中所述,在Java中反序列化不受信任的数据的安全影响是什么?
首先,攻击者使用Apache Commons Collections的 InvokerTransformer 中的类作为构建攻击链的一种方式。
解决方案1:黑名单不接受用于构建小工具链的类。
但是,这还不够,因为攻击链可以通过许多其他方式构建。指
https://github.com/frohoff/ysoserial/tree/master/src/main/java/ysoserial/payloads
解决方案2:白名单通过使用“安全对象流”覆盖对象流,该流验证应用程序实际期望的类。
同样,这并不能完全否定攻击。有一个使用jre7u21的RCE和使用HashSets的拒绝服务攻击。
解决方案 3:关闭反序列化最好的一个。
问题
在反序列化不能被忽视的情况下,除了黑名单和白名单之外,有没有更好的方法来验证和阻止不良数据爆炸?