مقدمة: التحول في النموذج وثمنه
كان تطور تطوير الويب الحديث سباقًا نحو السلاسة. فقد وعد تقديم موجه التطبيقات في Next.js 13+، المدعوم من مكونات خادم React (RSC)، بعالم تتلاشى فيه الحدود بين العميل والخادم حتى تصبح غير موجودة. يمكن للمطوّرين استدعاء استعلامات قاعدة البيانات مباشرةً من مكونات واجهة المستخدم، ويتولى إطار العمل المهام الثقيلة.
ومع ذلك, CVE-2025-66478 قد وصل إلى التحقق من الواقع القاسي. تم تصنيفها بدرجة CVSS حرجة من 10.0، فإن ثغرة تنفيذ التعليمات البرمجية عن بُعد (RCE) هذه ليست مجرد خطأ في الترميز؛ بل تمثل خرقًا أساسيًا للثقة في طبقة التسلسل التي تشغل الويب الحديث.
بالنسبة لمهندس الأمن المتشدد، هذه الثغرة مهمة لأنها تتجاوز النموذج الذهني القياسي لأمن الويب. إنها ليست حقن SQL ناتجة عن سوء تسلسل السلسلة، كما أنها ليست مجرد XSS بسيط. إنه خلل منطقي عميق داخل بروتوكول رد فعل الطيران-اللغة الثنائية التي تستخدمها الخوادم والعملاء للتحدث.
في هذا البحث المتعمق، سنقوم بتفكيك بنية هذه الثغرة، وتحليل آليات إعادة التهيئة المحددة التي تسمح باستعادة الوصول غير المصادق عليه واستكشاف سبب منصات اختبار الاختراق القائمة على الذكاء الاصطناعي مثل Penligent هي الأدوات الوحيدة القادرة على تحديد هذه العيوب المنطقية المعقدة بشكل منهجي قبل أن يفعل الخصوم ذلك.

بنية انعدام الأمن: فهم طيران مركز الخدمات الإقليمي
لاستغلال CVE-2025-66478، يجب أولاً فهم البروتوكول الخاص الذي يستخدمه Next.js. عندما يتفاعل المستخدم مع إجراء الخادم (على سبيل المثال، إرسال نموذج)، لا يرسل المتصفح حمولة JSON قياسية. بل يرسل بدلًا من ذلك دفقًا متسلسلًا مُحسَّنًا لعملية ترطيب React.
يبدو هذا التنسيق، المعروف باسم بروتوكول "Flight"، بهذا الشكل في نص HTTP الخام:
نص عادي
0:["$@1",["$@2",null]] 1:1:I{{{"id":"./src/action/user.js"،"chunks":["client-chunk-123"]،"name":"updateUser"،"async":true} 2:{"name":"John Doe"،"email":"[email protected]"}
فخ الثقة
توجد هذه الثغرة لأن أداة إلغاء التسلسل من جانب الخادم تعمل بشكل متحمس للغاية. في الإصدارات المتأثرة من Next.js (15.x قبل 15.1.9 و 16.x قبل 16.0.7)، يحاول إطار العمل إعادة بناء شجرة المكونات المحددة في هذه الحمولة قبل التحقق بدقة من صحة ما إذا كان المستخدم الطالب لديه صلاحية إنشاء تلك الوحدات النمطية المحددة.
يسمح Next.js للعميل بتمرير مراجع إلى الوحدات النمطية من جانب الخادم. والهدف من ذلك هو السماح للخادم بتنفيذ إجراءات محددة يحددها المطور. لكن الخلل يكمن في أن المهاجم يمكنه التلاعب بهذه المراجع. فبدلًا من الإشارة إلى ./src/action/USER.js، يمكن للحمولة المصممة أن تشير إلى أدوات Node.js المدمجة الداخلية أو أدوات تلوث النموذج الأولي المتاحة في النطاق العام.
عندما يقوم المخدّم بإلغاء تهيئة هذا الدفق الخبيث، فإنه لا يقرأ البيانات فقط؛ بل تنفيذ التعليمات البرمجية لاستعادة حالة الكائن. إذا كانت استعادة الحالة تتضمّن استدعاء دالة (على سبيل المثال، مُستحضر أو مُنشئ)، فإن المهاجم يحقق تنفيذ التعليمات البرمجية على الفور - غالبًا قبل أن تكون أي برمجية وسيطة للمصادقة (مثل NextAuth.js) قد عالجت رؤوس الطلبات بالكامل.

سلسلة قتل المهاجمين من الاستطلاع إلى القصف
بالنسبة لمهندس الأمن المكلّف بالدفاع عن تطبيق Next.js، من الضروري فهم سير عمل المهاجم. فاستغلال الثغرة CVE-2025-66478 ليس بسيطًا مثل تشغيل برنامج نصي؛ فهو يتطلب فهمًا متطورًا لأدوات بناء الهدف.
المرحلة 1: الاستطلاع السلبي وتحديد البصمات
يتأكد المهاجم أولاً من أن الهدف يقوم بتشغيل إصدار ضعيف من Next.js. يتم ذلك بسهولة عن طريق فحص رؤوس HTTP (X-Powered-By: Next.js) أو تحليل بنية _تاليًا/ثابت/ الدليل.
المرحلة 2: حصاد "معرّف الإجراء"
هذا هو الجزء الأكثر تحديًا من الناحية التقنية للمهاجمين اليدويين. يقوم Next.js بالتعتيم على إجراءات الخادم باستخدام التجزئة المشفرة (على سبيل المثال a9fa42b4b4...) لتقليل حجم الحزمة. بدون التجزئة الصحيحة، سيتجاهل الخادم الطلب.
يقوم المهاجمون ببرمجة استخراج هذه التجزئات عن طريق تحليل حزم JavaScript من جانب العميل (أجزاء Webpack). يبحثون عن تسجيل مرجع الخادم داخل الشيفرة المصغّرة:
جافا سكريبت
// مقتطف رمز العميل المصغّر ...registerServerReference(a,"a9fa42b4c4c7d1",null)...
من خلال كشط هذه المعرفات، يقوم المهاجم ببناء خريطة لنقاط الدخول الصحيحة إلى منطق الخادم.
المرحلة 3: بناء الحمولة (تقنية "React2Shell")
بمجرد العثور على نقطة دخول صالحة، يقوم المهاجم بإنشاء حمولة "React2Shell". يقوم بصياغة البريد الطلب مع نوع المحتوى من نص/مكون x-مكون (أو ما شابه ذلك، حسب الإصدار).
الجسم عبارة عن بنية كائن تكراري مصمم لتشغيل أداة إلغاء التسلسل.
- الهدف:
child_process.execأوfs.writeFileSync. - الآلية: تحدد الحمولة مرجع وحدة نمطية تشير إلى مكتبات النظام هذه.
- الزناد عند التحليل، يحاول الخادم "حل" الوحدة النمطية.
المرحلة 4: التنفيذ والاستخراج
يقوم الخادم بتحليل الدفق. يتم إنشاء الكائن الخبيث. الأمر هوامي يعمل. نظرًا لأن هذا يحدث خارج النطاق (قد تتعطل استجابة HTTP أو تُرجع خطأً)، يستخدم المهاجمون الأذكياء تقنيات OOB (خارج النطاق)، مما يجبر الخادم على إصدار طلب DNS إلى نطاق خاضع للرقابة (على سبيل المثال مهاجم بينغ.كوم) لتأكيد إجراء الإنفاذ RCE.
لماذا أدوات الأمان القديمة عمياء
في أعقاب ظهور CVE-2025-66478، قامت العديد من المؤسسات بفحص محيطها باستخدام أدوات اختبار أمان التطبيقات الديناميكية التقليدية (DAST) وحصلت على شهادة سلامة نظيفة. لقد كانوا مخطئين.
تفشل الماسحات الضوئية القديمة (مثل OWASP ZAP، أو عمليات الفحص الافتراضية لـ Burp Suite Pro، أو Nessus) هنا لأسباب أساسية:
- الجهل بالبروتوكول: تتعامل الماسحات الضوئية القياسية مع نص بروتوكول Flight كنص مبهم. يحاولون حقن علامات اقتباس SQL (
' أو 1=1) أو علامات XSS. يرفض Next.js هذه ببساطة على أنها تدفقات ثنائية مشوهة. يرى الماسح الضوئي خطأ 500 ويفترض أنه "آمن"، بينما تظل الثغرة الأمنية دون أن تتأثر. - عمى السياق: لا يعرف الماسح الضوئي القديم كيفية كشط أجزاء Webpack للعثور على معرّفات الإجراءات. لا يمكنه "تخمين" تجزئة أبجدية رقمية مكونة من 12 حرفًا. بدون المُعرِّف، يكون الباب مغلقًا، ولا يصل الماسح الضوئي أبدًا إلى مسار الكود الضعيف.
- تهرب من WAF: نظرًا لأن بنية الحمولة تحاكي بيانات مكونات React المشروعة، فإن واقيات الحماية من الهجمات الإلكترونية المستندة إلى التوقيعات تكافح للتمييز بين إرسال نموذج مستخدم معقد واستغلال متسلسل لعمليات الاستيلاء على RCE.
تسلط فجوة الاكتشاف هذه الضوء على حاجة الصناعة الماسة: لا يمكننا حل مشاكل عصر الذكاء الاصطناعي الجيني بأدوات الويب 2.0.

أفضلية الذكاء الاصطناعي: كيف يحل Penligent اللغز المنطقي
هذا هو المكان الذي يتحول فيه نموذج الأمان من "المسح" إلى "اختبار الاختراق العميل". في Penligent.aiلقد صممنا منصتنا لتفكر مثل المخترق البشري، ولكنها تعمل بسرعة الآلة.
عندما يقوم Penligent بتحليل تطبيق Next.js، فإنه يستخدم وكيل مركز الخدمات الإقليمي. إليك كيفية اختلافه عن الماسح الضوئي القياسي:
1. تحليل الأصول الذكي (تحليل خريطة المصدر)
وبدلاً من التشويش الأعمى، يقوم وكلاء Penligent بتنزيل وتحليل القطع الأثرية التي تم إنشاؤها من جانب العميل. يقوم الذكاء الاصطناعي بتحليل شجرة بناء الجملة المجردة (AST) لجافا سكريبت المصغرة لتحديد الخادم$P4Treference العلامات. إنه يعيد بناء خريطة كل وظيفة من جانب الخادم مكشوفة للإنترنت بشكل فعّال، مما يؤدي إلى إنشاء خريطة سطح هجوم شاملة لا يمكن لأي برنامج نصي من regex مطابقتها.
2. توليد الحمولة الواعية بالسياق
يفهم Penligent قواعد بروتوكول React Flight. فهو لا يرسل قمامة عشوائية. فهو ينشئ طلبات طيران مثالية من الناحية النحوية تحتوي على الحمولة الخبيثة المتداخلة بعمق داخل بنيات صالحة.
مثال على السيناريو: يحدد Penligent إجراء "تحديث الملف الشخصي". يحتفظ بمعرف المستخدم وحقول البريد الإلكتروني الصالحة ولكنه يحقن أداة تلوث نموذج أولي في كائن "التفضيلات" المتداخل. يقبل الخادم البنية على أنها صالحة، ويقوم بتشغيل إلغاء التسلسل، ويلتقط Penligent الشذوذ الناتج.
3. التحقق المنطقي مقابل كشف الأعطال
يعرف المختبر الخماسي البشري أن الخطأ 500 ليس دائمًا ثغرة أمنية، وأن 200 موافق ليس دائمًا آمنًا. يقوم Penligent بتحليل السلوكية الاستجابة. إذا زاد وقت استجابة الطلب بمقدار 500 مللي ثانية بعد حقن أمر تأخير زمني، يستنتج Penligent نجاح عملية إعادة تنفيذ الطلب، حتى لو كان نص استجابة HTTP فارغًا.
هذه القدرة-الاستدلال المنطقي الآلي-هو ما يميز Penligent عن الماسحات الضوضاء في العقد الماضي. فهو يوفر عمق التدقيق اليدوي مع قابلية التوسع في البرمجيات كخدمة.
الإصلاح والتقوية: الدفاع في العمق
في حين أن استخدام أدوات مثل Penligent يساعدك في العثور على الثغرة، فإن إصلاحها يتطلب نهجًا متعدد الطبقات.
التخفيف الفوري: الرقعة
الإصلاح الأساسي هو ترقية Next.js على الفور.
- الإصدارات الثابتة:
v15.1.9+,v16.0.7+. - الآلية: تقدم هذه الإصدارات قائمة صارمة للسماح بالأنواع القابلة للتسلسل وتعقيم مراجع الوحدات النمطية أثناء مرحلة الترطيب، مما يمنع إنشاء وحدات النظام العشوائية.
الدفاع الثانوي: تصلب وقت التشغيل
لا تعتمد فقط على تصحيح إطار العمل. افترض أن يوم الصفر التالي على الأبواب.
- أقل امتيازات تأكد من أن عملية Node.js التي تقوم بتشغيل Next.js لديها أذونات مقيدة. يجب ألا يكون لديه حق الوصول إلى الجذر، ويجب ألا يكون قادرًا على الكتابة إلى نظام الملفات (باستثناء دلائل مؤقتة محددة).
- تجزئة الشبكة: تقييد الاتصالات الصادرة. إذا حصل خادم Next.js الخاص بك على PWNED، فلا ينبغي أن يكون قادرًا على بدء اتصال غلاف عكسي إلى عنوان IP خارجي.
- تعطيل خرائط المصدر في الإنتاج: على الرغم من أن الأمان من خلال الغموض ليس استراتيجية، إلا أن تعطيل خرائط المصادر العامة يجعل من الصعب على المهاجمين (والروبوتات الآلية) تعيين معرّفات إجراءات الخادم الخاصة بك.
التكوين المتقدم
إذا تعذر عليك الترقية على الفور، يمكنك تعطيل إجراءات الخادم مؤقتًا في التالي.config.jsعلى الرغم من أن هذا سيؤدي على الأرجح إلى تعطيل وظائف التطبيق:
جافا سكريبت
الوحدة النمطية.exports = { تجريبي: { الخادم: { الخادم: خطأ، // مفتاح إيقاف الطوارئ }، }
الخاتمة: مستقبل الذكاء الاصطناعي والأمن
يعد CVE-2025-66478 لحظة فاصلة في أمن JavaScript. إنها توضح أنه كلما أزلنا تعقيدات الخادم، فإننا نقدم طبقات جديدة من التعتيم حيث يمكن أن تختبئ الثغرات الأمنية.
يتجاوز تعقيد بروتوكولات مثل React Flight العبء المعرفي الذي يمكن إدارته عن طريق مراجعة التعليمات البرمجية اليدوية وحدها، وهو بالتأكيد يتجاوز قدرات الماسحات الضوئية القديمة القائمة على regex. يكمن مستقبل أمن التطبيقات في الذكاء الاصطناعي العميل-أنظمة يمكنها فهم البنية وقراءة التعليمات البرمجية وصياغة استراتيجيات اختبار معقدة بشكل مستقل.
أدوات مثل بنليجنت لا يكتشفون الأخطاء فحسب، بل يتحقّقون من سلامة منطق تطبيقك. في عصرٍ يمكن أن يؤدي فيه خلل واحد في إعادة التهيئة إلى اختراق كامل، لم يعد وجود شريك ذكاء اصطناعي يعمل على مدار الساعة طوال أيام الأسبوع لاستكشاف دفاعاتك ترفاً - بل أصبح ضرورة.
الخطوات التالية:
لا تنتظر الاختراق. تحقق من إصدار Next.js الخاص بك اليوم. إذا كنت تدير بنية تحتية حساسة، ففكر في نشر اختبار اختراق تلقائي عميل للتحقق من تعرضك لـ CVE-2025-66478 والثغرات المنطقية الأخرى.

