خلل واحد في مكتبة ضغط Brotli من Google — يُتتبَّع بالرمز CVE-2026-111497 ويُلقَّب بـ Node2Shell وBrotli2Shell وHTTP2Shell — يتيح للمهاجم إفساد الذاكرة في أي برنامج يفك ضغط بيانات Brotli التي يتحكم بها المهاجم، مما قد يؤدي إلى تنفيذ تعليمات برمجية عن بُعد. ولأن Brotli مُضمَّن داخل Node.js و.NET وPython وBun وقائمة طويلة من البرمجيات الأخرى، تحوّل خلل واحد في المصدر إلى سباق تصحيحٍ محموم عبر المكدس بأكمله في أواخر أكتوبر 2026. فإذا كانت خدمتك تقبل جسم طلبٍ بترميز Content-Encoding: br أو تفك ترميز Brotli من أي مصدر غير موثوق، فأنت بحاجة إلى التصحيح.
هذه ليست مجرد ثغرة CVE أخرى تخص منتجًا واحدًا. فثغرة Brotli تقع في فك الترميز المشترك المكتوب بلغة C الذي تحزمه عشرات بيئات التشغيل، لذا فإن السؤال المثير للاهتمام ليس "هل Node.js متأثر؟" (فهو كذلك) بل "أيٌّ من الأشياء التي أشغّلها ترتبط بالمكتبة نفسها بصمت؟" يرسم هذا المقال نطاق التأثير الكامل ويمنحك الإصدار المُصحَّح لكل منظومة في جدول واحد.
ما هي الثغرة CVE-2026-111497؟
الثغرة CVE-2026-111497 هي ثغرة كتابة خارج الحدود في فك ترميز Brotli. وفقًا لـملاحظات إصدار الأمان الخاصة بـ Node.js، ظل فك الترميز المتدفق يُلحق بايتات الإدخال داخل مخزن مؤقت داخلي بحجم ثمانية بايتات دون التحقق من الحدود، فتتسبب بيانات Brotli المضغوطة والمُصمَّمة خصيصًا في تجاوز سعة ذلك المخزن المؤقت وإفساد ذاكرة العملية. والنتائج العملية هي تعطّل، أو كشف ذاكرة العملية، أو في أسوأ الأحوال تنفيذ تعليمات برمجية عن بُعد. وقد صنّفت Google الخلل بدرجة 9.2 وفق CVSS v4.0، بينما أشارت وكالة الأمن السيبراني في سنغافورة إلى درجة 9.8 وفق CVSS v3.1 — وفي كلتا الحالتين فالدرجة حرجة. والشرط المسبق الوحيد هو أن يفك تطبيقٌ هشٌّ ضغطَ بيانات Brotli التي يمكن للمهاجم التأثير فيها، وهو نمط شائع جدًا: فـ Brotli (br) هو ترميز محتوى HTTP قياسي تدعمه كل المتصفحات وشبكات توصيل المحتوى الرئيسية.
لماذا يضرب خلل واحد هذا العدد الكبير من المنتجات
شُحن Brotli كمكتبة C صغيرة وسريعة تحزمها بيئات تشغيل التطبيقات مباشرةً بدلًا من الاعتماد عليها على مستوى نظام التشغيل. وهذا التصميم هو السبب في أن الإصلاح كان لا بد أن يُعاد إصداره من كل مشروع بدلًا من تصحيحه مرة واحدة. ويشير مزوّد الأمان Field Effect إلى أن الخلل يطال منظومات متعددة دفعة واحدة، كما يسرد تنبيه Tenable نطاق تأثير يشمل Python وBun و.NET ومكتبة brotli4j الخاصة بـ Java ووكيل Envoy وشبكة خدمات Istio، إضافةً إلى أدوات البيانات مثل FFmpeg وApache Arrow وClickHouse. وهذا هو الشكل ذاته من "خلل واحد، مكدسات كثيرة" الذي تناولناه مع قنبلة HTTP/2 التي عطّلت nginx وApache وIIS: بنية أساسية مشتركة وثق بها الجميع، تنهار في كل مكان في آنٍ واحد. كما أنه يتناغم مع المخاطر على مستوى التبعيات التي وقفت خلف أزمة سلسلة توريد npm لعام 2026 — فالشيفرة التي لم تختر تثبيتها أبدًا تظل سطح هجومٍ لك.
مصفوفة التصحيح: الإصدارات المُصحَّحة حسب المنظومة
حدّث إلى الإصدارات أدناه. وإن كنت تشغّل حاويات أو صور CI، فأعد بناءها — فصورة الأساس المُصحَّحة هي أسرع وسيلة لإصلاح بيئات التشغيل المُحزَّمة دفعةً واحدة.
| المنظومة | الإصدار (الإصدارات) المُصحَّح | ملاحظات |
|---|---|---|
| Google Brotli (مكتبة C) | 1.0.10, 1.1.1, 1.2.1 | المصدر الأصلي للخلل؛ وكل ما عداه يُعيد تحزيم هذه المكتبة |
| Node.js | 22.23.4, 24.22.1, 26.12.1 | صُحِّح عبر node:zlib في إصدار 21 أكتوبر؛ والإصدار 20.x بلغ نهاية عمره ولن يُصحَّح |
| .NET | 8.0.33, 9.0.22, 10.0.14 | طبّق تحديث بيئة التشغيل الصادر في أكتوبر |
| Python (brotli / brotlicffi) | 1.2.1 / 1.2.1.0 | شائع في عملاء HTTP الذين يتفاوضون على ترميز br |
| Bun | 1.4.4 | يحزم فك ترميز Brotli الخاص به |
| brotli4j, Envoy, Istio, FFmpeg, Apache Arrow, ClickHouse, PHP لنظام Windows | حسب تنبيه المزوّد | جميعها ترتبط بفك الترميز نفسه — راجع ملاحظات إصدار كل مشروع |
هل أنا معرّض فعلًا؟
تثبيت بيئة تشغيل هشّة ليس مثل كونك قابلًا للاستغلال. واختبار التعرّض بسيط: هل تفك شيفرتك ضغطَ بيانات Brotli التي يمكن لمهاجمٍ توفيرها؟ اطرح هذه الأسئلة الثلاثة بالترتيب:
- هل تقبل أجسام طلبات Brotli؟ إن واجهة برمجة تطبيقات أو وكيلًا يحترم
Content-Encoding: brفي الطلبات الواردة هو المسار المعرّض الكلاسيكي — إذ يتحكم المهاجم في البايتات المضغوطة مباشرةً. - هل تجلب محتوى عن بُعد وتفك ضغطه؟ إن عملاء HTTP من جهة الخادم، ومستهلكي webhook، والزاحفين الذين يسمحون للخادم بإرسال استجابات بترميز
brيكونون معرّضين إن كان الطرف البعيد غير موثوق. - هل تفك ضغط ملفات رفعها المستخدمون أو مخزّنة عبر مسار Brotli؟ إن خطوط بناء البرمجيات، ومعالجات المستندات، وأدوات البيانات (Arrow وClickHouse وFFmpeg) التي تستوعب تدفقات
.brتندرج ضمن ذلك.
إذا كانت الإجابة على الأسئلة الثلاثة جميعها هي "لا" — على سبيل المثال، إن كنت تضغط فقط الاستجابات الصادرة ولا تفك ترميز Brotli غير موثوق أبدًا — فمخاطرتك العملية أقل، لكن صحِّح على أي حال. ويشدد تحليل Rapid7 على أن مسارات فك الترميز يسهل الوصول إليها بشكل غير مباشر عبر مكتبات لم تدرك أنها تتفاوض على br، لذا فإن مقولة "لا أظن أنني أستخدم Brotli" ليست افتراضًا آمنًا.
الخط الزمني: فجوة ثمانية أشهر
التفصيل الأكثر إزعاجًا هو التأخير. فقد التُزم بالإصلاح في مستودع Brotli المصدري في 27 فبراير 2026، لكن إصدارات المكتبة المُصحَّحة لم تُشحن حتى 21 أكتوبر 2026 — أي قرابة ثمانية أشهر ظل خلالها التصحيح قابعًا في سجل المصدر العام بينما بقيت الملفات الثنائية المُصدَرة هشّة. وقد أعادت Datadog Security Labs إنتاج الخلل باسم Node2Shell، وبحلول الوقت الذي وصل فيه الكشف المنسّق في 30 أكتوبر كان نموذج إثبات المفهوم متاحًا للعامة وكان الخلل بحسب التقارير يُستغَل بنشاط. فالالتزام العام في المصدر هو خريطة طريق للمهاجمين؛ والنافذة بين "مُصحَّح في المصدر" و"مشحون إلى المستخدمين" هي بالضبط حيث أصبح هذا الخلل خطيرًا. وهو درس تأخّر التصحيح نفسه الذي يقف خلف تقريرنا عن أسوأ أسبوع تصحيحٍ في 2026.
ماذا تفعل الآن
عامِل هذا على أنه مهمة تُنجَز في اليوم نفسه على أي خدمة متصلة بالإنترنت. صحِّح بيئات التشغيل إلى الإصدارات الواردة في الجدول، وأعد بناء صور الحاويات وإعادة نشرها لتحديث النسخ المُحزَّمة، وأعد تشغيل أحمال العمل — فالعملية القائمة في الذاكرة تظل تشغّل فك الترميز الهشّ القديم حتى تُعاد تشغيلها. وبعد التصحيح، راجع سجلات الوصول والطلبات بحثًا عن المسارات المعرّضة المذكورة أعلاه؛ فاستغلالات إفساد الذاكرة كثيرًا ما تترك دورات تعطّلٍ أو عمليات إعادة تشغيل غير طبيعية قبل أن تنجح. وإن كنت تدير بنيتك التحتية بنفسك، فإن قائمة التحقق لتأمين أول ساعة من إعداد VPS تغطي ممارسات التسجيل والتحديث الصحية التي تجعل الحادثة التالية من هذا النوع تصحيحًا روتينيًا بدلًا من تدريبٍ على إطفاء حريق.
الأسئلة الشائعة
هل يُستغَل CVE-2026-111497؟
يتوفر نموذج إثبات مفهوم للعامة، والثغرة بحسب التقارير تُستغَل بنشاط اعتبارًا من أواخر أكتوبر 2026. وبالاقتران مع الخطورة الحرجة وقاعدة التثبيت الضخمة، فإن ذلك يضعها بثبات في خانة "صحّح الآن".
أيُّ إصدارات Node.js مُصحَّحة؟
إصدارات Node.js 22.23.4 و24.22.1 و26.12.1، الصادرة في 21 أكتوبر 2026. أما Node.js 20.x فقد بلغ نهاية عمره في 30 أبريل 2026 ولن يحصل على إصلاح — فانتقل عنه.
أنا أضغط الاستجابات فقط ولا أفك ضغط Brotli أبدًا. هل أنا بأمان؟
مخاطرتك المباشرة أقل لأن الخلل في فك الترميز، لا في المُرمِّز. لكن المكتبات وعملاء HTTP يمكنهم التفاوض على br وفك ترميزه دون أن تلاحظ، لذا صحِّح بغض النظر بدلًا من الاعتماد على ذلك الافتراض.
هل يُصلح تصحيح نظام التشغيل الثغرة؟
عادةً لا بمفرده. فمعظم البرمجيات المتأثرة تحزم نسختها الخاصة من Brotli، لذا يجب عليك تحديث كل بيئة تشغيل (Node.js و.NET وBun وحزم Python) وإعادة بناء صور الحاويات — فتحديث حزمة نظام التشغيل وحده لن يحدّث مكتبةً مُحزَّمة.
Sources
- Node.js — إصدارات الأمان لأكتوبر 2026: الإصدارات المُصحَّحة الرسمية (22.23.4, 24.22.1, 26.12.1)، وآلية الكتابة خارج الحدود، وإصدار الـ 10 ثغرات CVE.
- Tenable — الأسئلة الشائعة حول Brotli2Shell (CVE-2026-111497): درجة CVSS v4.0 البالغة 9.2، والمنظومات المتأثرة، والإصدارات المُصحَّحة من Brotli/Python/Bun/.NET.
- Datadog Security Labs — Node2Shell: إعادة إنتاج تقنية والخط الزمني للإصلاح من فبراير إلى أكتوبر 2026.
- Rapid7 — كتابة خارج الحدود حرجة في فك ترميز Brotli الخاص بـ Node.js: تحليل التعرّض وسبب سهولة الوصول غير المباشر إلى مسارات فك الترميز.
- CSA Singapore — الاستغلال النشط لثغرة Brotli الحرجة: درجة CVSS v3.1 البالغة 9.8، وحالة الاستغلال النشط ونموذج إثبات المفهوم، والمنتجات المتأثرة.
- Field Effect — ثغرة Brotli تؤثر في منظومات برمجية متعددة: نطاق التأثير عبر المنظومات المتعددة.
وقاص احمد وسیر
وقاص احمد وسیر مطوّر ومهندس أتمتة بخبرة تزيد على 8 سنوات في بناء أنظمة إنتاجية يستخدمها أكثر من 100 ألف شخص. يبني تطبيقات SaaS متعددة المستأجرين، وأتمتة بالذكاء الاصطناعي (n8n، تدفقات LLM، بوتات واتساب)، وبنية استضافة (WHM/cPanel، CloudLinux) — وهو صانع WaSphere وFlowMaticX وعلامة الاستضافة WaseerHost. أنجز أكثر من 100 مشروع لشركات صغيرة ومتوسطة ووكالات وشركات ناشئة ممولة.
