في 21 أكتوبر 2026 أصدر Node.js النسخ 22.23.4 و24.22.1 و26.12.1 التي تصحح عشر ثغرات. أخطرها CVE-2026-111497 في مفكك Brotli المدمج في Node.js: بيانات مضغوطة مشوهة يمكن أن تكتب بعد نهاية مخزن داخلي، مما قد يوقف العملية أو يكشف الذاكرة أو يؤدي إلى تنفيذ الشيفرة عن بعد. تقييمها حسب Qualys هو CVSS 4.0 9.2، وتم نشر دليل مفهوم.
ما الذي يحدث
تبديل كتلة غير صالح في تدفق Brotli كان يعامل كأنه "أحتاج مزيدا من البيانات" بدل خطأ تنسيق نهائي. لذلك استمر المفكك في إضافة البايتات إلى مخزن داخلي من ثمانية بايتات بعد نهايته. مهاجم قادر على إرسال بيانات Brotli يفككها تطبيقك عبر node:zlib يمكنه استغلال ذلك لإفساد ذاكرة العملية.
هل تطبيقاتك معرضة؟
الثغرة تحتاج بيانات Brotli يتحكم فيها المهاجم وتفككها عمليتك. ابحث عن:
- خوادم أو وكلاء يفككون أجسام الطلبات المرسلة مع
Content-Encoding: br؛ - عملاء HTTP يجلبون عناوين يختارها المستخدم (webhooks، معاينة الروابط، وكلاء الصور) ويفككون ردود
br؛ - معالجات رفع تفك ضغط الملفات.
التطبيق العادي الذي يتصل بواجهته الخاصة فقط أقل تعرضا بكثير، لكن الجواب الآمن يبقى التحديث، لأن فك Brotli يمكن الوصول إليه بسهولة عبر المكتبات.
النسخ المصححة
- Node.js 22: 22.23.4 أو أحدث
- Node.js 24: 24.22.1 أو أحدث
- Node.js 26: 26.12.1 أو أحدث
أعد تشغيل كل عمليات Node بعد التحديث (PM2 أو systemd أو الحاويات). أعد بناء صور Docker بدل استعمال صور أساسية مخزنة مسبقا.
ما زلت على Node.js 20؟
Node.js 20 وما قبله انتهى دعمها ولن تتلقى أي تصحيح. يؤكد المشروع أن النسخ المنتهية الدعم متأثرة دائما عند صدور تحديث أمني. إذا كان خادم ما زال يشغل Node.js 20، فالتصحيح هو الانتقال إلى 22 أو 24 مع اختبار قبل الإنتاج.
التصحيحات الأخرى في نفس الإصدار
- عالية: كان يمكن تجاوز التحقق من اسم المضيف في TLS بعناوين IP بأرقام كاملة العرض (CVE-2026-105483) وبعناوين IPv4 تبدأ بصفر تقرأ كنظام ثماني (CVE-2026-106069)؛ وكانت
dns.resolve*()تقطع الأسماء عند أول بايت NUL (CVE-2026-105482). - متوسطة: اتصال keep-alive قد يقبل ردا أرسل قبل الطلب (CVE-2026-105481)؛ كتابات IPv4 غير قياسية قد تطابق اسم DNS في شهادة (CVE-2026-106072)؛
randomUUID()وrandomInt()كانت تكرر قيمها في العمليات المشغلة من snapshot أو تطبيق تنفيذي واحد (CVE-2026-106074). - منخفضة: ثلاث مشاكل في قارئ ZIP ونموذج الصلاحيات.
في انتظار التحديث
لم ينشر Node.js أي حل مؤقت رسمي. لتقليص مساحة الهجوم في الأثناء: لا تفكك Brotli من مصادر غير موثوقة، وحدد حجم الأجسام المضغوطة ونسبة فك الضغط في الوكيل العكسي أو جدار حماية التطبيقات. هذه الإجراءات تقلل التعرض لكنها لا تجعل نسخة غير مصححة آمنة.
المصادر
تحتاج مساعدة لتحديث Node.js في الإنتاج؟
نحدث ونختبر ونعيد نشر تطبيقات Node.js وNext.js بدون انقطاع.
تواصل مع Elaitech