- يستخدم Node.js مفكك ترميز مدمجا عند فك ضغط بيانات Brotli المضغوطة. عندما كان هذا المفكك يتلقى مدخلات مشوهة، كان يمكن أن يكتب خارج مخزنه الداخلي. تم إصلاح المشكلة في 21 أكتوبر 2026 ضمن إصدار أمني من Node.js باسم CVE-2026-111497. وصف التأثير (التعطل، وكشف الذاكرة، واحتمال تنفيذ التعليمات البرمجية عن بعد) منقول من تنبيه الثغرة الخاص بـ Node.js.
- كان السبب أن خطأ في تبديل الكتلة (وهو تعليمة لتغيير جدول الضغط المستخدم في القسم التالي) عولج كقيمة إرجاع مثل 'حاجة إلى مزيد من المدخلات'. وفقا للتنبيه المنقول، أدى ذلك إلى معاملة البيانات المشوهة كحالة مؤقتة، واستمر تراكم المدخلات في المخزن الداخلي.
- في مسار التنفيذ unsafe، حيث كانت المدخلات كافية، لم يُمرر الخطأ نفسه إلى المستدعي وتم تجاهله. غيّر الإصلاح نوع الإرجاع إلى تعداد لرموز الأخطاء، وأضاف رمز الخطأ الجديد BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH، لذلك يتوقف المساران الآن عن المعالجة فورا عند وقوع خطأ.
- جوهر الإصلاح هو نقل التزام google/brotli من المشروع الأصلي إلى Node.js. هذه المقالة شرح كُتب بعد قراءة التزام الإصلاح. لا يتناول النص الأصلي مسار الهجوم ولا النطاق الفعلي للضرر.
O: قد يجد هذا المقال مفيدا مسؤولو الخلفية الذين يفكون ضغط الملفات المرفوعة من خارج الشركة باستخدام zlib على خوادم Node.js الداخلية، وذلك لتحديد مواضع استخدام brotliDecompressSync والتحقق مما إذا كان الإصدار المصحح المعلن عنه قد طُبّق.
X: يعتمد النص الأصلي في وصف الأثر على إشعار Node.js ولا يحدد الإصدارات المتأثرة ولا الإصدار المصحح، لذلك يجب التأكد من الإصدار الفعلي مباشرة من الإشعار ومن ملاحظات الإصدار.