كل المقالات

تحديثات أمان ⁨Node.js⁩ في أكتوبر 2026: ماذا ترقّي ولماذا

⁨Node.js⁩ · 4 دقيقة قراءة ·

في 21 أكتوبر 2026 أصدر مشروع ⁨Node.js⁩ تحديثات أمان للخطوط الثلاثة المدعومة: ⁨v26.12.1⁩ و⁨v24.22.1⁩ و⁨v22.23.4⁩. التحديثات تعالج عشر ثغرات، أربع منها مصنّفة عالية الخطورة، وأبرزها كتابة خارج حدود الذاكرة في فك ضغط ⁨Brotli⁩ يقول المشروع إنها تسمح بتنفيذ كود عن بعد. الإصلاح متاح الآن لكل الخطوط المدعومة، فالترقية هنا عمل روتيني، والأفضل أن تتم وهي ما زالت كذلك.

ثلاثة أنواع من الإصلاح في إصدار واحد

الثغرات الأربع العالية ليست خللًا واحدًا. كل منها في جزء مختلف من بيئة التشغيل، ويصل إليه نوع مختلف من الكود.

فك ضغط ⁨Brotli⁩ (⁨CVE-2026-111497⁩، في الخطوط الثلاثة): خلل ذاكرة في كود أصلي يفك ضغط البيانات. قراءتي هنا استنتاج عام وليست من نص التنبيه: الكود الذي يصل إليه هو كود يفك ضغط بيانات ⁨Brotli⁩ يتحكم فيها طرف آخر، مثل خادم يقبل أجسام طلبات مضغوطة، أو عميل يجلب ردودًا من واجهات خارجية ويفك ضغطها.

فحص اسم المضيف في ⁨TLS⁩ (⁨CVE-2026-106069⁩ في الخطوط الثلاثة، و⁨CVE-2026-105483⁩ في ⁨26⁩ و⁨24⁩): خللان منطقيان في التحقق من أن الشهادة تخص المضيف المقصود، الأول حين يُفسَّر المضيف بتساهل على أنه عنوان ⁨IP⁩، والثاني حين يُكتب العنوان بأرقام عريضة. وهناك ثغرة متوسطة قريبة، ⁨CVE-2026-106072⁩، تسمح لأسماء ⁨DNS⁩ في الشهادة بمصادقة عناوين ⁨IPv4⁩ مكتوبة بصيغة غير قياسية. الكود المعرّض هو أي كود يتصل بمضيف أو عنوان جاء من مستخدم أو من إعداد ⁨webhook⁩ أو من ملف إعدادات.

معالجة أسماء ⁨DNS⁩ (⁨CVE-2026-105482⁩، في الخطوط الثلاثة): الدالة ⁨dns.resolve⁩ تقتطع الأسماء التي تحتوي على المحرف ⁨NUL⁩. وكاستنتاج عام أيضًا: هذا يهم حيث تحلّ اسمًا لم تكتبه بنفسك، مثلًا لتقارنه بقائمة مسموحة.

داخل بيئة التشغيل فك الضغط خلل ذاكرة فحص اسم المضيف خلل منطقي أسماء النطاقات اقتطاع الاسم فك ضغط بيانات من طرف خارجي اتصال بمضيف من مستخدم أو إعدادات حلّ اسم لم تكتبه بنفسك كود تطبيقك
ثلاثة أجزاء لا علاقة بينها، وثلاثة طرق مختلفة للوصول إليها. الترقية تصلحها كلها دفعة واحدة.

بقية الثغرات متوسطة أو منخفضة: مقبس ⁨keep-alive⁩ يعالج ردًا كُتب قبل إرسال الطلب، وقيم عشوائية تتكرر في لقطات بدء التشغيل، ومشكلات في نموذج الصلاحيات وفي ⁨ZipFile⁩. ويحدّث الإصدار كذلك مكتبات مدمجة منها ⁨c-ares⁩ و⁨Undici⁩ وقائمة شهادات الجهات المصدّقة، التي أُزيلت منها الثقة بالجهة الوسيطة المخترقة التابعة لـ⁨eMudhra⁩.

افحص الإصدار الذي تشغّله فعلًا

جهازك الشخصي غالبًا أقل مكان يهم فحصه. بيئة التشغيل التي تخدم الزوار تأتي من صورة ⁨Docker⁩ أساسية، والتي تشغّل اختباراتك تأتي من صورة ⁨CI⁩، وقد يختلف كل منها عن الآخر.

# on any machine, or inside a running container
node -v
# what a base image really ships, without trusting its tag name
docker run --rm node:22 node -v

قارن كل نتيجة بالإصدارات المصلَحة: ⁨26.12.1⁩ أو أحدث على الخط ⁨26⁩، و⁨24.22.1⁩ أو أحدث على ⁨24⁩، و⁨22.23.4⁩ أو أحدث على ⁨22⁩. الوسم ⁨node:22⁩ لا يتغير إلا حين تسحبه من جديد، فقد تبقى نسخة مخزّنة على خادم البناء على الإصدار القديم. وإذا كان ملف ⁨Dockerfile⁩ يثبّت إصدارًا محددًا، فارفعه.

جهازك صورة الاختبار الآلي الصورة الأساسية حاوية الإنتاج افحص الإصدار في كل مكان الحد الأدنى على كل خط 26.12.1 · 24.22.1 · 22.23.4
أربعة أماكن وأربعة إصدارات محتملة. حاوية الإنتاج وحدها تحدد ما يواجهه المهاجم، والاختبار الآلي وحده يخبرك أن الترقية لم تكسر شيئًا.

الإصدار ⁨20⁩ لا يحصل على شيء

وصل ⁨Node 20⁩ المعروف باسم ⁨Iron⁩ إلى نهاية عمره، وكان آخر تحديث له في 24 مارس 2026، ولم يُذكر في هذا الإصدار. والمشروع يقولها صراحة: الإصدارات المنتهية تتأثر دائمًا حين يصدر تحديث أمان. فعبارة "نحن على ⁨20⁩ ولم يُذكر في القائمة" تعني عكس الأمان تمامًا. والخطوط الفردية مثل ⁨25⁩ و⁨23⁩ منتهية أيضًا. توصية المشروع أن الإنتاج يعمل على خطوط ⁨LTS⁩ النشطة أو خطوط الصيانة فقط، أي ⁨24⁩ أو ⁨22⁩ اليوم، أو ⁨26⁩ إن قبلت إصدارًا من مرحلة ⁨Current⁩.

شغّل ⁨node -v⁩ داخل حاوية الإنتاج لا على جهازك، وقارن النتيجة بـ⁨26.12.1⁩ أو ⁨24.22.1⁩ أو ⁨22.23.4⁩.

الخطوة التالية صغيرة: ارفع إصدار الصورة الأساسية المثبّت في ⁨Dockerfile⁩ وفي إعدادات ⁨CI⁩ إلى الإصدار المصلَح لخطك، وأعد البناء بلا ذاكرة مؤقتة، ودع الاختبارات تعمل. وإن كنت ما زلت على ⁨Node 20⁩ فخطّط للانتقال إلى ⁨22⁩ أو ⁨24⁩ الآن، لا عند التنبيه القادم. المصدر: صفحة تحديثات الأمان على ⁨nodejs.org⁩ بتاريخ 21 أكتوبر 2026.

ملاحظات القراء

  1. لا توجد ملاحظات بعد. الأولى دائمًا الأجرأ.
هل تبني شيئًا مشابهًا؟ يسعدني تقديم المساعدة. راسلني على واتساب