去年我们遇到了所谓的 Java对象反序列化漏洞(看起来并不是Java的问题),这是反序列化可能导致远程代码执行(RCE)或拒绝服务(DoS)攻击的对象。
请参见 https://dzone.com/articles/java-serialization-vulnerability-threatens-million 了解详细信息。
基本上,如果代码未能验证传入的对象,则存在漏洞。
如What is the security impact of deserializing untrusted data in Java?所述,此攻击的影响将非常大。
首先,攻击者使用了Apache Commons Collections中的InvokerTransformer类作为建立攻击链的方式。 解决方案1:黑名单不接受已用于构建小工具链的类。
但是,这还不够,因为可以通过许多其他方式构建攻击链。请参阅, https://github.com/frohoff/ysoserial/tree/master/src/main/java/ysoserial/payloads 解决方案2:白名单通过使用“SecureObjectStream”覆盖ObjectStream,该方法验证实际由应用程序预期的类。
同样,这并不能完全消除攻击。有一个使用jre7u21的RCE和使用HashSets的拒绝服务攻击。 解决方案3:关闭反序列化是目前最好的方法。
请参见 https://dzone.com/articles/java-serialization-vulnerability-threatens-million 了解详细信息。
基本上,如果代码未能验证传入的对象,则存在漏洞。
如What is the security impact of deserializing untrusted data in Java?所述,此攻击的影响将非常大。
首先,攻击者使用了Apache Commons Collections中的InvokerTransformer类作为建立攻击链的方式。 解决方案1:黑名单不接受已用于构建小工具链的类。
但是,这还不够,因为可以通过许多其他方式构建攻击链。请参阅, https://github.com/frohoff/ysoserial/tree/master/src/main/java/ysoserial/payloads 解决方案2:白名单通过使用“SecureObjectStream”覆盖ObjectStream,该方法验证实际由应用程序预期的类。
同样,这并不能完全消除攻击。有一个使用jre7u21的RCE和使用HashSets的拒绝服务攻击。 解决方案3:关闭反序列化是目前最好的方法。