إن كان تطبيقك يعمل على Node.js، أو يستخدم حزم Brotli في Python، فرقّ الإصدار اليوم. أصلحت نشرة Node.js الأمنية بتاريخ 21 أكتوبر 2026 الثغرة CVE-2026-111497، وهي عالية الخطورة.
الثغرة تصيبك فقط إن كان تطبيقك يفك بيانات Brotli قادمة من مهاجم عبر node:zlib. قرأتُ نشرة Node.js وملاحظات الإصدار وبحث شركة Aikido في 25 أكتوبر 2026، وليس هذا المقال فحصًا لخادمك.
الخلاصة أولًا
- الخلل: كتابة خارج الحدود في مفكك Brotli المضمَّن قد تُفسد ذاكرة العملية.
- شرط الاستغلال: أن يفك تطبيقك بيانات Brotli من مهاجم عبر node:zlib.
- الأثر: تقول النشرة إن ذلك قد يؤدي إلى انهيار أو تسريب ذاكرة أو تنفيذ تعليمات عن بُعد.
- الحل: الترقية. النشرة لا تذكر حلولًا بديلة.
| خط Node.js | أدنى إصدار مصلح |
|---|---|
| 22 | v22.23.4 |
| 24، وهو إصدار LTS | v24.22.1 |
| 26 | v26.12.1 |
| الخطورة | عالية، CVE-2026-111497 |
| شرط الاستغلال | فك بيانات Brotli من مهاجم عبر node:zlib |
إلى أي إصدار أرقّي؟
- الخط 22: v22.23.4 فأحدث.
- الخط 24: v24.22.1 فأحدث. وهو إصدار LTS الذي يحمل الاسم Krypton وتاريخه 21 أكتوبر 2026.
- الخط 26: v26.12.1 فأحدث.
- إن كان إصدارك منتهي الدعم فالنشرة تقول إنه متأثر دائمًا في أي نشرة أمنية، فانتقل إلى خط مدعوم. وإن كنت تأخذ Node.js من موزّع فاستخدم بناءه المحدّث.
الترقية تغطي أكثر من هذه الثغرة. تنبّه النشرة إلى أن v24.22.1 يصلح أيضًا ثغرات أخرى عالية ومتوسطة في tls وdns وhttp وcrypto ونموذج الصلاحيات. ولا تذكر حلولًا بديلة، فالمعالجة هي الترقية.
كيف أعرف أني معرّض؟
- شغّل node —version وقارنه بالإصدارات أعلاه.
- ابحث في شيفرتك واعتمادياتك عن فك بيانات Brotli من مصادر غير موثوقة عبر node:zlib، مثل طلبات HTTP أو ردود خارجية أو ملفات مرفوعة.
إن كان إصدارك أقدم من الجدول وتفك Brotli من الخارج، فنقترح أن تعتبر نفسك معرّضًا حتى ترقّي. ونقترح أيضًا تدوير الأسرار إن اشتبهت بتسرب، كما في حادثة Railway. ولفحص الشيفرة بحثًا عن الثغرات انظر Claude Security.
ما الخلل نفسه؟
يسمح المفكك لمدخل مضغوط مشوّه بالكتابة بعد نهاية مخزن داخلي حجمه ثمانية بايتات. فقد عُدّ تبديل كتلة غير صالح حاجة مؤقتة إلى مدخلات أكثر بدل خطأ دائم في الصيغة، فظل المفكك يضيف البايتات إلى المخزن.
ويصف سجل الإصدار الإصلاح بأنه سحب لتغيير من مشروع Brotli الأصلي. وأبلغ عن الثغرة OpenAI Codex Security، وهما Khai Tran وSylvie Mayer.
وماذا عن Python والبرمجيات الأخرى؟
هذا القسم بحسب شركة Aikido الأمنية، في بحثها المنشور 23 أكتوبر والمحدّث 24 أكتوبر. تقول إن المفكك نفسه مجمَّع في حزمتي Brotli، من الإصدار 1.0.3 حتى 1.2.0 والإصلاح في 1.2.1، وbrotlicffi في سلسلة 1.2.0 والإصلاح في 1.2.1.0.
وتقول إن مكتبات مثل urllib3 وrequests وhttpx مع إضافة brotli وaiohttp تفك Brotli تلقائيًا إن وُجدت الحزمة، دون أن تستوردها شيفرتك. وتذكر أن برمجيات أخرى تحتاج تحديثًا، وهي libbrotli وbun وEnvoy وIstio وcurl وحزم أنظمة التشغيل. وتفيد بأن Apache وNginx لا يفكان Brotli افتراضيًا.
وتقول إن أدوات pip-audit وDependabot وSafety لن تنبّه بعد، لأن قواعد الثغرات لم تربط الرقم بحزم PyPI حتى 23 أكتوبر. فلا تعتمد على صمتها دليلَ أمان.
إن تعذرت الترقية، فتقترح Aikido ما يلي:
- احذف الحزمتين حيث أمكن.
- ارفض الطلبات التي ترويسة Content-Encoding فيها تتضمن br عند الحافة.
- ارفض ردود br قبل فكها في الاتصالات الصادرة.
- لا تكتفِ بتغيير Accept-Encoding، لأن خادمًا خبيثًا قد يرسل Brotli رغم ذلك.
هذه ادعاءات الشركة ولم أتحقق منها باستقلال، فراجع نشرة مكتبتك وموزّعك. للمقارنة بإصلاح أمني آخر حديث انظر ثغرات PHP الحرجة.
أما الاسم «HTTP2Shell» الذي ظهر في بعض المقالات فلا يعني خللًا في بروتوكول HTTP/2. نشرة Node.js تصف خللًا في مفكك Brotli داخل node:zlib.
ماذا تفعل بعد ذلك؟
- تحقق من إصدار Node.js لديك وارفعه إلى الإصدار المصلح لخطك.
- راجع أي مكان يفك Brotli من مصادر غير موثوقة.
- إن كان عندك Python، افحص حزمتي Brotli وbrotlicffi وحدّثهما.
- إن كنت على خط منتهي الدعم، فالنشرة لا تحدد أي الخطوط تتأثر بهذا الخلل تحديدًا، فانتقل إلى خط مدعوم.
أسئلة وأجوبة
هل يوجد حل بديل غير الترقية؟
لا يذكر Node.js حلولًا بديلة، فالترقية هي المعالجة. أما في Python فتقترح Aikido حذف الحزمتين أو رفض ترويسة br كما سبق.
هل كل خوادم HTTP/2 متأثرة؟
لا بحسب النشرة. الخلل في مفكك Brotli المستخدم عبر node:zlib.
هل تكفي الترقية إلى v24.22.1 للخط 24؟
نعم، فهو أدنى إصدار مصلح لهذا الخط، ويصلح أيضًا ثغرات أخرى في tls وdns وhttp وcrypto ونموذج الصلاحيات.
كيف أعرف أن تطبيقي يفك Brotli من مهاجم؟
إن كان يقرأ ردودًا أو طلبات أو ملفات من خارج مؤسستك ثم يمررها إلى node:zlib، فالإجابة نعم. وإن كان يفك بياناتك الداخلية فقط فلا ينطبق شرط الاستغلال.
مصطلحات بلغة مبسطة
- Brotli: صيغة لضغط البيانات تستخدمها المواقع لتقليل حجم الردود.
- كتابة خارج الحدود: أن يكتب البرنامج في ذاكرة تقع بعد المساحة المخصصة له.
- تنفيذ تعليمات عن بُعد: أن يشغّل المهاجم أوامره على جهازك من بعيد.
- LTS: إصدار بدعم طويل الأمد.
المصادر
- Node.js: النشرات الأمنية لشهر أكتوبر 2026
- Node.js: ملاحظات إصدار v24.22.1
- Aikido: الأثر الأوسع للثغرة CVE-2026-111497
قُرئت المعلومات في 25 أكتوبر 2026.



