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又被发现漏洞,这次危害可能会导致服务瘫痪的更多相关文章

  1. 对“demo!demo.Index+HookProc::Invoke”垃圾收集的类型已委托回调。这可能会导致应用程序崩溃、损坏和数据丢失。当传递委托给非托管代码,托管应用程序必须让这些委托保持活着

    对"demo!demo.Index+HookProc::Invoke"垃圾收集的类型已委托回调.这可能会导致应用程序崩溃.损坏和数据丢失.当传递委托给非托管代码,托管应用程序必须承 ...

  2. servlet请求编码与响应编码问题(编码不一致可能会导致乱码)

    html中的编码 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&g ...

  3. EF Core 遇到“可能会导致循环或多重级联路径”

    在ef core中你可能会设计这样一个实体: public class Customer : Entity,IMustHaveTenant, IHasCreationTime { public Cus ...

  4. 360或者金山毒霸可能会导致HP网络打印机驱动安装失败“数据无效”的解决办法

    360或者金山毒霸可能会导致HP网络打印机驱动安装失败“数据无效”的解决办法     同事办公室的打印机是网线接口的那种网络打印机,不是直接连到电脑的那种,他电脑安装了360和金山毒霸,WIN10下安 ...

  5. 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

    错误提示:可能会导致循环或多重级联路径.请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束. 原因:自表连接(同一张表 ...

  6. 所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器...

    警告:所生成项目的处理器架构“MSIL”与引用“***”的处理器架构“x86”不匹配.这种不匹配可能会导致运行时失败.请考虑通过配置管理器更改您的项目的目标处理器架构,以使您的项目与引用间的处理器架构 ...

  7. C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

    C# json反序列化 对象中嵌套数组 (转载)   看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的   Newtonso ...

  8. 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法

    <对“XXX::Invoke”类型的已垃圾回收委托进行了回调.这可能会导致应用程序崩溃.损坏和数据丢失.向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们& ...

  9. 对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们

    托管调试助手“CallbackOnCollectedDelegate”在“D:\XXX\XXX.vshost.exe”中检测到问题. 其他信息: 对“XXX+HookProc::Invoke”类型的已 ...

随机推荐

  1. “洞察千里”,华为云HiLens如何让无人车智行天下

    作者:华为云 Rosie 随着人工智能的普及和渗透,"无人"的场景越来越丰富,无人超市.无人车.无人机等已经融入我们的生活. 乘着这股热浪,华为云携手上海交通大学学生创新中心举办了 ...

  2. Python面试180道题

    版权声明:本文为CSDN博主「CSDN学院官方账号」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/csd ...

  3. shell ssh 远程机器 追加文件内容

    在host1上,把下面的两行内容通过ssh追加到host2上的/etc/ca-certificates.conf文件中 I am a student Are you ok ssh host2 &quo ...

  4. luogu P2507 [SCOI2008]配对

    题目描述 你有 n 个整数Ai和n 个整数Bi.你需要把它们配对,即每个Ai恰好对应一个Bp[i].要求所有配对的整数差的绝对值之和尽量小,但不允许两个相同的数配对.例如A={5,6,8},B={5, ...

  5. 牛客竞赛-Who killed Cock Robin

    Who killed Cock Robin? I, said the Sparrow, With my bow and arrow,I killed Cock Robin. Who saw him d ...

  6. 本土化App名稱和icon

    本土化app名稱這個容易 第一步配置工程需要本土化的語言. 第二步,新建本土化文件,文件名稱是有要求的,文件名字命名为InfoPlist,且必须是这个名字.這樣系統會自動去讀取該文件中的內容 對新建的 ...

  7. Spring Boot结和Spring Data(Ehcache缓存,Thymeleaf页面,自定义异常页面跳转,Swagger2)

    项目结构 pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  8. 2019CCPC秦皇岛 J MUV LUV EXTRA(KMP)

    MUV LUV EXTRA Time Limit: 2000/1500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)T ...

  9. base64编码的字符串与图片相互转换

    #region 图片转为base64编码的字符串---ImgToBase64String /// <summary> /// 图片转为base64编码的字符串 /// </summa ...

  10. Python3 并发编程2

    目录 进程互斥锁 基本概念 互斥锁的使用 IPC 基本概念 队列 生产者消费者模型 基本概念 代码实现 线程 基本概念 创建线程 线程互斥锁 进程互斥锁 基本概念 临界资源: 一次仅允许一个进程使用的 ...