Node.js-ը շտկել է Brotli-ի խոցելիությունն ու արգելափակել վկայականների՝ ըստ հաղորդումների վտանգված բանալիները
Node.js-ը շտկել է Brotli-ի խոցելիությունն ու արգելափակել վկայականների՝ ըստ հաղորդումների վտանգված բանալիները
Հոկտեմբերի 21-ի անվտանգության թարմացումներն ընդգրկում են աջակցվող բոլոր երեք ճյուղերը՝ ծրագրերի սպասարկողներին տրամադրելով ապասեղմման ռիսկերի շտկումներ և ութ վկայականային բանալիների արգելափակում, որոնց վտանգված լինելու մասին հաղորդվել էր։
Node.js-ը 2026-ի հոկտեմբերի 21-ին անվտանգության թարմացումներ է թողարկել՝ իր աջակցվող երեք ճյուղերում շտկելով 10 խոցելիություն և արգելափակելով վկայականների ութ բանալի, որոնց վտանգված լինելու մասին հաղորդվել էր։ Wiz-ի՝ հոկտեմբերի 26-ին հրապարակված գնահատմամբ՝ ամպային միջավայրերի 91%-ում կան խոցելի բաղադրիչներ, իսկ 82%-ում՝ հանրային ինտերնետից հասանելի Node.js գործարկումներ։ Այս ցուցանիշները չեն հաստատում, որ տեղակայումները հնարավոր է շահագործել կամ որ դրանց անվտանգությունն արդեն խախտվել է։
Brotli-ն Google-ի սեղմման ձևաչափն է, որն օգտագործվում է վեբ էջերի և փոխանցվող այլ տվյալների ծավալը փոքրացնելու համար։ Խոցելիությունն ապակոդավորիչում է՝ սեղմված տվյալները բացող կոդում։ Այդ կոդը ներառող յուրաքանչյուր արտադրանք պետք է թարմացնի իր սեփական պատճենը։ Հավելվածը վտանգի է ենթարկվում միայն այն դեպքում, երբ ապակոդավորում է ուրիշի վերահսկողության տակ գտնվող Brotli տվյալներ։
Wiz-ի գնահատմամբ՝ ամպային միջավայրերը լայնորեն ենթակա են ռիսկի
Հոկտեմբերի 26-ի իր հոդվածում The Register-ը մեջբերում է Wiz-ի սպառնալիքների հետազոտող Մերավ Բարի գնահատականները։ Տոկոսները նկարագրում են տարբեր պայմաններ՝ խոցելի ծրագրային բաղադրիչների օգտագործումը և հանրային ինտերնետից հասանելի Node.js գործարկումների առկայությունը։
Wiz-ի գնահատականները՝ ամպային միջավայրերում բաղադրիչների առկայության և հանրային հասանելիության վերաբերյալ
Ցուցանիշ
Ամպային միջավայրերի գնահատված մասնաբաժին
Օգտագործում են Brotli-ի խոցելիությունն ունեցող բաղադրիչներ
W27-ը պահպանել է Galaxy Z Fold 8 Ultra-ի հիմնական սարքավորումները։ Այն հասանելի է մուգ կարմիր կամ մուգ կապույտ գույներով, ոսկեգույն շեշտադրումներով և երկու տարբերակում էլ ունի 16 ԳԲ օպերատիվ հիշողություն։
Ունեն հանրային ինտերնետից հասանելի Node.js գործարկումներ
82%
Node.js գործարկման հանրային հասանելիությունն ինքնին չի նշանակում, որ հարձակվողը կարող է հասնել խոցելի ապակոդավորիչին։ Դրա համար հավելվածը պետք է ապասեղմի հարձակվողի վերահսկողության տակ գտնվող Brotli տվյալներ, օրինակ՝ հարցման մարմին կամ այլ սերվերից ստացված պատասխան։ Այս գնահատականները չեն ներկայացնում հաստատված՝ շահագործման ենթակա տեղակայումների կամ հաջողված հարձակումների քանակը։
Microsoft-ի և Ruby-ի փաթեթի շտկումները
Microsoft-ը հոկտեմբերի 25-ին .NET-ի շտկումները թողարկել է թարմացումների սովորական ժամանակացույցից դուրս։ Ruby-ի brotli փաթեթի շտկումը թողարկվել է հոկտեմբերի 24-ին։ Այս շտկումներն ու ռիսկի ենթարկվելու լրացուցիչ ուղիները մանրամասն ներկայացվել են The Hacker News-ի հոկտեմբերի 24-ի հոդվածում, որը լրացվել է հոկտեմբերի 26-ին։
Հոկտեմբերի 24–25-ին հրապարակված լրացուցիչ շտկված թողարկումները
Ծրագրաշար
Շտկված թողարկում
Թողարկման ամսաթիվ
.NET 8
8.0.33
Հոկտեմբերի 25
.NET 9
9.0.22
Հոկտեմբերի 25
.NET 10
10.0.14
Հոկտեմբերի 25
.NET 11-ի նախնական տարբերակներ
Release Candidate 3
Հոկտեմբերի 25
Ruby-ի brotli փաթեթ
0.9.1
Հոկտեմբերի 24
Microsoft-ի խոսքով՝ խոցելի .NET փաթեթի առկայությունն ինքնին հավելվածը վտանգի չի ենթարկում։ Դրա համար հավելվածը պետք է ապակոդավորի հարձակվողի վերահսկողության տակ գտնվող Brotli տվյալներ՝ ASP.NET Core-ում հարցումների ապասեղմման, HttpClient-ում պատասխանների ապասեղմման կամ ապակոդավորման ուղղակի կանչերի միջոցով։ Առաջին երկու հնարավորությունները լռելյայն անջատված են։ .NET Framework-ը խոցելի չէ։
Microsoft-ը հնարավոր հետևանքների թվում նշում է հիշողության տվյալների բացահայտումը կամ վնասումը, ծառայության մերժումը՝ հավելվածն անհասանելի դարձնելը, և արտոնությունների բարձրացումը՝ հարձակվողի առկա թույլտվություններից ավելի լայն հասանելիություն ստանալը։ Ընկերության անվտանգության ծանուցման մեջ կոդի հեռավար գործարկումը որպես հետևանք նշված չէ։ JFrog-ը ցուցադրել է .NET փորձնական ծրագրի աշխատանքի խափանումը՝ դրա Brotli միջերեսների միջոցով։
.NET-ի ընդհանուր գործարկման միջավայրն օգտագործող հավելվածների համար պետք է թարմացնել այդ միջավայրն ու վերագործարկել հավելվածները։ Իրենց գործարկվող ֆայլում ապակոդավորիչը ներառող ինքնաբավ և NativeAOT հավելվածները պետք է վերահավաքել և վերահրապարակել։ Կոնտեյներների պատկերները պետք է վերահավաքել .NET-ի թարմացված պատկերների հիման վրա։
Մինչև թարմացումը Microsoft-ը խորհուրդ է տալիս անջատել Brotli-ն հարցումների ապասեղմման և HttpClient-ի առկա կազմաձևերում։ Ընկերությունը զգուշացնում է ապասեղմում չավելացնել այնտեղ, որտեղ այն դեռ չի օգտագործվում, քանի որ դա կարող է ծառայության մերժման ռիսկեր ստեղծել։ Ruby-ի շտկված brotli փաթեթը ներառում է Brotli 1.2.1-ը և չշտկված համակարգային գրադարանի փոխարեն օգտագործում է այդ պատճենը։
JFrog-ը պատկերների և տվյալների ֆայլերում հայտնաբերել է խոցելիությանը հասնելու ուղիներ
JFrog-ը հոկտեմբերի 25-ին հայտնել է, որ խոցելիությունն առկա է նաև FFmpeg-ում, ClickHouse-ում և Apache Arrow-ում։ Որոշ ուղիներ սկսվում են ֆայլից, ուստի Content-Encoding: br նշումով վեբ հարցումները մերժող միջցանցային էկրանն այդ ուղիներից չի պաշտպանում։
FFmpeg-ում դեպի Brotli ուղին անցնում է libjxl գրադարանով, որն ապասեղմում է JPEG XL պատկերների ներսում մետատվյալները։ Հատուկ պատրաստված պատկերը JFrog-ին թույլ է տվել վերահսկել հրահանգի ցուցիչը, որը որոշում է, թե հաջորդիվ որ կոդը կգործարկվի։ JFrog-ի խոսքով՝ կոդի գործարկման հասնելու համար լրացուցիչ աշխատանք կպահանջվեր։ Ընկերությունը FFmpeg-ի համար առանձին շտկման մասին չի հայտնել։ libjxl-ի օգտագործած Brotli գրադարանի թարմացումը փակում է այս ուղին։
Բաց ելակետային կոդով ClickHouse տվյալների բազան Brotli-ն ապակոդավորում է վեբ հարցումների մարմիններում, .br ֆայլերում և Parquet տվյալների ֆայլերում, ինչպես նշված է շտկման առաջարկում։ JFrog-ը մոտ 23 MB ծավալով մեկ հատուկ պատրաստված հարցմամբ խափանել է սերվերի աշխատանքը՝ ցուցադրելով ծառայության մերժում, ոչ թե պնդելով, որ կարողացել է կոդ գործարկել։ JFrog-ի արդյունքների հրապարակման պահին շտկված թողարկում դեռ չկար։ Ներառված Brotli-ն մինչև 1.2.1 թարմացնող փոփոխությունը հոկտեմբերի 26-ին միացվել է ClickHouse-ի 26.9 ճյուղին։
Apache Arrow-ի խնդիրների գրանցման համակարգի գրառման համաձայն՝ նախագծի C++ հավաքածուները ներառում են Brotli 1.0.9-ը, և խոցելիությունը կարող է գործարկվել Brotli-ով սեղմված տվյալներ պարունակող Parquet կամ Arrow IPC ֆայլերի միջոցով։ Շտկված համակարգային Brotli գրադարանին կապակցված հավաքածուները խոցելի չեն։ Հոկտեմբերի 26-ի դրությամբ գրառմանը կցված չէր շտկում, և սպասարկողներից պատասխան չկար։
Arrow-ի Python փաթեթում՝ pyarrow-ում, JFrog-ը հայտնաբերել է, որ 534 բայթ ծավալով մուտքային տվյալներն ապասեղմումը գցում են անվերջ շրջափուլի մեջ՝ պրոցեսորը շարունակաբար զբաղված պահելով։ Դա ծառայության մերժում է, ոչ թե ծրագրի վթարային ավարտ կամ կոդի գործարկում։
Հասանելի այլ շտկումներ
Հոկտեմբերի 24-ին մանրամասն ներկայացված շտկումներն ընդգրկում էին Bun-ը, Python-ի փաթեթները, Envoy-ն և Istio-ն։ Debian-ն իր 13-րդ տարբերակի փաթեթը շտկել է հոկտեմբերի 23-ին։ Ռիսկի ենթարկվելու պայմանները նույնքան կարևոր են, որքան տեղադրված տարբերակը։
Brotli-ի այլ շտկումներն ու ռիսկի ենթարկվելու պայմանները
Ծրագրաշար
Խոցելի տարբերակներ
Շտկված տարբերակներ
Ռիսկի ենթարկվելու պայման
Google Brotli-ի C գրադարան
1.0.3–1.2.0՝ բացառությամբ շտկված թողարկումների
1.0.10, 1.1.1, 1.2.1
Կոդն ապակոդավորում է անվստահելի Brotli տվյալներ
Bun
1.4.3 և ավելի վաղ տարբերակներ
1.4.4
fetch()-ն ապակոդավորում է Brotli պատասխան, կամ node:zlib-ն ապակոդավորում է անվստահելի տվյալներ
Python-ի Brotli փաթեթ
1.2.0 և ավելի վաղ տարբերակներ
1.2.1
Փաթեթը տեղադրված է, և HTTP հաճախորդն ապակոդավորում է անվստահելի Brotli պատասխան
Python-ի brotlicffi փաթեթ
1.2.0.x և ավելի վաղ տարբերակներ
1.2.1.0
Փաթեթը տեղադրված է, և HTTP հաճախորդն ապակոդավորում է անվստահելի Brotli պատասխան
Envoy
1.39.2, 1.38.5, 1.37.7, 1.36.11
1.40.0, 1.39.3, 1.38.6, 1.37.8, 1.36.12
Brotli-ի ապասեղմումը կազմաձևված է և ստանում է անվստահելի տվյալներ
Istio
1.31.0–1.31.1, 1.30.0–1.30.5, 1.29.0–1.29.8
1.31.2, 1.30.6, 1.29.9
Brotli-ի ապասեղմումը միացված է և ստանում է անվստահելի տվյալներ
Debian 13-ի (trixie) brotli փաթեթ
Չշտկված փաթեթ
1.1.0-2+deb13u1՝ թողարկված հոկտեմբերի 23-ին
Փաթեթն օգտագործող ծրագրաշարն ապակոդավորում է անվստահելի Brotli տվյալներ
Python-ում Brotli-ի երկու փաթեթներից որևէ մեկի տեղադրումը կարող է հանգեցնել նրան, որ HTTP հաճախորդներն ինքնաշխատ ապակոդավորեն Brotli պատասխանները, նույնիսկ եթե հավելվածն իր կոդում չի ներմուծում այդ փաթեթը։ Envoy-ում և Istio-ում խոցելիությունը հնարավոր չէ գործարկել, երբ Brotli-ի ապասեղմումն անջատված է։
Python-ի անվտանգության ծանուցումների PYSEC-2026-4322 և PYSEC-2026-4323 գրառումներն ավելացվել են հոկտեմբերի 23-ին։ Կախվածությունների ստուգման գործիքները հնարավոր է՝ դեռ չնշեն այդ փաթեթները որպես խոցելի․ խոցելիության գրառման մեջ նշված է Google-ի շտեմարանը, ոչ թե Python-ի փաթեթները, իսկ որոշ գործիքների օգտագործած ծանուցումների տվյալներում բացակայում է խոցելի փաթեթի գրառումը։ Ծրագրերի սպասարկողները պետք է տեղադրված տարբերակները ստուգեն նաև ձեռքով։
Ինչպես է խոցելիությունը հասնում Node.js հավելվածներին
CVE-2026-111497 խոցելիության պատճառով սխալ ձևաչափով սեղմված տվյալները կարող են ստիպել ապակոդավորիչին տվյալներ գրել իրեն հատկացված հիշողության բուֆերի սահմաններից դուրս։ Բուֆերի սահմաններից դուրս այս գրառումը կարող է առաջացնել աշխատանքի խափանում, բացահայտել գործընթացի հիշողության տվյալները կամ հնարավոր դարձնել հարձակվողի կոդի գործարկումը։ Node.js-ը խոցելիությունը գնահատում է որպես բարձր վտանգավորության, իսկ Google-ը՝ կրիտիկական՝ խոցելիությունների գնահատման CVSS 4.0 սանդղակով տալով 9,2 միավոր։
Node.js-ում սխալը ներառված կոդում է, ոչ թե հավելվածի սեփական ծրագրում, և առկա է 22.x, 24.x ու 26.x ճյուղերի չշտկված տարբերակներում։ Ներկառուցված fetch() գործառույթն ապակոդավորում է Content-Encoding: br վերնագրով նշված պատասխանները․ այդ վերնագիրը ցույց է տալիս, որ կիրառված է Brotli սեղմումը։ Հավելվածները կարող են ապակոդավորիչը կանչել նաև node:zlib-ի կամ միջանկյալ ծրագրաշարի՝ մուտքային հարցումները մշակող ծրագրի միջոցով։
Սովորական Node.js վեբ սերվերը հարցման մարմինը չի ապասեղմում պարզապես այն ստանալու պատճառով։ Express 5-ի՝ հարցման մարմինը վերլուծող բաղադրիչներն ապակոդավորում են Brotli-ն, երբ կիրառվում են տվյալ երթուղու համար։ Node.js-ը շտկումը վերցրել է Brotli նախագծից։ Այն ստիպում է ապակոդավորիչին մերժել անվավեր մուտքային տվյալները՝ հաղորդելով ձևաչափի սխալ, այլ ոչ թե շարունակել աշխատանքը բուֆերի սահմաններից դուրս։
Imperva-ն կոդի գործարկում է ցուցադրել Node.js-ի մեկ հավաքածուում
Հոկտեմբերի 23-ի հրապարակման մեջ նկարագրվել է, թե ինչպես են Imperva-ի հետազոտողները հարձակվողի տրամադրած կոդ գործարկել Linux ARM64-ի համար նախատեսված Node.js 24.22.0-ի պաշտոնական պատկերում՝ առանց վրիպազերծիչի կամ հատուկ պատրաստված հավաքածուի։ Տվյալները փոխանցել են ստացված պատասխանների և Express-ի հարցումների մարմինների միջոցով։ Հաջողության համար մի քանի փորձ է պահանջվել, և արդյունքը վերաբերում է մեկ հավաքածուի ու հավելվածի մեկ կազմաձևման։ Այլ պրոցեսորային ճարտարապետություններ, ինչպես նաև 22.x և 26.x ճյուղերը չեն փորձարկվել։
Հոկտեմբերի 22-ին հրապարակված առաջին հանրային ցուցադրական փորձով կոդի գործարկում է հաջողվել միայն դիտավորյալ թուլացված պաշտպանությամբ հավաքածուում։ Հեղինակը հայտնել է, որ ստանդարտ հավաքածուում առաջացրել է աշխատանքի խափանում և սահմանափակ հասանելիություն ստացել գործընթացի հիշողությանը, սակայն կոդ գործարկել չի կարողացել։ Imperva-ի ավելի ուշ փորձարկումն ավելի հեռուն է գնացել․ շտկված Node.js 24.22.1-ում նույն մուտքային տվյալները մերժվել են, և որևէ կոդ չի գործարկվել։
Imperva-ն չի հրապարակել խոցելիությունը շահագործող իր կոդը։ Մյուս խոցելի արտադրանքներում համադրելի կոդի գործարկում չի ցուցադրվել, և իրական հարձակումներում խոցելիության շահագործման մասին հաղորդումներ չկան։
Ելակետային կոդի շտկումը նախորդել է անվտանգության թողարկմանը
OpenAI-ն հոկտեմբերի 23-ին հայտնել է, որ խոցելիությունը հայտնաբերել է փորձարկումների ընթացքում, երբ գերբանականության (ԳԲ) գործակալների խմբերը փորձել են դուրս գալ սահմանափակված հաշվողական միջավայրերից։ Այդ փորձով ստուգվել են գործակալներին սահմանված միջավայրում պահելու ընկերության պաշտպանական միջոցները։ OpenAI-ի խոսքով՝ վնասաբեր սեղմված տվյալները կարող էին հարձակվողներին թույլ տալ կոդ գործարկել Node.js, Bun կամ Envoy օգտագործող համակարգերում։
Սխալի բուն պատճառը շտկվել էր Brotli-ի ելակետային կոդում՝ այն կոդում, որից հավաքվում է ծրագրաշարը, փետրվարի 27-ին՝ նախքան անվտանգության վրա դրա ազդեցությունը հայտնի դառնալը։ Մինչև հոկտեմբերի 21-ը որևէ թողարկում այդ շտկումը չէր ներառում։ OpenAI-ի խոսքով՝ ընկերության՝ խոցելիությունը բացահայտելուց հետո Brotli-ն թողարկել է թարմացված տարբերակներ և հրապարակել խոցելիության մասին հանրամատչելի գրառում։
Վկայականների բանալիների առանձին արգելափակումը
Node.js-ի թողարկումներն արգելափակում են նաև eMudhra-ի միջանկյալ հավաստագրման կենտրոնների ութ բանալիներ, որոնց վտանգված լինելու մասին հաղորդվել էր։ Այդ բանալիներն օգնում են պարզել՝ կարելի՞ է արդյոք վստահել սերվերի վկայականին։ Node.js-ն օգտագործում է Mozilla-ի արմատային վկայականների ցանկը, սակայն լռելյայն չի ստուգում՝ վկայականները չեղարկվա՞ծ են, թե՞ ոչ։ Ուստի մինչև թարմացումը վտանգված բանալու վրա հիմնված վկայականների շղթան կարող էր անցնել վավերացման ստուգումը։
Արգելափակումը ներդրված է թարմացված թողարկումներում։ Մինչև թարմացումը հաստատված աշխատաշրջանի հիման վրա վերսկսված միացումները նորից չեն ստուգվում, քանի դեռ չի լրացել այդ աշխատաշրջանի ժամկետը։
Թարմացնել յուրաքանչյուր պատճենը․ միջցանցային էկրանի պաշտպանությունը սահմանափակ է
Node.js-ի շտկված թողարկումները շարունակում են մնալ հոկտեմբերի 21-ին հրապարակված տարբերակները․
Node.js-ի՝ 2026-ի հոկտեմբերի 21-ին հրապարակված շտկված թողարկումները
Թողարկումների ճյուղ
Աջակցության կարգավիճակ
Շտկված տարբերակ
22.x
Երկարաժամկետ աջակցություն
22.23.4
24.x
Երկարաժամկետ աջակցություն
24.22.1
26.x
Ընթացիկ
26.12.1
Node.js-ի 20.x և ավելի վաղ ճյուղերի աջակցությունն ավարտվել է։ Դրանք չեն ստանում ո՛չ Brotli-ի շտկումը, ո՛չ վկայականների բանալիների արգելափակումը։ Օգտատերերը պետք է անցնեն աջակցվող ճյուղի։ Անվտանգության ծանուցումը չի առաջարկում հենց Node.js-ի ներսում խոցելիությունը ժամանակավորապես շրջանցելու միջոց։
Vercel-ը, որն իր հաճախորդների համար գործարկում է Node.js-ը, հայտնել է, որ հոկտեմբերի 21-ին միջցանցային էկրանի կանոններ է ավելացրել՝ մուտքային հարձակումներն արգելափակելու համար։ Այդ կանոնները չեն պաշտպանում այլ սերվերներից հավելվածների ստացած Brotli պատասխաններից և չեն փոխարինում գործարկման միջավայրի կամ գրադարանի թարմացմանը։
Cloudflare-ը հոկտեմբերի 25-ին ավելացրել է միջցանցային էկրանի երկու կառավարվող կանոն, որոնցից մեկը հայտնաբերում է Content-Encoding: br նշումով մուտքային հարցումները։ Երկուսն էլ լռելյայն միայն գրանցում են կանոնին համապատասխանող տվյալահոսքը․ դրանք ոչինչ չեն արգելափակում, քանի դեռ հաճախորդը չի փոխել դրանց գործողությունը։
Թարմացման սպասող ծրագրաշարի համար OpenAI-ն խորհուրդ է տալիս մինչև ապասեղմումը մերժել անվստահելի Brotli հարցումները, իսկ հաճախորդներում անջատել Brotli-ի ինքնաշխատ ապակոդավորումը և մինչև ապակոդավորումը մերժել Brotli պատասխանները։ Python-ում Brotli-ի երկու փաթեթների հեռացումը հաճախորդներին թույլ է տալիս վերադառնալ gzip և deflate սեղմման ձևաչափերին։ Այս միջոցների կիրառումը կախված է ապակոդավորման ուղին վերահսկելու հնարավորությունից․ դրանք հենց Node.js-ի ներսում կիրառվող հրապարակված ժամանակավոր շրջանցման միջոց չեն։
Հարցման Accept-Encoding վերնագրից br-ը հեռացնելը բավարար չէ․ սերվերը միևնույն է կարող է վերադարձնել Brotli տվյալներ։ Ծրագրերի սպասարկողները պետք է տեղադրեն շտկված տարբերակները, վերահավաքեն խոցելի կոնտեյներների պատկերներն ու վերագործարկեն ծառայությունները, քանի որ աշխատող գործընթացը պահպանում է հին ապակոդավորիչը մինչև վերագործարկումը։
Արբանյակային օպերատորը 2027–2034 թվականների ներդրման դիմաց ակնկալում է օգտվել OneWeb-ի ներկայիս թողունակությունից ավելի քան կրկնակի հզորությունից։ IRIS²-ի առաջին ծառայությունները սպասվում են 2030 թվականից։