CVE-2026-43894

jq: Wild stack write via signed-integer overflow in decNumber D2U() macro

Published May 11, 2026 CVSS 3.1 · 6.2 Medium EPSS < 1% KEV · Not listed
Description
jq is a command-line JSON processor. In 1.8.1 and earlier, when decNumberFromString is given a number literal of INT_MAX-1 (2147483646) digits, the D2U() macro overflows during signed-int arithmetic. The wrapped negative value bypasses the heap-allocation size check, causes the function to use a 30-byte stack buffer, and then writes ≈715 million 16-bit units (≈1.4 GiB) at an offset 1.43 GiB below the stack frame. The written content is fully attacker-controlled (the parsed decimal digits, packed 3-per-unit).

Analysis

AI-generated

Technical impact

jq processes JSON via a command-line tool. In versions up to 1.8.1, supplying a decimal literal with INT_MAX‒1 digits triggers an integer overflow in the decNumber D2U() macro. The overflow causes the function to bypass a heap‑allocation size check, use a 30‑byte stack buffer, and then write roughly 1.4 GiB of attacker‑controlled data at an offset well below the stack frame. The written content is derived directly from the parsed decimal digits, allowing the attacker to fabricate arbitrary data in the process memory. As a result, an attacker who can supply such input can corrupt stack memory, potentially leading to control‑flow hijack or denial of service.

Affected Systems

The vendor “jqlang” provides the jq tool. Versions 1.8.1 and earlier are affected; newer releases are not listed as vulnerable in the advisory.

Risk and Exploitability

The CVSS score of 6.2 indicates a moderate severity vulnerability. No EPSS data is available, and the vulnerability is not listed in the CISA KEV catalog. The exploit requires the attacker to invoke jq with a specially crafted numeric literal, so the attack vector is likely local or based on untrusted input to jq. The resulting stack write can overwrite return addresses or control‑flow data, giving the attacker the ability to execute arbitrary code or crash the process. While remote exploitation is not explicitly described, any environment that allows untrusted data to reach jq is potentially at risk.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade jq to a version newer than 1.8.1, ensuring the flaw is fixed.
  • Remove or quarantine any copies of the vulnerable jq binary so it cannot be invoked by applications or users.
  • Audit scripts and pipelines that use jq to confirm they are running the patched version and that no untrusted numeric literals are processed by the tool.

Generated by OpenCVE AI on May 11, 2026 at 19:36 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DLA Debian DLA DLA-4661-1 jq security update
Debian DLA Debian DLA DLA-4662-1 jq security update
Debian DSA Debian DSA DSA-6416-1 jq security update
History
Type Values Removed Values Added
CPEs cpe:2.3:a:jqlang:jq:*:*:*:*:*:*:*:*
Type Values Removed Values Added
First Time appeared Jqlang
Jqlang jq
Vendors & Products Jqlang
Jqlang jq
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description jq is a command-line JSON processor. In 1.8.1 and earlier, when decNumberFromString is given a number literal of INT_MAX-1 (2147483646) digits, the D2U() macro overflows during signed-int arithmetic. The wrapped negative value bypasses the heap-allocation size check, causes the function to use a 30-byte stack buffer, and then writes ≈715 million 16-bit units (≈1.4 GiB) at an offset 1.43 GiB below the stack frame. The written content is fully attacker-controlled (the parsed decimal digits, packed 3-per-unit).
Title jq: Wild stack write via signed-integer overflow in decNumber D2U() macro
Weaknesses CWE-190
References
Metrics cvssV3_1

{'score': 6.2, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

Weaknesses
  • CWE-190

    Integer Overflow or Wraparound

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
May 11, 2026, 6:32 PM
Reserved
May 4, 2026, 3:17 PM
Status
Analyzed
Published
May 11, 2026, 6:16 PM
Modified
Oct 26, 2026, 6:10 PM
Severity
Moderate
Public date
May 11, 2026, 5:20 PM