Вебийн гол шахалтын декодер нурав: Google Brotli-ийн "Broccoli2Shell" цоорхой .NET, Node.js болон Python-ийг сандаргалаа
Орчин үеийн вебийн дата урсгалыг хурдасгахад ашиглагддаг хамгийн түгээмэл алгоритмуудын нэг болох Brotli-ийн C хэл дээрх суурь декодерт санах ойн онц ноцтой алдаа илэрлээ. Сүүлийн 24 цагийн дотор Microsoft компани .NET платформд зориулан төлөвлөгөөт бус (out-of-band) яаралтай аюулгүй байдлын шинэчлэл гаргасан бол үүнээс өмнөхөн Node.js, Bun, Python-ий багууд өөрсдийн экосистемээ хамгаалахаар ээлж дараалан засварууд нийтлээд байна.
Аюулгүй байдлын ертөнцөд "Broccoli2Shell" (мөн Node2Shell, HTTP2Shell гэгдэж буй) хэмээн нэрлэгдсэн энэхүү эмзэг байдал нь CVE-2026-111497 дугаараар бүртгэгдсэн бөгөөд CVSS 4.0 үнэлгээгээр 9.2 буюу Critical зэрэглэл аваад байна. Хамгийн сонирхолтой нь уг цоорхойг OpenAI-ийн Codex Security судалгааны багийн шинжээчид AI агент ашиглан анх илрүүлжээ.
Алдааны учир: 8 байтын буфер ба хязгааргүй бичилт
Веб хөгжүүлэлтэд бид Content-Encoding: br толгойг өдөр тутам ашигладаг. Энэ нь текстийн хэмжээг Gzip-ээс ч илүү нягтаршуулж, хурдан дамжуулах боломж олгодог Google-ийн нээлттэй эхийн шийдэл билээ.
Асуудал Brotli-ийн С декодерийн гол файл болох c/dec/decode.c-д үүссэн байна:
- Буруу төлөв шалгалт: Brotli урсгал задарч байх явцад өгөгдлийн блокийн төрлийг солих (block switch) команд өгөгддөг. Хэрэв тусгайлан боловсруулсан гэмтэлтэй (malformed) урсгалд хүчингүй шилжилт хийгдвэл декодер үүнийг "форматын алдаа" (format error) гэж танин зогсоох ёстой байв.
- Төгсгөлгүй өгөгдөл нэмэлт: Гэтэл шалгах логик алдаа заахын оронд "оролтын өгөгдөл дутуу байна, дахиад байт хэрэгтэй" гэж тайлбарладаг.
- Out-of-bounds Write: Үүний улмаас стриминг декомпрессор дотооддоо байх ердөө 8 байтын хэмжээтэй түр санах ой (buffer) руу байтуудыг үргэлжлүүлэн бичсээр хязгаараас нь хэтрүүлж, зэргэлдээх декодерийн төлөвийн санах ойг (decoder state memory) дарж гэмтээдэг байна.
Энэхүү санах ойн цоорхой нь зөвхөн серверийг унагах (Denial of Service) эсвэл санах ойн өгөгдлийг алдагдуулахаар хязгаарлагдахгүй. Довтлогч тусгайлан бэлтгэсэн шахагдсан өгөгдөл илгээж, санах ойн заагчийг удирдан Remote Code Execution (RCE) буюу дурын хортой код ажиллуулах бүрэн чадамжтай болохыг судлаачид туршилтын лабориторт баталжээ.
"Node2Shell"-ээс "Broccoli2Shell" хүртэл: Бүх хэлний экосистемд хүрсэн нь
Яагаад нэг сангийн алдаа ийм олон платформыг зэрэг сандаргав? Учир нь Brotli нь C хэл дээр бичигдсэн бөгөөд ихэнх орчин үеийн программчлалын хэл, фрэймворкууд түүнийг өөрсдийн runtime болон багцад шууд суулгаж (vendoring) явдаг.
- Node.js ба Bun: Node.js-ийн
node:zlibмодуль нь Brotli-г өөртөө агуулдаг. Тиймээс Express 5 болонbody-parser 2.xдээр ирсэн хүсэлтийг задлах, эсвэл суулгагдсанfetch()API-аар гадны шахагдсан контент татахад л энэ алдаа идэвхжинэ. - Python: Хөгжүүлэгчдийн өргөн ашигладаг
requests,httpx,aiohttp,urllib3сангуудbrotliэсвэлbrotlicffiбагцтай холбогдож ажилладаг тул эрсдэлд орсон. - Microsoft .NET-ийн яаралтай арга хэмжээ: Microsoft .NET 8, .NET 9, .NET 10 болон шинэ .NET 11 RC3 хувилбаруудад яаралтай төлөвлөгөөт бус шинэчлэл гаргалаа.
ASP.NET Core request decompression,HttpClient automatic response decompressionболонSystem.IO.Compression.BrotliAPI-ийг ашиглаж буй аливаа сервисийг гадны хүсэлтээр бүрэн хакердах боломжтой болсон юм.
Үүлэн дэд бүтцийн аюулгүй байдлын чиглэлээр ажилладаг Wiz-ийн гаргасан хамгийн сүүлийн тайлангаар нийт үүлэн орчнуудын 91% нь Brotli-ийн эмзэг кодоос ямар нэг байдлаар хамааралтай байгаа бөгөөд 80 гаруй хувь нь гаднаас хандах боломжтой нээлттэй порттой байна.
Хөгжүүлэгчид болон DevOps инженерүүдийн анхаарах зүйлс
Энэхүү алдаанаас сэргийлэхийн тулд зөвхөн үйлдлийн системийнхээ багцыг шинэчлэх (apt update) нь хангалтгүй байж магадгүйг анхаарах хэрэгтэй:
- Контейнер болон Build-үүдийг дахин угсрах: Олон багууд өөрсдийн Docker container эсвэл .NET-ийн
NativeAOT/self-containedаппликейшнийг бие даасан байдлаар бэлтгэдэг. Энэ тохиолдолд хуучин C decoder хамт багцлагдсан үлддэг тул баазын image болон сангуудаа шинэчлэн re-build хийж, redeploy хийх шаардлагатай. - Node.js шинэчлэлт: Node.js 22.23.4, 24.22.1, 26.12.1 хувилбаруудад засвар орсон. Харин EOL болсон Node 20 болон түүнээс өмнөх хувилбаруудад засвар хийгдэхгүй тул хувилбараа яаралтай ахиулах нь зүйтэй.
- .NET багцууд: Microsoft-оос өнгөрсөн ням гарагт нийтэлсэн аюулгүй байдлын KB болон хамгийн сүүлийн SDK хувилбаруудыг татаж, CI/CD pipeline-даа нэвтрүүлэх.
- WAF болон Proxy дүрэм: Хэрэв системийн кодыг шууд шинэчлэх боломжгүй бол Cloudflare, AWS WAF зэрэг дэд бүтцийн түвшинд
Content-Encoding: brтолгойтой, найдвартай бус эх үүсвэрээс ирж буй сэжигтэй payload-уудыг шалгах, түр хугацаанд хязгаарлах дүрмүүдийг идэвхжүүлэхийг зөвлөж байна.
Дүгнэлт
Суурь C хэлний сангууд олон жилийн турш бидний өдөр тутмын хэрэглэдэг дээд түвшний хэлүүдийн "нууц тулгуур багана" болж ирсэн. Гэвч энэхүү хэрэг явдал supply chain-ийн хүрээнд нэг жижиг decompression сан хэрхэн бүхэл бүтэн интернетийн веб платформуудыг эрсдэлд оруулж болдгийг тод харууллаа. Мөн нөгөө талдаа OpenAI Codex зэрэг AI платформууд кодын гүн түвшний хүнд логик цоорхойг илрүүлэх ажиллагаанд голлох үүрэг гүйцэтгэж эхэлснийг Broccoli2Shell сануулж байна.
Эх сурвалж: BleepingComputer, Microsoft Security Advisory, GitHub Advisory Database (GHSA-9v8h-qqgm-4m35), Node.js Security Blog.
Сэтгэгдэл
Ачаалж байна...