fastjson全版本漏洞深度剖析
💡
原文中文,约11200字,阅读约需27分钟。
📝
内容提要
Fastjson是一个Java库,用于在Java对象与JSON格式之间进行转换。它支持动态解析和反序列化,但在处理@type字段时可能存在安全漏洞,可能导致恶意代码执行。使用时需注意类的构造函数及getter/setter方法的定义。
🎯
关键要点
- Fastjson是一个Java库,用于Java对象与JSON格式之间的转换。
- Fastjson支持动态解析和反序列化,但在处理@type字段时可能存在安全漏洞。
- 使用Fastjson时需注意类的构造函数及getter/setter方法的定义。
- Fastjson提供JSONObject和JSONArray对象用于JSON字符串的转换。
- JSON对象提供toJSONString方法将Java对象转化为JSON字符串。
- 反序列化时,待转换的类需要有无参构造函数,否则会报错。
- @JSONField注解可自定义输出,包括控制字段排序和序列化标记。
- Fastjson在操作时是根据getter和setter方法进行的,而不是根据Field。
- 反序列化过程中,@type字段可能导致远程代码执行漏洞。
- 攻击者可通过Java环境寻找构造恶意类,并通过反序列化调用getter/setter方法形成恶意调用链。
- 影响版本为fastjson<=1.2.24。
- TemplatesImpl的getter方法可用于加载字节码,可能导致安全漏洞。
- JdbcRowSetImpl的setter方法可触发JNDI注入,存在安全隐患。
➡️