是不是;过滤传入的序列化数据“;计划为Java 9解决数据反序列化安全漏洞?

是不是;过滤传入的序列化数据“;计划为Java 9解决数据反序列化安全漏洞?,java,security,deserialization,owasp,java-9,Java,Security,Deserialization,Owasp,Java 9,我在浏览Java 9的新功能时发现: 根据另一篇文章,java中的反序列化数据存在安全问题: 基于第一篇文章的文本,我有理由相信这是第二篇文章对问题的反馈,但我不是很确定。这个bug仍然是Java的问题吗?如果是的话,新Java是否完全解决了这个问题?首先,不可信数据的反序列化不是Java的一个bug,正如您所描述的那样 当应用程序开发人员/架构师设计其应用程序时,会引入该漏洞,使来自不受信任源的序列化数据在未经验证的情况下被应用程序反序列化 需要了解的是,此漏洞是由糟糕的应用程序设计引入的

我在浏览Java 9的新功能时发现: 根据另一篇文章,java中的反序列化数据存在安全问题:


基于第一篇文章的文本,我有理由相信这是第二篇文章对问题的反馈,但我不是很确定。这个bug仍然是Java的问题吗?如果是的话,新Java是否完全解决了这个问题?

首先,不可信数据的反序列化不是Java的一个bug,正如您所描述的那样

当应用程序开发人员/架构师设计其应用程序时,会引入该漏洞,使来自不受信任源的序列化数据在未经验证的情况下被应用程序反序列化

需要了解的是,此漏洞是由糟糕的应用程序设计引入的

JEP 290允许开发人员和/或安全工程师在数据反序列化之前验证数据。序列化过滤如果正确执行,可以帮助减轻某些反序列化攻击,但不能完全解决问题,而且大规模配置和部署非常复杂

您可以在此处阅读序列化筛选功能的详细评估:


为了更好地了解反序列化漏洞以及如何保护应用程序,您可以在此处阅读更多内容:

我没有足够的资格完全回答您的问题,但据我所知,JEP 290应用程序开发人员必须实施过滤。因此,问题应该是“API是否足够强大,能够让开发人员有机会修复反序列化漏洞。这完全是不真实的。具有恶意
readObject()
readResolve()的类
方法可能会导致不必要的行为,而不会导致任何应用程序设计错误。任何验证都无法阻止这种行为,因为应用程序获取对象时已经太晚了。这就是为什么要引入该功能。注意,您的两个链接指向同一个位置。糟糕的设计来自应用程序允许的事实反序列化来自不受信任源的数据。这是一个错误的设计决策。该漏洞称为“反序列化不受信任数据”,以准确反映这一点。即使使用“序列化筛选”添加验证“您仍将易受攻击,因为白名单/黑名单有可以绕过的主要限制。根据CERT,解决问题的推荐方法是重新构建/重新设计应用程序。这证实了这是一个设计问题。验证是一个很好的第一步,但并不能解决问题。注意,链接指向我就这个主题写的两篇独立文章。