CVE-2026-82562

Aşağı

Təsvir

### Xülasə `qs.parse` funksiyası `comma: true` və `throwOnLimitExceeded: true` parametrləri ilə çağırıldıqda, mötərizəli açar altında olan vergüllə ayrılmış dəyər (`a[]=1,2,3,4`) `arrayLimit` ilə müqayisə edilmədən massivə bölünür. Eyni dəyər düz açar (`a=1,2,3,4`), indeksli açar (`a[0]=`), iç-içə açar (`a[b]=`) və ya nöqtəli açar (`allowDots` ilə `a.b=`) altında olduqda isə sənədləşdirilmiş `RangeError` xətası baş verir. Beləliklə, çağıran tərəf sərt limiti seçmiş olsa belə, `a[]=1,2,2,...` kimi tək bir parametr istənilən uzunluqda daxili massiv yaradır. Bu, CVE-2026-2391 üçün tətbiq edilən düzəlişin (qs 6.14.2) əhatə etmədiyi `[]=` açar formasıdır. ### Təfərrüatlar `lib/parse.js` faylında, `[]=` açarı altındakı vergüllə ayrılmış dəyər bölünür və sonra tək bir iç-içə element kimi paketlənir (`val = [val]`, beləliklə hər bir `a[]=x,y` qrupu xarici massivin bir elementi kimi sayılır). Versiya 6.14.2-də vergül dəyərləri üçün əlavə edilmiş `arrayLimit` yoxlaması həmin paketləmədən sonra işə düşür, buna görə də `[]=` hissələri üçün o, yalnız uzunluğu 1 olan paketleyiciyi görür. Versiya 6.15.3-də, həddindən artıq böyük dəyərin ayrılmadan əvvəl xəta verməsi üçün bölgü öncəsi vergül sayı əlavə edildi, lakin bu, `parseValues` tərəfindən `[]=` ehtiva edən hər hansı hissə üçün `false` təyin edilən `isFlatArrayValue` bayrağına bağlandı və obyekt tipli girişlər üçün ötürülmədi, buna görə də boşluq qaldı. #### PoC ```js var qs = require('qs'); var options = { comma: true, arrayLimit: 3, throwOnLimitExceeded: true }; qs.parse('a=1,2,3,4', options); // RangeError: Array limit exceeded. Only 3 elements allowed in an array. qs.parse('a[]=1,2,3,4', options); // { a: [ [ '1', '2', '3', '4' ] ] } (xəta vermir) qs.parse('a[]=' + '1,'.repeat(1000000) + '1', { comma: true, arrayLimit: 20, throwOnLimitExceeded: true }); // xəta vermir; 1,000,001 elementli daxili massiv ayrılır ``` #### Düzəliş `lib/parse.js`, `main` budağında 8859c37 commit-i ilə tətbiq edilmiş və v6.16.0 versiyasında buraxılmışdır: `isFlatArrayValue` məhdudiyyəti kaldırıldı, beləliklə, açarın formasından asılı olmayaraq hər bir vergüllə bölünmüş dəyər bölünməzdən əvvəl `arrayLimit`-ə görə hesablanır. `a[]=` altındakı limit daxilindəki qrup hələ də xarici massivin bir elementi kimi sayılır və standart (`throwOnLimitExceeded: false`) yol dəyişməz qalır. ### Təsirə məruz qalan versiyalar `>=6.14.2 <6.16.0`, v6.16.0 versiyasında düzəldilib. v6.14.2 versiyası vergül dəyərləri üçün `arrayLimit` tətbiqini (CVE-2026-2391 üçün düzəliş) gətirdi, lakin bu yalnız `[]=` açarı altında olmayan dəyərlər üçün idi və v6.14.2-dən v6.15.3-ə qədər olan bütün buraxılışlarda eyni boşluq mövcuddur. `throwOnLimitExceeded` mövcud olduğu, lakin heç bir vergül formasına şamil edilmədiyi v6.14.0 və v6.14.1 versiyaları bu qeyd əvəzinə CVE-2026-2391 tərəfindən əhatə olunur. Daha erkən xətlərdə (6.7.x - 6.13.x arası) `comma` var, lakin `throwOnLimitExceeded` yoxdur, buna görə də yan keçilə biləcək heç bir sərt limit mövcud deyil; 6.7.0-dan əvvəlki buraxılışlarda isə `comma` seçimi yoxdur. ### Təsir Həm `comma: true`, həm də `throwOnLimitExceeded: true` (hər ikisi standart deyil) parametrləri ilə etibarsız sorğu sətirlərini (query strings) və ya urlencoded gövdələri parse edən tətbiqə çata bilən autentifikasiya olunmamış hücumçu, tək bir `a[]=` parametri ilə konfiqurasiya edilmiş limiti yan keçə və parseri sorğu ölçüsü ilə mütənasib massiv ayırmağa məcbur edə bilər. Xərc hücumçunun təqdim etdiyi baytlarla ciddi şəkildə xətti şəkildə artır (giriş baytı başına təxminən 0.1 mikrosaniyə və 6-7 saxlanılan bayt; sənədləşdirilmiş standart `throwOnLimitExceeded: false` yolu ilə eyni yaddaş çatışmazlığı (out-of-memory) həddi), buna görə də nəqliyyat layihəsi sorğu və ya gövdə ölçüsü limiti bunu tamamilə məhdudlaşdırır (Node-un standart maksimum HTTP başlıq ölçüsü olan 16 KB artıq sorğu sətirini məhdudlaşdırır, ona görə də çoxmeqabaytlı yüklər üçün gövdə parseri lazımdır). Təsir ondan ibarətdir ki, seçilmiş sərt limit bir açar yazılışı zamanı effektiv olmaz, lakin bu, kiçik girişdən sonsuz yaddaş ayrılmasına səbəb olmur.

CiddilikAşağı
CVSS3.7
İstismar ehtimalı—
MəhsulQs
Dərc30 avq 2026
İlk görülmə30 avq 2026

Necə düzəltmək olar

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
qsnpm6.14.2 ≤ v < 6.16.06.16.0

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.

Intelligence 360 paketində

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.

CVE-2026-82562 · Qs · Dark Radar