Node.js Təhlükəsizlik Boşluğu: Node2Shell Exploit-u ilə RCE Riski
Tədqiqatçılar, Node.js proqramları daxilində xüsusi olaraq hazırlanmış, Brotli sıxılmış məlumatlar vasitəsilə zərərli kodun icrasına imkan verən Node2Shell adlı işlək bir Exploit nümayiş etdiriblər. Bu tədqiqat, Node.js ilə birlikdə gələn Brotli dekompressorunda aşkarlanan CVE-2026-111497 identifikatorlu, yüksək riskli yaddaş boşluğunu hədəf alır.
21 oktyabr 2026-cı ildə dərc edilmiş Node.js təhlükəsizlik bülleteni, bu boşluğun uzaqdan kod icrasına (RCE) yol aça biləcəyini və 22.x, 24.x, həmçinin 26.x buraxılış xətlərinə təsir etdiyini təsdiqləyir. Bütün üç filial üçün düzəlişlər artıq mövcuddur.
Node2Shell Exploit-un Təfərrüatları
Imperva tərəfindən təqdim edilən tədqiqata görə, müstəqil Proof of Concept (PoC) Node.js 24.22.0 Linux arm64 imicinə qarşı debuggersiz və ya dəyişdirilmiş binar fayl olmadan işləmişdir. Sıxılmış məlumatlarla ötürülən kod, test proqramının yaratmağa göstəriş verilmədiyi bir marker faylı yaratmışdır.
Sınaqdan keçirilmiş qurğuda kodun icrası bir neçə cəhd tələb etmişdir. Nəticələr, bu xüsusi quruluş və proqram konfiqurasiyasında istismarı təsdiqləyir, lakin hər bir Node.js platformasında etibarlı icranı təmin etmir.
Təhlükəsizlik Boşluğunun Mexanizmi
Boşluq, dekompressorun Brotli axını daxilində blok növləri arasında etibarsız bir keçidlə qarşılaşması zamanı ortaya çıxır. Zərərli kod, pozulmuş axını rədd etmək əvəzinə, bu vəziyyəti daha çox girişə ehtiyac kimi qəbul edir və etibarsız daxili vəziyyətlə işləməyə davam edir.
Imperva-nın ayrıca yaddaş-sanitizer testi göstərmişdir ki, bu davranış nəzərdə tutulan buferin xaricinə yazmağa səbəb ola bilər. Bu yaddaş xarici yazma (out-of-bounds write), nümayiş etdirilmiş kod icrasının əsasında duran yaddaş zədələnməsini təmin edir.
Yenilənmiş dekompressor, etibarsız keçid üçün format xətası qaytarır. Node.js 24.22.1 buraxılış qeydləri, Brotli təhlükəsizlik düzəlişinin daxil edildiyini təsdiqləyir. Imperva-nın proqram testlərində, bu buraxılış eyni zərərli girişləri marker faylı yaratmadan rədd etmişdir.
Hücum Vektorları və Təsirlənən Komponentlər
Imperva, Node.js-in daxili fetch() funksiyası vasitəsilə istifadə edilən sıxılmış HTTP cavablarını və konfiqurasiya edilmiş Express və body-parser middleware tərəfindən dekompressiya edilən gələn sorğu gövdələrini sınaqdan keçirmişdir.
Sınaqdan keçirilən qurğulara Express 5.0.0 body-parser 2.0.1 ilə, Express 5.3.0 body-parser 2.3.0 ilə və müstəqil body-parser 2.0.0 daxil idi. Həm raw(), həm də json() parser yolları sınaqdan keçirilən zərərli mühitlərdə kod icrasına imkan vermişdir.
Bu paketlər, əsas boşluğu ehtiva etmək əvəzinə, təsirlənmiş dekompressora yollar təqdim edir. Yalnız Node.js HTTP serveri gələn Brotli gövdələrini avtomatik olaraq dekompressiya etmir.
Müdafiə və Tövsiyələr
Kibertəhlükəsizlik xəbərləri əvvəllər Node.js təhlükəsizlik yeniləmələri haqqında hesabatında təsirlənmiş filialları əhatə etmişdi. 21 oktyabr təhlükəsizlik icmalı da yenilənmiş runtime ilə konteyner imiclərinin yenidən qurulmasının zəruriliyini vurğulayır.
Administratorlar Node.js 22.23.4, 24.22.1 və ya 26.12.1 versiyalarını, yaxud bu filiallardakı daha yeni düzəliş edilmiş versiyaları tətbiq etməlidirlər. Rəsmi bülleten bu buraxılışları boşluğu aradan qaldıran təhlükəsizlik yeniləmələri kimi siyahıya alır.
Komandalar tətbiq edilmiş konteynerlərdə və hostlarda mövcud Node.js binar faylını yoxlamalı, sonra isə hansı xidmətlərin etibarsız sıxılmış sorğuları və ya cavabları dekompressiya etdiyini nəzərdən keçirməlidirlər.
Imperva, təkrar istehsal edilmiş istismar cəhdlərini əhatə edən WAF qaydaları əlavə etdiyini bildirir. Bu nəzarətlər müvəqqəti qoruma təmin etsə də, zərərli runtime-ın dəyişdirilməsi əsas olaraq qalır. Dekompressor xətaları və gözlənilməz proses çıxışları araşdırmaya dəstək ola bilər, lakin bunların heç biri təkbaşına uğurlu istismarı sübut etmir.