CVE-2025-15284

Red Hat Security Advisory: RHOAI 3.3 - Red Hat OpenShift AI

Beschreibung

Fehlerhafte Eingabevalidierung in qs (Parse-Modulen) ermöglicht HTTP DoS. Dieses Problem betrifft qs: < 6.14.1.

Zusammenfassung

Die Option arrayLimit in qs wurde nicht für die Bracket-Notation (a[]=1&a[]=2) durchgesetzt, sondern nur für die indexierte Notation (a[0]=1). Dies ist ein Konsistenzfehler; arrayLimit sollte einheitlich auf alle Array-Notationen angewendet werden.

Hinweis: Die Standardoption parameterLimit von 1000 mildert das ursprünglich beschriebene DoS-Szenario effektiv ab. Mit den Standardeinstellungen kann die Bracket-Notation Arrays nicht größer als parameterLimit erzeugen, unabhängig von arrayLimit, da jedes a[]=value einen Parameterplatz belegt. Die Schwere wurde dementsprechend reduziert.

Details

Die Option arrayLimit prüfte nur Grenzwerte für die indexierte Notation (a[0]=1&a[1]=2), aber nicht für die Bracket-Notation (a[]=1&a[]=2).

Anfälliger Code (lib/parse.js:159-162):

if (root === '[]' && options.parseArrays) {
    obj = utils.combine([], leaf);  // Keine arrayLimit-Prüfung
}

Funktionsfähiger Code (lib/parse.js:175):

else if (index <= options.arrayLimit) {  // Grenzwert wird hier geprüft
    obj = [];
    obj[index] = leaf;
}

Der Handler für die Bracket-Notation in Zeile 159 verwendet utils.combine([], leaf), ohne gegen options.arrayLimit zu validieren, während die indexierte Notation in Zeile 175 prüft, ob index <= options.arrayLimit vor der Erstellung von Arrays.

PoC

const qs = require('qs');
const result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4&a[]=5&a[]=6', { arrayLimit: 5 });
console.log(result.a.length);  // Ausgabe: 6 (sollte max 5 sein)

Hinweis zur Interaktion mit parameterLimit: Die ursprüngliche Warnung behauptete eine Länge von 10.000 in der "DoS-Demonstration", aber parameterLimit (Standard: 1000) begrenzt das Parsen auf 1.000 Parameter. Mit den Standardeinstellungen ist die tatsächliche Ausgabe 1.000, nicht 10.000.

Auswirkungen

Konsistenzfehler in der Durchsetzung von arrayLimit. Mit dem StandardparameterLimit ist das praktische DoS-Risiko vernachlässigbar, da parameterLimit die Gesamtzahl der analysierten Parameter (und damit die Array-Elemente aus Bracket-Notation) begrenzt. Das Risiko steigt nur dann an, wenn parameterLimit explizit auf einen sehr hohen Wert gesetzt wird.

Metriken

Severity
medium
kein öffentlicher PoC bekannt
6.3
Quelle: nvd-v4
38.3 %
Hoch — CVE rangiert über dem Median aller heute bewerteten CVEs (Rang ≥ 36 %).
0.5 %
Niedrig — Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Veröffentlicht
2026-03-04 07:18 UTC
CWE-20

Weakness-Klassen (CWE)

  • CWE-20Class

    Improper Input Validation

    The product receives input or data, but it does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly.

    cwe.mitre.org →

Betroffene Produkte

Aus der Hersteller-/CERT-Meldung extrahierte Produkte und Versionsbereiche. Ein Version-Range wie „<4.14.6“ impliziert die Update-Empfehlung „auf 4.14.6 oder höher aktualisieren“.

  • aiohttp

    aiohttp3.13.3

  • anyscale

    ray2.52.0

  • bitnami

    argo-workflows3.0.0

  • bitnami

    golang1.25.0

  • bitnami

    php-min8.2.0

  • bitnami

    php-min8.3.0

  • bitnami

    php-min8.4.0

  • bitnami

    php-min8.5.0

  • go

    github.com/containerd/containerd

  • go

    github.com/containerd/containerd/v22.1.0-beta.0

  • go

    github.com/containerd/containerd/v22.2.0-beta.0

  • go

    github.com/expr-lang/expr

  • go

    github.com/kedacore/keda

  • go

    github.com/kedacore/keda/v22.18.0

  • go

    github.com/sigstore/fulcio

  • golang

    go1.25.0 – 1.25.6

  • golang

    go1.24.12

  • google

    sentencepiece0.2.1

  • IBM

    Concert< 3.0.0

    gefixt in 3.0.0

  • keras

    keras3.0.0 – 3.13.0

  • npm

    @langchain/core1.0.0

  • npm

    @langchain/core

  • npm

    langchain1.0.0

  • npm

    langchain

Quellen & Referenzen

Verknüpfte CVEs

21 weitere CVEs anzeigen
IDCVE-2025-15284