当前位置:首页 > 报告详情

Java API 中的魔法.pdf

上传人: 2*** 编号:140476 2023-08-31 38页 10.61MB

1、Magic In Java APISpeaker:yemoli、R1ckyZyemoli、永信至诚伽玛实验室高级研究员R1ckyZ、中国科学院大学wha1eriR1ckyZyemoliSecR1ckyZ-WEByml-sec.topr1ckyz.github.ioAbout UsAgenda01API简介04减缓措施02安全影响03RASP攻防TricksAPI简介JDK中 PrintServiceLookup接口用于提供打印服务的注册查找功能,在linux的JDK中它的实现类叫做UnixPrintServiceLookup 或 PrintServiceLookupProvider(高版本 j

2、dk中)API简介execCmd的参数来自于类的属性,在某些特定情况下如果被篡改掉可能存在着一些安全风险安全影响安全影响01FieldBased mechanism02Pojo Class Recovery03Member of gadget chainHow FieldBased mechanism work in deserialisation在某些时候实例化类时调用无参数构造方法还原 Map 类型时,会调用 hashcode 等方法允许反序列化未实现 Serializable 接口的类使用反射来恢复对象的属性Existing ideasUtilisation under FieldBas

3、ed mechanismSerialize TypeAffectjava native serializeNOHessianYES(version=3.x)Hessian LiteYES(version=3.2.12)SOFA-HessianYES(version4.0.0)KryoYESFastJsonYES(FieldBased)JacksonYES(FieldBased)XStreamNOFSTNOHessianHessian是一种轻量级的二进制序列化协议,3.x版本中其反序列化的大致流程如下Hessian可以反序列化不实现Serializeable的类使用默认反序列化器JavaDese

4、rializer实例化类时会调用构造方法优先使用无参数构造方法,没有无参数构造方法时会选择有参数的构造方法,但只能还原基本类型参数,其他类型的参数会自动设置为null通过反射来恢复属性总结来讲,在进行反序列化时有如下的关键行为perfect with UnixPrintServiceLookupWhy not hessian 4.x?Why not hessian 4.x?Hessian Litehessian-lite是Apache Dubbo的一个模块,它是基于官方hessian的一个修改版本,在安全性上来说,相比于原始的hessian,hessian-lite中维护了一个黑名单,用于防御

5、已知的反序列化攻击;在3.2.12以及之前的版本中,可以反序列化没有继承Serializable的类,同时在黑名单中也不存在对sun.print的包的过滤,且默认的反序列化器为JavaDeserializer,因此可以完全符合我们对UnixPrintServiceLookup的利用要求Lead to CVE-2022-39198dubbo通信时默认使用hessian-lite进行反序列化,流程如下Lead to CVE-2022-39198根据上述流程可以发现完全符合UnixPrintServiceLookup的利用条件;对于此官方修复方案是在黑名单中限制了包名,同时不允许实例化未继承Seri

6、alizable的类SOFA-HessianSOFA-Hessian也是一个基于原生 Hessian 的改进版本,同样的,在3.x版本中,其默认的反序列化器为 JavaDeserializer,且 sun.print 包并不在其 serialize.blacklist 黑名单中,所以在3.x版本中对于 SOFA-Hessian 也可以直接利用 UnixPrintServiceLookup而在4.x的版本中,其反序列化器选择上同Hessian一样做出了改动,因此无法使用Safety Case某开源rpc框架依赖了SOFA-Hessian 3.x,Server端解析客户端传入数据的流程如下在进行通

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了Java API中的一些安全漏洞和攻击手段,以及一些缓解措施。文章提到了几个关键点: 1. Hessian和SOFA-Hessian在某些版本中存在安全漏洞,可以被用来执行恶意命令。 2. Kryo和FastJson也是一些漏洞的源头,比如CVE-2020-5413。 3. Dubbo在某些版本中,如果使用了不安全的反序列化器,也可能被攻击。 4. Flink和一些开源的RPC框架也存在反序列化的安全问题。 5. RASP(Runtime Application Self-Protection)技术在一定程度上可以防御这些攻击。 文章还提到了一些缓解措施,比如对泛化调用进行严格的类型检查,对通信时使用的序列化器使用黑白名单配置,使用安全性较高的序列化器等。
如何防范UnixPrintServiceLookup攻击?" UnixPrintServiceLookup在Java中的应用与风险" 探索UnixPrintServiceLookup如何被用于RCE攻击"
客服
商务合作
小程序
服务号
折叠