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] #3641

Conversation

renovate-bot
Copy link
Contributor

@renovate-bot renovate-bot commented May 15, 2024

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
org.json:json 20230618 -> 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

Configuration

📅 Schedule: Branch creation - "* 0-4 * * *" (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-bot renovate-bot force-pushed the renovate/maven-org.json-json-vulnerability branch from 4a26e58 to df5fdf3 Compare May 16, 2024 06:45
@ianlewis ianlewis merged commit fd73514 into slsa-framework:main May 16, 2024
76 checks passed
@renovate-bot renovate-bot deleted the renovate/maven-org.json-json-vulnerability branch May 16, 2024 06:55
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.

2 participants