Skip to content

[Aikido] Fix 10 critical issues in @asyncapi/cli, @asyncapi/generator, tough-cookie and 3 more#32

Open
aikido-autofix[bot] wants to merge 1 commit intomainfrom
fix/aikido-security-update-packages-18415492-h8nq
Open

[Aikido] Fix 10 critical issues in @asyncapi/cli, @asyncapi/generator, tough-cookie and 3 more#32
aikido-autofix[bot] wants to merge 1 commit intomainfrom
fix/aikido-security-update-packages-18415492-h8nq

Conversation

@aikido-autofix
Copy link
Copy Markdown
Contributor

@aikido-autofix aikido-autofix Bot commented Mar 6, 2026

Upgrade dependencies to fix critical RCE vulnerabilities in jsonpath-plus, prototype pollution in tough-cookie, and HTTP parameter pollution in form-data.

✅ 10 CVEs resolved by this upgrade, including 4 critical 🚨 CVEs

This PR will resolve the following CVEs:

Issue Severity           Description
CVE-2024-21534
🚨 CRITICAL
[@asyncapi/cli] A vulnerability in jsonpath-plus allows Remote Code Execution through improper input sanitization in the vm module, enabling attackers to execute arbitrary code on affected systems.
CVE-2025-1302
🚨 CRITICAL
[@asyncapi/cli] A dependency contains an incomplete fix for a prior RCE vulnerability, allowing attackers to execute arbitrary code through unsafe eval mode with improper input sanitization.
CVE-2023-26136
🚨 CRITICAL
[@asyncapi/cli] Versions of the package tough-cookie before 4.1.3 are vulnerable to Prototype Pollution due to improper handling of Cookies when using CookieJar in rejectPublicSuffixes=false mode. This issue arises from the manner in which the objects are initialized.
CVE-2025-7783
🚨 CRITICAL
[@asyncapi/cli] Use of Insufficiently Random Values vulnerability in form-data allows HTTP Parameter Pollution (HPP). This vulnerability is associated with program files lib/form_data.Js.

This issue affects form-data: < 2.5.4, 3.0.0 - 3.0.3, 4.0.0 - 4.0.3.
CVE-2021-23337
MEDIUM
[@asyncapi/cli] Lodash versions prior to 4.17.21 are vulnerable to Command Injection via the template function.
CVE-2025-26791
MEDIUM
[@asyncapi/cli] DOMPurify before 3.2.4 has an incorrect template literal regular expression, sometimes leading to mutation cross-site scripting (mXSS).
CVE-2026-23950
MEDIUM
[@asyncapi/cli] A race condition in path collision handling on case-insensitive filesystems allows attackers to bypass concurrency safeguards and perform symlink poisoning attacks, enabling arbitrary file overwrites through malicious tar archives.
CVE-2020-15366
MEDIUM
[@asyncapi/cli] A prototype pollution vulnerability in JSON schema validation allows arbitrary code execution through a maliciously crafted schema, escalating the security impact from denial of service to remote code execution.
CVE-2025-15284
LOW
[@asyncapi/cli] The qs parse module fails to enforce arrayLimit for bracket notation arrays (a[]=1&a[]=2), only checking it for indexed notation, allowing potential HTTP DoS through unbounded array creation. The practical impact is mitigated by default parameterLimit settings, but the inconsistency creates a security gap when parameterLimit is set to high values.
CVE-2026-3449
LOW
[@asyncapi/cli] A promise handling vulnerability causes indefinite hangs when AbortSignal is used, leaving promises in a permanently pending state and potentially stalling requests or blocking workers. This can lead to denial of service and degraded application availability.

@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 6, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cash-register-api-example-client Ready Ready Preview, Comment Mar 6, 2026 11:41pm

Request Review

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CVE-2026-2391 in qs - high severity

Summary

The arrayLimit option in qs does not enforce limits for comma-separated values when comma: true is enabled, allowing attackers to cause denial-of-service via memory exhaustion. This is a bypass of the array limit enforcement, similar to the bracket notation bypass addressed in GHSA-6rw7-vpxm-498p (CVE-2025-15284).

Details

When the comma option is set to true (not the default, but configurable in applications), qs allows parsing comma-separated strings as arrays (e.g., ?param=a,b,c becomes ['a', 'b', 'c']). However, the limit check for arrayLimit (default: 20) and the optional throwOnLimitExceeded occur after the comma-handling logic in parseArrayValue, enabling a bypass. This permits creation of arbitrarily large arrays from a single parameter, leading to excessive memory allocation.

Vulnerable code (lib/parse.js: lines ~40-50):

if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {
    return val.split(',');
}

if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {
    throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');
}

return val;

The split(',') returns the array immediately, skipping the subsequent limit check. Downstream merging via utils.combine does not prevent allocation, even if it marks overflows for sparse arrays.This discrepancy allows attackers to send a single parameter with millions of commas (e.g., ?param=,,,,,,,,...), allocating massive arrays in memory without triggering limits. It bypasses the intent of arrayLimit, which is enforced correctly for indexed (a[0]=) and bracket (a[]=) notations (the latter fixed in v6.14.1 per GHSA-6rw7-vpxm-498p).

PoC

Test 1 - Basic bypass:

npm install qs
const qs = require('qs');

const payload = 'a=' + ','.repeat(25);  // 26 elements after split (bypasses arrayLimit: 5)
const options = { comma: true, arrayLimit: 5, throwOnLimitExceeded: true };

try {
  const result = qs.parse(payload, options);
  console.log(result.a.length);  // Outputs: 26 (bypass successful)
} catch (e) {
  console.log('Limit enforced:', e.message);  // Not thrown
}

Configuration:

  • comma: true
  • arrayLimit: 5
  • throwOnLimitExceeded: true

Expected: Throws "Array limit exceeded" error.
Actual: Parses successfully, creating an array of length 26.

Impact

Denial of Service (DoS) via memory exhaustion.

Details

Remediation Aikido suggests bumping this package to version 6.14.2 to resolve this issue

Reply @AikidoSec ignore: [REASON] to ignore this issue.
More info

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.

0 participants