ثغرة Node2Shell في Node.js تُستغل الآن: تحديث مجاني يغلق خادم تطبيقك أمام المخترقين

ثغرة Node2Shell بدرجة 9.2 في Node.js تتيح للمخترق تشغيل أوامره على خادم تطبيقك بلا كلمة مرور. الإصدارات المصححة، ومن المتأثر، وخمس خطوات تنفذها اليوم.

فريق أوريجاميفريق التحرير
7 دقائق
ثغرة Node2Shell في Node.js تُستغل الآن: تحديث مجاني يغلق خادم تطبيقك أمام المخترقين

إذا كان تطبيق شركتك أو موقعها أو متجرها الإلكتروني أو واجهتها البرمجية (API) مبنيا على Node.js، ومن ذلك مواقع Next.js والأنظمة الخلفية المبنية بـ Express أو NestJS، فاطلب من مبرمجك اليوم تحديث Node.js إلى الإصدار 22.23.4 أو 24.22.1 أو 26.12.1، ثم إعادة بناء الخادم وتشغيله. أصدر مشروع Node.js هذه الإصدارات في 21 أكتوبر 2026 لسد ثغرة تُعرف باسم Node2Shell (CVE-2026-111497)، درجتها 9.2 من 10، تتيح لمهاجم لا يملك أي كلمة مرور تشغيل أوامره على خادمك بإرسال بيانات مضغوطة مصنوعة بعناية. وأصدرت الهيئة الوطنية للأمن السيبراني تنبيها بمستوى خطورة «عالٍ جدا»، وفي 27 أكتوبر أكدت وكالة الأمن السيبراني الأمريكية CISA أن الثغرة تُستغل في هجمات حقيقية.

ما الذي حدث بالضبط؟

الخلل في Brotli، وهي صيغة ضغط تستخدمها خوادم الويب والمتصفحات لتصغير البيانات التي تتبادلها، ويحمل Node.js نسخته الخاصة من مفكك Brotli الذي تطوره جوجل. بحسب النشرة الأمنية لمشروع Node.js، تجعل البيانات المضغوطة المشوهة المفكك يكتب خارج حدود ذاكرة مؤقتة داخلية، وهذا قد يوقف التطبيق، أو يكشف محتوى ذاكرته، أو يتيح للمهاجم تشغيل أوامره. وتنسب النشرة الإبلاغ عن الثغرة إلى فريق Codex Security في OpenAI، وقد سد الإصدار نفسه 10 ثغرات في المجموع، 4 منها عالية الخطورة.

ثم تسارعت الأحداث. في 22 أكتوبر، بعد يوم واحد من الإصلاح، شغّل الفريق الأحمر في Imperva أوامر على صورة Node.js الرسمية 24.22.0 عبر مسارين يوميين: دالة fetch() المدمجة، والطلبات التي يعالجها Express 5. وفي 26 أكتوبر رصدت شركة ELLIO حركة استغلال حقيقية تحمل شيفرة هجوم منشورة للعموم. وفي 27 أكتوبر أضافت CISA الثغرة إلى قائمتها للثغرات التي تُستغل فعلا.

والخلل نفسه قديم. بحسب سجل الثغرة الرسمي، يمس إصدارات Brotli من 1.0.3 إلى 1.2.0، وتقول OpenAI إن أصل المشكلة أُصلح في شيفرة Brotli المصدرية في فبراير 2026 دون أن يعرف أحد أنه ثغرة أمنية ودون إصدار جديد، حتى صدر Brotli 1.2.1 في 21 أكتوبر. وإن بدت القصة مألوفة فلأنها كذلك: كتبنا الأسبوع الماضي عن ثغرة PHP2Shell التي فتحت خوادم PHP وووردبريس، وNode2Shell خطر من النوع نفسه على التطبيقات المبنية بلغة JavaScript.

هل تطبيقي متأثر؟

يشغّل Node.js الجانب الخلفي لنسبة كبيرة من المواقع الحديثة، والأنظمة الخلفية لتطبيقات الجوال، ولوحات التحكم، والواجهات البرمجية. إذا بُني نظامك في السنوات الأخيرة على يد وكالة أو مبرمج مستقل، فاحتمال أن يعمل على Node.js دون علمك كبير. الفروع المتأثرة هي 22.x و24.x و26.x قبل الإصدارات المصححة، إضافة إلى الفروع المنتهي دعمها 20.x و23.x و25.x، التي يقول مشروع Node.js إنها متأثرة دائما ولن يصلها إصلاح.

وتشغيل Node.js وحده لا يعني أنك مكشوف، فلا بد أن يمرر شيء ما بيانات المهاجم إلى المفكك. ويذكر الباحثون ثلاثة مسارات شائعة:

  • طلبات مضغوطة تصل إلى خادمك. تفك أدوات قراءة الطلبات في Express 5 وbody-parser 2 وKoa ضغط الطلبات المضغوطة بصيغة Brotli تلقائيا، قبل أن تعمل شيفرتك أصلا.
  • محتوى يجلبه خادمك من الخارج. إذا كان تطبيقك يفتح روابط خارجية، مثل معاينة الروابط، أو الإشعارات الآلية بين الأنظمة (webhooks)، أو أدوات الزحف، أو وكلاء الذكاء الاصطناعي الذين يقرؤون صفحات الويب، فيمكن لموقع معادٍ أن يرد ببيانات مضغوطة مسمومة. ودالة fetch() المدمجة ومكتبة axios وطلبات الخادم في أطر مثل Next.js تفك ضغطها تلقائيا.
  • ملفات يرفعها المستخدمون. أي شيفرة تفك ضغط بيانات Brotli أرسلها عميل أو زائر.

ويتجاوز الخطر Node.js نفسه. يذكر تنبيه الهيئة الوطنية للأمن السيبراني لغة Python وBun وEnvoy أيضا، وأصدرت مايكروسوفت في 25 أكتوبر إصلاحات لـ .NET 8 و9 و10 و11، وVisual Studio 2019 و2022 و2026، وPowerShell من 7.4 إلى 7.6، وصنفت الثغرة حرجة في .NET مع تقييم «الاستغلال مرجح». وتوضح مايكروسوفت أن فك ضغط Brotli غير مفعّل افتراضيا في .NET، فالمكشوف هو التطبيق الذي فعّله فقط.

وإذا كان موقعك مستضافا على Vercel، فالشركة تقول في نشرتها إنها نشرت قواعد جدار حماية تحجب مسار الهجوم الوارد لكل المشاريع في اليوم الذي نشر فيه Node.js الإصلاح، وإن كل عملية نشر جديدة منذ 28 أكتوبر تستخدم Node.js مصححا. المشاريع القائمة تحتاج إلى إعادة نشر، والمشاريع التي ما زالت على Node.js 20 يجب نقلها إلى 22 أو 24.

ماذا تفعل اليوم؟ خمس خطوات

  1. اسأل سؤالا واحدا مكتوبا. ما إصدار Node.js الذي يعمل على خوادمنا وداخل صور Docker الخاصة بنا؟ اطلب من مبرمجك التحقق من رقم إصدار Node.js بالأمر node -v. ولا تعتمد على رقم إصدار Brotli، فقد وجدت ELLIO أنه يظهر 1.2.0 في النسخ المصححة وغير المصححة على حد سواء.
  2. حدّث إلى إصدار مصحح. 22.23.4 أو 24.22.1 أو 26.12.1. وإن كنت على 20.x أو 23.x أو 25.x، فانتقل إلى فرع مدعوم مثل 22 أو 24، واختبر قبل الإطلاق.
  3. أعد البناء والتشغيل. العملية التي تعمل الآن تبقى على الشيفرة القديمة. أعد بناء صور الحاويات على صورة أساس مصححة، لأن ملف Dockerfile المثبت على 24.22.0 سيظل ينشر النسخة المصابة حتى يعدّل أحد ذلك السطر. وافحص خوادم الاختبار وخطوط البناء والدوال السحابية أيضا.
  4. حدّث النسخ الأخرى. حزمتي Brotli وbrotlicffi في Python (الإصداران 1.2.1 و1.2.1.0)، وBun، وEnvoy، ومكتبة Brotli في توزيعة لينكس لديك، و.NET عبر تحديث مايكروسوفت الصادر في 25 أكتوبر.
  5. راجع السجلات وملفات الانهيار. ابحث عن طلبات مضغوطة بصيغة Brotli أكبر من المعتاد، وعن انهيارات متكررة للعمليات. وتحذر ELLIO من أن أغلب محاولات الهجوم الفاشلة تُسقط العملية، وأن ملف الانهيار قد يحفظ ملفات تعريف جلسات الزوار ومفاتيحهم، فقيّد من يقرأ ملفات الانهيار (core dumps) وقصّر مدة الاحتفاظ بها.

إذا لم تستطع التحديث اليوم

كإجراء مؤقت، احجب الطلبات الواردة التي تحمل الترويسة Content-Encoding: br في الخادم الأمامي أو جدار الحماية، إذا كان تطبيقك لا يحتاجها. أضافت Vercel وImperva قواعد جدار حماية لهذه الثغرة، لكن Vercel نفسها تؤكد أن جدار الحماية لا يغطي الردود التي يجلبها خادمك من مواقع أخرى، وأن تحديث Node.js وحده يغلق هذا المسار. اعتبر أي طبقة حماية وقتا إضافيا، لا بديلا عن التحديث.

رأي أوريجامي

ثغرتان حرجتان في أساسات الويب خلال شهر واحد، PHP2Shell ثم Node2Shell، ترويان قصة واضحة: قد تكون الشيفرة التي كتبها فريقك سليمة بينما البيئة التي تعمل عليها مفتوحة. بقي إصلاح Node2Shell في شيفرة Brotli المصدرية نحو ثمانية أشهر قبل أن يدرك أحد أنه مشكلة أمنية، وما إن نُشرت التفاصيل حتى احتاج الباحثون يوما واحدا لتشغيل أوامر على نسخة رسمية. وما نراه في شركات كثيرة تطبيق سُلّم قبل سنوات ولا أحد مسؤول عن تحديثاته، ولا قائمة بالأماكن التي يعمل فيها Node.js فعلا. إذا كان هذا وضعك، فابدأ بهذه القائمة اليوم. في أوريجامي نبني تطبيقات الويب والأنظمة، وكثير منها يعمل على Node.js وNext.js، ونتابع تحديثات بيئتها من اليوم الأول. وإذا أردت فحص تطبيقك أو ترقية Node.js دون توقف، تواصل معنا.

المصادر

#ثغرة Node2Shell#تحديث Node.js#أمن الخوادم#الأمن السيبراني

أسئلة شائعة

هل موقع شركتي متأثر بثغرة Node2Shell إذا كان مبنيا على Next.js؟

قد يكون. يعمل Next.js على Node.js، وطلباته من جهة الخادم تمر عبر المفكك المصاب. على Vercel تستخدم عمليات النشر الجديدة نسخة مصححة منذ 28 أكتوبر فتكفي إعادة النشر، أما إذا كنت تستضيفه بنفسك فحدّث Node.js إلى 22.23.4 أو 24.22.1 أو 26.12.1.

ما إصدارات Node.js التي تسد ثغرة Node2Shell؟

الإصدارات 22.23.4 و24.22.1 و26.12.1 الصادرة في 21 أكتوبر 2026. أما الفروع 20.x و23.x و25.x فقد انتهى دعمها ولن يصلها إصلاح، فانتقل إلى 22 أو 24.

كيف أعرف إصدار Node.js الذي يعمل عليه تطبيقي؟

اطلب من مبرمجك تشغيل الأمر node -v على الخادم وداخل كل صورة Docker، وأن يرسل لك النتيجة كتابيا. ولا تعتمد على رقم إصدار Brotli، فهو يظهر 1.2.0 في النسخ المصححة وغير المصححة على حد سواء.

هل يكفي جدار حماية تطبيقات الويب (WAF) بدل التحديث؟

لا. قد يحجب جدار الحماية الطلبات المضغوطة الخبيثة الواردة، لكنه لا يغطي الردود التي يجلبها خادمك من مواقع أخرى. أضافت Vercel وImperva قواعد حماية لهذه الثغرة، وكلتاهما ما زالت تطلب من العملاء تحديث Node.js.

تابع أوريجامي في نتائج قوقل

ثبت أوريجامي كمصدر مفضل، فتظهر لك مقالاتنا أولا في نتائج قوقل وفي الأخبار الرائجة.

الإضافة إلى المصادر المفضلة في Google

قيم هذا المقال

مقالات ذات صلة

اختراق ثلاجات متاجر فرنسا رفع حرارتها إلى 50 درجة: 5 خطوات تحمي مخزون منشأتك المبرد
الأمن السيبراني

اختراق ثلاجات متاجر فرنسا رفع حرارتها إلى 50 درجة: 5 خطوات تحمي مخزون منشأتك المبرد

اخترق مهاجمون لوحات التحكم في ثلاجات مئات المتاجر الأوروبية ورفعوا حرارتها إلى 50 درجة. هذه 5 خطوات تحمي مخزونك المبرد في متجرك أو مطعمك أو مستودعك.

6 دقائق
هل يقرأ جوجل بريدك في جيميل ليعرض لك إعلانات؟ ما تغير في 16 أكتوبر ومن يتأثر
الأمن السيبراني

هل يقرأ جوجل بريدك في جيميل ليعرض لك إعلانات؟ ما تغير في 16 أكتوبر ومن يتأثر

سياسة خصوصية جوجل الجديدة منذ 16 أكتوبر تسمح بإعلانات مبنية على جيميل إذا ربطته بالبحث. من يتأثر، ولماذا يهم بريد شركتك، و3 خطوات تحميه اليوم.

6 دقائق
تسرب بيانات من ذكاء Cloudflare الاصطناعي: 155 ردا حملت بيانات عملاء آخرين، و5 أسئلة تطرحها على مزودك
الأمن السيبراني

تسرب بيانات من ذكاء Cloudflare الاصطناعي: 155 ردا حملت بيانات عملاء آخرين، و5 أسئلة تطرحها على مزودك

تسرب بيانات في Cloudflare: 155 ردا من خدمة الذكاء الاصطناعي حملت بيانات عملاء آخرين بين 27 أغسطس و9 سبتمبر 2026. ما حدث، وخمسة أسئلة تطرحها على مزودك، وخطوات هذا الأسبوع.

6 دقائق
من يدخل مايكروسوفت 365 في شركتك دون كلمة مرور؟ تطبيق نسخ احتياطي مخترق استهدف أكثر من 2,250 منشأة
الأمن السيبراني

من يدخل مايكروسوفت 365 في شركتك دون كلمة مرور؟ تطبيق نسخ احتياطي مخترق استهدف أكثر من 2,250 منشأة

تطبيقات خارجية متصلة بمايكروسوفت 365 تدخل بريد شركتك بلا كلمة مرور. اختراق ConnectWise استهدف 2,250 منشأة؛ إليك 5 خطوات لمراجعة صلاحياتها اليوم.

7 دقائق
ثغرات PHP: حدثت خادمك بعد PHP2Shell؟ تحذير جديد لا يصلحه تحديث 21 أكتوبر، وإعداد واحد يوقفه
الأمن السيبراني

ثغرات PHP: حدثت خادمك بعد PHP2Shell؟ تحذير جديد لا يصلحه تحديث 21 أكتوبر، وإعداد واحد يوقفه

حدثت PHP بعد ثغرة PHP2Shell؟ نشر مشروع PHP في 23 أكتوبر تنبيها عن ثغرة ثالثة لا يصلحها تحديث 21 أكتوبر. هذا ما يجب ضبطه اليوم، و5 أسئلة ترسلها لمستضيفك.

6 دقائق
حدّث جدار الحماية فورتيجيت قبل 10 نوفمبر: ثغرات حرجة وجدها الذكاء الاصطناعي ستُكشف للجميع
الأمن السيبراني

حدّث جدار الحماية فورتيجيت قبل 10 نوفمبر: ثغرات حرجة وجدها الذكاء الاصطناعي ستُكشف للجميع

حدّث نظام FortiOS في جدار حماية فورتيجيت إلى 7.4.13 أو 7.6.8 أو أحدث قبل 10 نوفمبر، يوم تنشر فورتينت تفاصيل ثغرات حرجة وجدها الذكاء الاصطناعي.

6 دقائق

عندك مشروع تفكر فيه؟

نبني أنظمة وتطبيقات ومواقع مخصصة لأعمالك. احك لنا عن فكرتك ونعطيك رأينا الصريح فيها.

جلسة واحدة. عشرون دقيقة. بلا التزامات.