java - 不受信任数据的反序列化变通方法

时间:2016-08-30 13:31:01

标签: java security serialization deserialization

去年我们遇到了所谓的 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:关闭反序列化最好的。

问题

在不能忽略反序列化的情况下,有没有更好的方法来验证和阻止坏数据,除了黑色和&白名单?

0 个答案:

没有答案