Jackson 多个反序列化安全漏洞(CVE-2020-24616)

  • A+
所属分类:安全文章

[email protected]卫兵实验室

漏洞类型

JNDI注入/任意代码执行

漏洞时间

2020.8

cve编号

CVE-2020-24616

厂商

Fasterxml

漏洞描述(仅为漏洞描述,不展示具体的漏洞细节)

Fasterxml jackson-databind 2.9.10.6之前的版本中存在安全漏洞,该漏洞源于进行了不安全的反序列化。远程攻击者可通过精心构造的恶意载荷通过利用该漏洞在系统上执行任意代码。

漏洞效果

攻击者可利用该漏洞执行任意代码。

影响范围

jackson-databind < 2.9.10.6

漏洞分析

首先diff一下黑名单中新添加的class,有四个。

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

br.com.anteros.dbcp.AnterosDBCPDataSource

jar包下载地址:https://mvnrepository.com/artifact/br.com.anteros/Anteros-DBCP

在其 setMetricRegistry 方法中调用了 super.setMetricRegistry ,跟进

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

当 this.metricsTrackerFactory 为null且 metricRegistry 不为null时会调用 this.getObjectOrPerformJndiLookup

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

继续跟进 this.getObjectOrPerformJndiLookup 可以发现存在一处JNDI注入,参数 object 就是 setMetricRegistry 方法传入的参数值。

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

com.pastdev.httpcomponents.configuration.JndiConfiguration

jar包下载地址: https://mvnrepository.com/artifact/com.pastdev.httpcomponents/configuration/0.1.3

构造方法处直接存在jndi注入

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

com.nqadmin.rowset.JdbcRowSetImpl

jar包下载地址: https://mvnrepository.com/artifact/com.nqadmin.rowset/jdbcrowsetimpl

setAutoCommit 方法调用了 this.connect()

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

connect() 方法中存在JNDI注入

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

this.getDataSourceName() 会调用父类 javax.sql.rowset.BaseRowSet#getDataSourceName 获取其 dataSource 属性,我们只需要控制该属性并调用 setAutoCommit 方法即可,调用 setDataSourceName 方法即可控制父类的 dataSource 属性。

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

org.arrah.framework.rdbms.UpdatableJdbcRowsetImpl

jar包下载地址: https://mvnrepository.com/artifact/org.arrahtec/osdq-core

和 com.nqadmin.rowset.JdbcRowSetImpl 的流程一样。

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

利用条

以下三者之一

  • 启用了 enableDefaultTyping

  • 使用注解 @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) 或 @JsonTypeInfo(use = JsonTypeInfo.Id.MINIMAL_CLASS) 修饰了反序列化类的某个属性,该属性类型为Object或上述存在漏洞的class

  • activateDefaultTyping 指定可信类为存在漏洞的class

漏洞修复

升级至 jackson-databind 2.9.10.6 或更高的版本


关于我们

Jackson 多个反序列化安全漏洞(CVE-2020-24616)

人才招聘

二进制安全研究员(Windows内核方向)

工作地点:

1.杭州;


岗位职责:

1、负责研究Window内核相关漏洞利用技术;

2、负责分析Window内核漏洞的原理及缓解措施;


任职要求:

12年以上windows逆向工作经验。

2、熟悉windows底层架构、运行机制,熟悉汇编语言 C/C++语言,熟悉win32/64开发,并有相关开发经验;

3、熟悉windows驱动开发、熟悉windows平台内核架构;能熟练运用Windows平台下的软件调试方法。

4、熟练使用idawindbg等调试软件工具调试分析漏洞。

5、有CVE编号、内核研究成果者优先;

6、具备良好的团队沟通、协作能力、良好的职业道德。


二进制安全研究员(Linux内核方向)

工作地点:

1.杭州;


岗位职责:


1、负责研究Linux内核相关漏洞利用技术;

2、负责分析Linux内核漏洞的原理及缓解措施;


任职要求:


12年以上Linux逆向工作经验。

2、熟悉Linux底层架构、运行机制,熟悉汇编语言 C/C++语言,熟悉x86/64开发,并有相关开发经验;

3、熟悉Linux驱动开发、熟悉Linux平台内核架构;能熟练运用Linux平台下的软件调试方法。

4、熟练使用idagdblldb等调试软件工具调试分析漏洞。

5、有CVE编号、内核研究成果者优先;

6、具备良好的团队沟通、协作能力、良好的职业道德。


二进制安全研究员(系统应用方向)

工作地点:

1.杭州;


岗位职责:



1、负责安全技术研究,跟踪国内外最新的安全技术以及安全漏洞的追踪;

2、负责进行二进制漏洞挖掘,包括不限于浏览器、chakara引擎、js引擎、officepdf等等各种二进制类应用;


任职要求:



1、能主动关注国内外最新安全攻防技术,并在自己擅长和兴趣的领域能够进行深入的学习、研究;

2、熟练掌握windbgidagdb等调试工具;

3、熟悉各类二进制安全漏洞原理(堆溢出、栈溢出、整数溢出、类型混淆等等)以及各种利用技术;

4、能够无障碍阅读英文技术文档;

5、具备良好的团队沟通、协作能力、良好的职业道德。


Web安全研究员

工作地点:

1.杭州;


岗位职责:




1、安全攻防技术研究,最新web应用及中间件(tomcatjettyjboss等等)、框架(strutsspringguiceshiro等等组件(freemarkersitemesh等等)漏洞挖掘研究;

2、跟踪分析国内外的安全动态,对重大安全事件进行快速响应;


任职要求:




1、了解常见的网络协议(TCP/IP,HTTP,FTP)

2、熟练使用Wireshark等抓包工具,熟悉正则表达式;

3、掌握常见漏洞原理,有一定的漏洞分析能力;

4、具备phppythonjava或其他相关语言编码能力;

5、对常见waf绕过有一定的基础经验;

6、具备一定的文档编写能力,具备良好的团队共同能力;

7、对安全有浓厚的兴趣,工作细致耐心。


感兴趣的小伙伴请联系Nike,或将简历投送至下方邮箱。(请注明来源“研究院公众号”,并附带求职岗位名称)

联系人:Nike
邮箱:[email protected]

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: