
Imperva-ն ցուցադրեց Node2Shell հեռակա կոդի կատարում Node.js-ում հատուկ պատրաստված Brotli տվյալների միջոցով
Imperva-ի հետազոտողները ցուցադրեցին հեռակա կոդի կատարում պաշտոնական Node.js 24.22.0 Linux arm64 հավաքածուի վրա՝ օգտագործելով հատուկ պատրաստված Brotli տվյալներ և շահագործելով CVE-2026-111497։ Node.js-ը թողարկեց ուղղում հոկտեմբերի 21-ին։
Շահագործումը ցուցադրվել է
Imperva-ի հետազոտողները ներկայացրեցին Node2Shell անունով գաղափարի ապացույց, որը հեռակա կոդի կատարում է ապահովում պաշտոնական Node.js 24.22.0 Linux arm64 պատկերի վրա։ Հարձակումը հատուկ պատրաստված Brotli սեղմված տվյալներ է փոխանցում ներկառուցված Brotli վերծանիչին՝ ակտիվացնելով CVE-2026-111497։ Էքսպլոյթը փորձարկման միջավայրում մի քանի փորձ պահանջեց և հաջողվեց միայն այդ կոնկրետ բիլդում; շտկված 24.22.1 թողարկումը մերժում է չարամիտ տվյալները և կանխում է կոդի կատարումը։
Ազդված հավելվածներ
Խոցելիությունը գտնվում է Node.js-ում ներառված Brotli ապակոդավորիչում, ուստի 22.x, 24.x և 26.x թողարկումների գծերում աշխատող բոլոր հավելվածները պոտենցիալ խոցելի են։ Ծառայությունը կարող է հասնել ապակոդավորողին, երբ կարդում է Brotli-ով սեղմված պատասխան՝ ներկառուցված fetch ֆունկցիայի միջոցով, կամ երբ middleware-ը ապակոդավորում է Brotli-ով սեղմված հարցման մարմին։ Express 5-ի մարմնի վերլուծիչները, ինչպիսիք են express.json, express.urlencoded, express.text և express.raw, այժմ ապակոդավորում են Brotli հարցման մարմինները, ինչպես նաև body-parser-ի 2.0.0-ից 2.3.0 տարբերակները։ Պարզ Node.js HTTP սերվերը Brotli հարցման մարմինները ավտոմատ չի ապակոդավորում։
Տեխնիկական մանրամասներ
Imperva-ն թերությունը հետագծեց ապակոդավորիչի՝ Brotli հոսքում անհնար բլոկի անցման մշակմանը։ Չարամիտ հոսքը հայտարարում է բլոկի տիպեր, որոնք հոսքի կառուցվածքը բացառում է, ինչի հետևանքով ապակոդավորիչը խնդրում է ավելի շատ մուտքային տվյալ և շարունակում է անվավեր վիճակում։ Հիշողության սանիտայզերի թեստը ցույց տվեց, որ այդ վիճակից շարունակելը գրում է նախատեսված բուֆերից դուրս, առաջացնելով սահմաններից դուրս գրառում, որը ընկած է խոցելիության հիմքում։ Node.js-ը լուծեց խնդիրը՝ ներմուծելով Brotli-ի վերին հոսքի շտկում, որը ստիպում է ապակոդավորիչին դադարել ձևաչափի սխալով խնդրահարույց կետում։
Մեղմացում
Միակ վստահելի շտկումը շտկված Node.js թողարկման թարմացումն է։ Կյանքի ավարտի ճյուղերը, ինչպիսիք են 20.x-ը, չեն ստանում շտկումը և պետք է տեղափոխվեն աջակցվող ճյուղ։ Ծանուցումը չի նշում գործարկման ժամանակի շրջանցում, ուստի հավելվածները, որոնք չեն կարող անմիջապես թարմացվել, Node.js-ում ինքնին փոխարինող տարբերակ չունեն։ Imperva-ն խորհուրդ է տալիս սահմանափակել չվստահելի Brotli տրաֆիկը տուժած ուղիներում, որտեղ հնարավոր է։ Vercel-ը հոկտեմբերի 21-ին ավելացրել է վեբ հավելվածների ֆայրվոլի կանոններ, որոնք արգելափակում են հարձակումը մուտքային հարցումներում, սակայն այդ կանոնները չեն ընդգրկում արտաքին սերվերներից ստացված Brotli պատասխանները և չեն փոխարինում թարմացմանը։
Աղբյուրներ: The Hacker News
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։