Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deps): update dependency org.json:json to v20231013 [security] #30

Closed
wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Oct 16, 2023

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
org.json:json 20230227 -> 20231013 age adoption passing confidence

GitHub Vulnerability Alerts

CVE-2023-5072

Summary

A denial of service vulnerability in JSON-Java was discovered by ClusterFuzz. A bug in the parser means that an input string of modest size can lead to indefinite amounts of memory being used. There are two issues: (1) the parser bug can be used to circumvent a check that is supposed to prevent the key in a JSON object from itself being another JSON object; (2) if a key does end up being a JSON object then it gets converted into a string, using \ to escape special characters, including \ itself. So by nesting JSON objects, with a key that is a JSON object that has a key that is a JSON object, and so on, we can get an exponential number of \ characters in the escaped string.

Severity

High - Because this is an already-fixed DoS vulnerability, the only remaining impact possible is for existing binaries that have not been updated yet.

Proof of Concept

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\0" + makeNested(depth - 1) + ":1}";
  }

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

When run, this reports that the input string has length 367. Then, after a long pause, the program crashes inside new JSONObject with OutOfMemoryError.

Further Analysis

The issue is fixed by this PR.

Timeline

Date reported: 07/14/2023
Date fixed:
Date disclosed: 10/12/2023


Release Notes

douglascrockford/JSON-java (org.json:json)

v20231013

Compare Source

Pull Request Description
#​793 Reverted #​761
#​792 update the docs for release 2023101
#​783 optLong vs getLong inconsistencies
#​782 Fix XMLTest.testIndentComplicatedJsonObjectWithArrayAndWithConfig() for Windows
#​779 add validity check for JSONObject constructors
#​778 Fix XMLTest.testIndentComplicatedJsonObjectWithArrayAndWithConfig() for Windows
#​776 Update [JUnit to version 4.13.2
#​774 Removing unneeded synchronization
#​773 Add optJSONArray method to JSONObject with a default value
#​772 Disallow nested objects and arrays as keys in objects
#​779 Unit test cleanup
#​769 Addressed Java 17 compile warnings
#​764 Update CodeQL action version
#​761 Add module-info
#​759 JSON parsing should detect embedded 
#​753 Updated new object methods
#​752 Fixes possible unit test bug when compiling/testing on Windows

v20230618

Compare Source

Pull Request Description
#​749 Prep for release 20230618
#​740 Fixed Flaky Tests Caused by JSON permutations
#​734 Fixed Flaky Tests Caused by JSON permutations
#​733 JSONTokener implemented java.io.Closeable
#​731 Removing commented out code in JSONObject optDouble()
#​729 Refactor ParserConfiguration class hierarchy

Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot force-pushed the renovate/maven-org.json-json-vulnerability branch from abe9166 to 26129cd Compare November 16, 2023 14:51
Copy link

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
0.0% 0.0% Duplication

@renovate renovate bot force-pushed the renovate/maven-org.json-json-vulnerability branch from 26129cd to 72b5c23 Compare February 2, 2024 16:38
@BettyB979 BettyB979 closed this Apr 22, 2024
@renovate renovate bot deleted the renovate/maven-org.json-json-vulnerability branch June 10, 2024 11:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant