185.5.5. 来自多形反序列化的安全风险


使用 FasterXML jackson-databind 库的应用程序通过对 JSON 内容进行反序列化处理 Java 对象可能会受到 远程代码执行 攻击的影响。但这不是自动的,如果您采取适当的缓解方案步骤,可以避免这个漏洞。

至少,在攻击成为可能前必须满足以下先决条件:

  1. 您已在 jackson-databind 中启用了 polymorphic 处理来反序列化 JSON 内容。在 Jackson JSON 中启用多形类型处理有两种替代方法:

    1. 使用 @JsonTypeInfo@JsonSubTypes 注释的组合。
    2. 通过调用 ObjectMapper.enableDefaultTyping () 方法。这个选项特别危险,因为它可全局启用多形键入。
  2. 您的 Java 类路径中 有一个或多个 gadget 类。小工具类定义为执行敏感(有漏洞利用)操作的任何类,作为执行构造或集合方法(这是在反序列化过程中调用的方法)。
  3. 您的 Java 类路径中的一个或多个 gadget 类还没有被当前版本的 jackson-databind 列入黑名单。如果您使用 jackson-databind 库的标准发行版本,则 Jackson JSON 库维护的 gadget blacklist 是针对远程代码执行漏洞的最后一行。
  4. (仅限红帽发布 jackson-databind 库) 您明确将 gadget 类之一添加到接收器上的反序列化白名单(通过设置 jackson.deserialization.whitelist.packages 系统属性)。因为这种情况不太可能这样做,白名单机制默认提供对所有 gadget 类的有效保护。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.