CVE-2025-15284
Təsvir
qs (parse modulları) kitabxanasındakı yanlış giriş validasiyası zəifliyi HTTP DoS hücumuna yol açır. Bu problem qs: < 6.14.1 versiyalarına təsir edir. Xülasə qs kitabxanasındakı arrayLimit seçimi mötərizə notasiyası (a[]=1&a[]=2) üçün limitləri tətbiq etmir, yalnız indeksli notasiya (a[0]=1) üçün tətbiq edirdi. Bu, ardıcıllıq xətasıdır; arrayLimit bütün massiv notasiyalarında eyni şəkildə tətbiq olunmalıdır. Qeyd: Standart parameterLimit dəyərinin 1000 olması, əvvəlcə təsvir edilən DoS ssenarisini effektiv şəkildə yumşaldır. Standart seçimlərlə, hər bir a[]=value bir parametr yerini tutduğu üçün, arrayLimit-dən asılı olmayaraq mötərizə notasiyası parameterLimit-dən daha böyük massivlər yarada bilməz. Təhlükə dərəcəsi buna uyğun olaraq azaldılmışdır. Təfərrüatlar arrayLimit seçimi yalnız indeksli notasiya (a[0]=1&a[1]=2) üçün limitləri yoxlayırdı, lakin mötərizə notasiyası (a[]=1&a[]=2) üçün bunu tətbiq etmirdi. Zəiflik olan kod (lib/parse.js:159-162): if (root === '[]' && options.parseArrays) { obj = utils.combine([], leaf); // arrayLimit yoxlaması yoxdur } Düzgün işləyən kod (lib/parse.js:175): else if (index <= options.arrayLimit) { // Limit burada yoxlanılır obj = []; obj[index] = leaf; } 159-cu sətirdəki mötərizə notasiyası idarəçisi options.arrayLimit ilə validasiya aparmadan utils.combine([], leaf) funksiyasından istifadə edir, halbuki 175-ci sətirdəki indeksli notasiya massivləri yaratmazdan əvvəl index <= options.arrayLimit şərtini yoxlayır. 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); // Nəticə: 6 (maksimum 5 olmalı idi) parameterLimit qarşılıqlı təsiri haqqında qeyd: Orijinal bildirişdəki "DoS nümayişi" uzunluğun 10,000 olduğunu iddia edirdi, lakin parameterLimit (standart: 1000) parse prosesini 1,000 parametr ilə məhdudlaşdırır. Standart seçimlərlə faktiki nəticə 10,000 deyil, 1,000 olur. Təsir arrayLimit tətbiqində ardıcıllıq xətası. Standart parameterLimit ilə praktiki DoS riski cüzi səviyyədədir, çünki parameterLimit artıq parse edilən parametrlərin ümumi sayını (və beləliklə mötərizə notasiyasından gələn massiv elementlərini) məhdudlaşdırır. Risk yalnız parameterLimit açıq şəkildə çox yüksək dəyərə təyin edildikdə artır.
Necə düzəltmək olar
- qs_project qs6.14.1 və ya daha yeni versiya
- qs6.14.1 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| qs_project qs | v < 6.14.1 | 6.14.1 |
| qsnpm | v < 6.14.1 | 6.14.1 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.