Lucene search

K
nessusThis script is Copyright (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.GENTOO_GLSA-202403-03.NASL
HistoryMar 03, 2024 - 12:00 a.m.

GLSA-202403-03 : UltraJSON: Multiple Vulnerabilities

2024-03-0300:00:00
This script is Copyright (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.
www.tenable.com
5
ultrajson
json decoder
python 3.7+
vulnerabilities
surrogate characters
cve-2022-31116
cve-2022-31117
double free

7.5 High

AI Score

Confidence

High

The remote host is affected by the vulnerability described in GLSA-202403-03 (UltraJSON: Multiple Vulnerabilities)

  • UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. Affected versions were found to improperly decode certain characters. JSON strings that contain escaped surrogate characters not part of a proper surrogate pair were decoded incorrectly. Besides corrupting strings, this allowed for potential key confusion and value overwriting in dictionaries. All users parsing JSON from untrusted sources are vulnerable. From version 5.4.0, UltraJSON decodes lone surrogates in the same way as the standard library’s json module does, preserving them in the parsed output. Users are advised to upgrade. There are no known workarounds for this issue. (CVE-2022-31116)

  • UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. In versions prior to 5.4.0 an error occurring while reallocating a buffer for string decoding can cause the buffer to get freed twice. Due to how UltraJSON uses the internal decoder, this double free is impossible to trigger from Python. This issue has been resolved in version 5.4.0 and all users should upgrade to UltraJSON 5.4.0. There are no known workarounds for this issue. (CVE-2022-31117)

Note that Nessus has not tested for these issues but has instead relied only on the application’s self-reported version number.

#%NASL_MIN_LEVEL 80900
#
# (C) Tenable, Inc.
#
# @NOAGENT@
#
# The descriptive text and package checks in this plugin were
# extracted from Gentoo Linux Security Advisory GLSA 202403-03.
#
# The advisory text is Copyright (C) 2001-2021 Gentoo Foundation, Inc.
# and licensed under the Creative Commons - Attribution / Share Alike
# license. See http://creativecommons.org/licenses/by-sa/3.0/
#

include('compat.inc');

if (description)
{
  script_id(191479);
  script_version("1.0");
  script_set_attribute(attribute:"plugin_modification_date", value:"2024/03/03");

  script_cve_id("CVE-2022-31116", "CVE-2022-31117");

  script_name(english:"GLSA-202403-03 : UltraJSON: Multiple Vulnerabilities");

  script_set_attribute(attribute:"synopsis", value:
"");
  script_set_attribute(attribute:"description", value:
"The remote host is affected by the vulnerability described in GLSA-202403-03 (UltraJSON: Multiple Vulnerabilities)

  - UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. Affected
    versions were found to improperly decode certain characters. JSON strings that contain escaped surrogate
    characters not part of a proper surrogate pair were decoded incorrectly. Besides corrupting strings, this
    allowed for potential key confusion and value overwriting in dictionaries. All users parsing JSON from
    untrusted sources are vulnerable. From version 5.4.0, UltraJSON decodes lone surrogates in the same way as
    the standard library's `json` module does, preserving them in the parsed output. Users are advised to
    upgrade. There are no known workarounds for this issue. (CVE-2022-31116)

  - UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. In versions
    prior to 5.4.0 an error occurring while reallocating a buffer for string decoding can cause the buffer to
    get freed twice. Due to how UltraJSON uses the internal decoder, this double free is impossible to trigger
    from Python. This issue has been resolved in version 5.4.0 and all users should upgrade to UltraJSON
    5.4.0. There are no known workarounds for this issue. (CVE-2022-31117)

Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version
number.");
  script_set_attribute(attribute:"see_also", value:"https://security.gentoo.org/glsa/202403-03");
  script_set_attribute(attribute:"see_also", value:"https://bugs.gentoo.org/show_bug.cgi?id=855689");
  script_set_attribute(attribute:"solution", value:
"All UltraJSON users should upgrade to the latest version:

          # emerge --sync
          # emerge --ask --oneshot --verbose >=dev-python/ujson-5.4.0");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:N/I:N/A:P");
  script_set_cvss_temporal_vector("CVSS2#E:POC/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:P/RL:O/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2022-31116");

  script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"true");

  script_set_attribute(attribute:"vuln_publication_date", value:"2022/07/02");
  script_set_attribute(attribute:"patch_publication_date", value:"2024/03/03");
  script_set_attribute(attribute:"plugin_publication_date", value:"2024/03/03");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:ujson");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:gentoo:linux");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Gentoo Local Security Checks");

  script_copyright(english:"This script is Copyright (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("ssh_get_info.nasl");
  script_require_keys("Host/local_checks_enabled", "Host/Gentoo/release", "Host/Gentoo/qpkg-list");

  exit(0);
}
include('qpkg.inc');

if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
if (!get_kb_item('Host/Gentoo/release')) audit(AUDIT_OS_NOT, 'Gentoo');
if (!get_kb_item('Host/Gentoo/qpkg-list')) audit(AUDIT_PACKAGE_LIST_MISSING);

var flag = 0;

var packages = [
  {
    'name' : 'dev-python/ujson',
    'unaffected' : make_list("ge 5.4.0"),
    'vulnerable' : make_list("lt 5.4.0")
  }
];

foreach var package( packages ) {
  if (isnull(package['unaffected'])) package['unaffected'] = make_list();
  if (isnull(package['vulnerable'])) package['vulnerable'] = make_list();
  if (qpkg_check(package: package['name'] , unaffected: package['unaffected'], vulnerable: package['vulnerable'])) flag++;
}


if (flag)
{
  security_report_v4(
    port       : 0,
    severity   : SECURITY_WARNING,
    extra      : qpkg_report_get()
  );
  exit(0);
}
else
{
  qpkg_tests = list_uniq(qpkg_tests);
  var tested = qpkg_tests_get();
  if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
  else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'UltraJSON');
}
VendorProductVersionCPE
gentoolinuxujsonp-cpe:/a:gentoo:linux:ujson
gentoolinuxcpe:/o:gentoo:linux