fastjson又被发现漏洞,这次危害可能会导致服务瘫痪
0x00 漏洞背景
2019年9月5日,fastjson在commit 995845170527221ca0293cf290e33a7d6cb52bf7上提交了旨在修复当字符串中包含\\x转义字符时可能引发OOM的问题的修复。
360CERT 判断该漏洞危害中。影响面较大。攻击者可以通过发送构造好的请求而致使当前线程瘫痪,当发送的恶意请求过多时有可能使业务直接瘫痪。
建议广大用户对自身的业务/产品进行组件自查,确认fastjson版本至少升级到1.2.60
0x01 漏洞详情
漏洞的关键点在com.alibaba.fastjson.parser.JSONLexerBase#scanString中,当传入json字符串时,fastjson会按位获取json字符串,当识别到字符串为\\x为开头时,会默认获取后两位字符,并将后两位字符与\\x拼接将其变成完整的十六进制字符来处理:
而当json字符串是以\\x结尾时,由于fastjson并未对其进行校验,将导致其继续尝试获取后两位的字符。也就是说会直接获取到\\u001A也就是EOF:
当fastjson再次向后进行解析时,会不断重复获取EOF,并将其写到内存中,直到触发oom错误:
最终效果为:
0x02 影响版本
fastjson < 1.2.60版本
0x03 修复建议
- 1.1.15~1.1.31版本更新到1.1.31.sec07版本
- 1.1.32~1.1.33版本更新到1.1.33.sec06版本
- 1.1.34 版本更新到1.1.34.sec06版本
- 1.1.35~1.1.46版本更新到1.1.46.sec06版本
- 1.2.3~1.2.7版本更新到1.2.7.sec06版本或1.2.8.sec04版本
- 1.2.8 版本更新到1.2.8.sec06版本
- 1.2.9~1.2.29 版本更新到1.2.29.sec06版本
0x04 时间线
2019-09-03 fastjson提交修补commit
2019-09-05 360CERT发布预警
2019-09-07 周末加班升级!
PS:jackson最近也发布了多个版本进行漏洞修复。
fastjson又被发现漏洞,这次危害可能会导致服务瘫痪的更多相关文章
- 对“demo!demo.Index+HookProc::Invoke”垃圾收集的类型已委托回调。这可能会导致应用程序崩溃、损坏和数据丢失。当传递委托给非托管代码,托管应用程序必须让这些委托保持活着
对"demo!demo.Index+HookProc::Invoke"垃圾收集的类型已委托回调.这可能会导致应用程序崩溃.损坏和数据丢失.当传递委托给非托管代码,托管应用程序必须承 ...
- servlet请求编码与响应编码问题(编码不一致可能会导致乱码)
html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...
- EF Core 遇到“可能会导致循环或多重级联路径”
在ef core中你可能会设计这样一个实体: public class Customer : Entity,IMustHaveTenant, IHasCreationTime { public Cus ...
- 360或者金山毒霸可能会导致HP网络打印机驱动安装失败“数据无效”的解决办法
360或者金山毒霸可能会导致HP网络打印机驱动安装失败“数据无效”的解决办法 同事办公室的打印机是网线接口的那种网络打印机,不是直接连到电脑的那种,他电脑安装了360和金山毒霸,WIN10下安 ...
- 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
错误提示:可能会导致循环或多重级联路径.请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束. 原因:自表连接(同一张表 ...
- 所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器...
警告:所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配.这种不匹配可能会导致运行时失败.请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构 ...
- C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
C# json反序列化 对象中嵌套数组 (转载) 看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的 Newtonso ...
- 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法
<对“XXX::Invoke”类型的已垃圾回收委托进行了回调.这可能会导致应用程序崩溃.损坏和数据丢失.向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们& ...
- 对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们
托管调试助手“CallbackOnCollectedDelegate”在“D:\XXX\XXX.vshost.exe”中检测到问题. 其他信息: 对“XXX+HookProc::Invoke”类型的已 ...
随机推荐
- shell中的函数、shell中的数组、告警系统需求分析
7月16日任务 20.16/20.17 shell中的函数20.18 shell中的数组20.19 告警系统需求分析 20.16/20.17 shell中的函数 函数就是一个子shell就是一个代码段 ...
- [学习笔记] [数据分析] 02、NumPy入门与应用
01.NumPy基本功能 ※ 数据类型的转换在实际操作过程中很重要!!! ※ ※ ndarray的基本索引与切片 ※ 布尔型数组的长度必须跟被索引的轴长度一致 花式索引是利用“整数数组”进行索引. 整 ...
- luogu P5414 [YNOI2019]排序 |动态规划
题目描述 对于一个数列{7, 1, 2, 3}进行排序,我们可以把7 从头移动到尾.但是这个操作的成本是7,并不是最佳的.最佳的排序方式是将连续的1.2.3 移动到7 的前面.这样的话,总的操作成本就 ...
- luogu P4408 [NOI2003]逃学的小孩
题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?"一听说要考试,Chris的父母就心 ...
- [开源] .Net 使用 ORM 访问 达梦数据库
前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...
- 设计模式GOF23(行为型模式)
场景: – 公司里面,报销个单据需要经过流程: • 申请人填单申请,申请给经理 • 小于1000,经理审查. • 超过1000,交给总经理审批. • 总经理审批通过 – 公司里面,请假条的审批过程: ...
- Vue - 简单实现一个命令式弹窗组件
前言 在日常工作中弹窗组件是很常用的组件,但用得多还是别人的,空闲时间就自己来简单实现一个弹窗组件 涉及知识点:extend.$mount.$el 使用方式: this.$Confirm({ titl ...
- moment.js 默认使用服务器时间
在前端使用Date对象获取当前时间的时候,该时间是客户端的时间.但是该时间可以被用户修改,所以我们一般情况下并不想要这个时间.如果每一次获取时间的时候都请求一下服务器,那么将会对服务器造成不必要的压力 ...
- HTML 02
form表单 能够获取用户输入(包括输入, 选择和上传文件) 将用户的输入内容全部发送给后端 参数 action 向何处提交 不写, 默认朝当前页面所在地址提交数据 全写路径 (https://www ...
- 聊聊技术选型 - Angular2 vs Vue2
作者介绍:李旸,美团点评前端工程师,3 年 Web 前端开发经验,现在是美团点评点餐团队的一员. "Come, and take choice of all my library, And ...