سبع ثغرات انسكّرت بـ Next.js 16.4.5: مين لازم يحدّث اليوم؟

تحديث Next.js 16.4.5 و15.5.29 بيسكّر سبع ثغرات، منها كاش بيوصّل بيانات مستأجر لمستأجر تاني، وكوكي HttpOnly بتنقرا بمسارات Edge. حدّث، وشوف أي وحدة بتلمس تطبيقك.

نُشر في 4 دقائق قراءة#تحديثات أمنية#تطوير الويب#أمن التطبيقات

إذا عندك تطبيق Next.js بيخدم أكتر من زبون من نفس السيرفر، أو بيحط كوكي الجلسة من مسار Edge، هالتحديث إلك. منشور Next.js الأمني لشهر تشرين الثاني بيقول إنو التحديثات نزلت بـ v16.4.5 (Active LTS) وv15.5.29 (Maintenance LTS). بآخر المقال رح تعرف أي ثغرة بتلمس تطبيقك، وكيف تحدّث بأمرين.

شو بيصلّح تحديث Next.js 16.4.5؟

تحديث Next.js 16.4.5 و15.5.29 بيسكّر سبع ثغرات أمنية، وكل وحدة منهن بتحتاج إعداد معيّن بتطبيقك لحتى تأثّر عليه.

هيك بتتوزّع حسب المنشور الرسمي:

الثغرة

مين بيتأثر

كاش بيوصل لمستأجر تاني لما دالة use cache تنستدعى مباشرة ومن جوّا unstable_cache

تطبيقات Cache Components يلي دالتها المكاشة بتقرا root parameter متل معرّف المستأجر

محتوى قيمة root parameter بينعرض لقيمة تانية بدوال use cache متداخلة

Cache Components مع دوال مكاشة جوّا بعض

arguments ثنائية مختلفة بتعطي نفس هوية الكاش

يلي بيمرّق arguments ثنائية بتميّز المستخدمين لـ use cache

تسميم الـ shell المشترك للصفحة بطلب بلا تسجيل دخول

المستضاف ذاتياً بـ next start مع Cache Components وPartial Prefetching مطفي أو مش محدد

رد بيوصل لعميل غلط

المستضاف ذاتياً يلي بيرجّع Response من fetch متل ما هو، ورا reverse proxy بـ HTTP/1.1 بيرتّب طلبات pipelined على اتصال مشترك

قيمة كوكي HttpOnly بهيدر x-middleware-set-cookie

مسارات Edge يلي بتحط الكوكي بـ NextResponse.cookies.set()

صورة SVG بتمرق كأنها AVIF رغم dangerouslyAllowSVG: false

Image Optimization مع backend بيقدر يفك SVG

إذا ولا سطر من الجدول بيشبه تطبيقك، التحديث بيضل الأسلم، لأنو أسهل من إنك تتأكد من كل شرط لحاله.

ليش ثغرة الكاش أخطر شي على تطبيقات الـ SaaS؟

ثغرة الكاش بتخلّي زبون يشوف بيانات زبون تاني، لأنو نتيجة مكاشة لمستأجر واحد ممكن تنحفظ وترجع لغيره بنفس الـ arguments.

حسب الإرشاد GHSA-mfr8-8qww-v76h، يلي انتشر بـ 3 تشرين الثاني 2026، النسخ المتأثرة من 16.3.0 وطالع. المشكلة بتصير وقت تعبئة الكاش أول مرة: طلبين بنفس اللحظة، واحد مباشر وواحد من جوّا unstable_cache، والتاني ممكن ياخد نتيجة الأول بلا ما يتأكد من الـ root parameters تبعها. بعدها النتيجة الغلط بتضل بالكاش وبتنرجع لكل طلب بنفس الـ arguments، لحد ما ينعاد توليدها أو تنشال من الكاش.

الغلطة هون منطقية أكتر ما هي تقنية: الطلب التاني بيدوّر على نتيجة بنفس الـ arguments، وبياخدها بلا ما يفحص لأي مستأجر انعملت. فالنتيجة بتطلع صح بالشكل، وغلط بالزبون. والإرشاد نفسه بيقول إنو ما تستدعي دالة use cache من جوّا unstable_cache حل كامل إذا ما بتقدر تحدّث هلق.

شو قصة كوكي الـ HttpOnly بمسارات Edge؟

مسارات Edge يلي بتحط كوكي بـ NextResponse.cookies.set() كانت بتنسخ الكوكي لهيدر داخلي اسمه x-middleware-set-cookie، وهالهيدر بيقدر يقراه كود JavaScript من نفس الموقع.

يعني علامة HttpOnly، يلي حطّيتها لحتى ما يوصل JavaScript لكوكي الجلسة، ما عادت تحميها بهالمسارات. حسب الإرشاد GHSA-f3mh-rxg3-f5g2، الثغرة بتخص Edge Route Handlers بالـ App Router وEdge API routes بالـ Pages Router. والمنشور الرسمي بيوضّح إنها مش طريقة لحالها لتشغيل كود: المهاجم لازم يكون عنده JavaScript شغّال على نفس الموقع، يعني ثغرة XSS تانية. وبالتجربة يلي انعملت، مسارات Node.js والكوكي يلي بتنحط بـ cookies().set() ما تأثروا.

إذا بدك تتأكد من باقي إعدادات كوكي الجلسة، عنا مقال عن فحص كوكي الجلسة: HttpOnly وSecure وSameSite.

كيف تعرف إذا تطبيقك محتاج التحديث؟

تطبيقك محتاج التحديث إذا نسخة next فيه أقدم من النسخة المصلّحة على فرعها. بالترتيب:

  1. افتح مجلد المشروع وشوف النسخة يلي منزّلة فعلياً:

    npm ls next
  2. حدّث للنسخة المصلّحة على فرعك، متل ما بيقول المنشور:

    npm install next@16.4.5
    npm install next@15.5.29

    الأول لفرع 16 والتاني لفرع 15.5، مش التنين سوا.

  3. دوّر بالكود على الأماكن يلي بتخص الثغرات، لحتى تعرف شو تجرّب بعد التحديث:

    grep -rn "use cache\|unstable_cache\|cookies.set\|dangerouslyAllowSVG" app pages src
  4. اعمل build وdeploy، وجرّب الصفحات يلي طلعت بالبحث، خصوصاً يلي بتعرض بيانات مستأجر.

من وين تبلّش هلق؟

ابدأ بالتطبيق يلي بيخدم أكتر من زبون، أو يلي بيحط كوكي الجلسة من مسار Edge: هدول أول ناس بيخسروا إذا تأخروا. وإذا قريت عن تحديث Next.js الأمني يلي قبله، هاد تحديث جديد بعده، فالنسخة يلي حدّثت لها وقتها ما بتكفي.

وإذا تطبيقك فيه بيانات زباين مفصولة ومش متأكد إنو الفصل صامد، فحص اختراق مع مُحَصَّن بيجرّب هالحدود متل ما بيجرّبها مهاجم.

أي نسخة next شغّالة عندك بالإنتاج هلق؟

أسئلة شائعة

إذا موقعي على Vercel، لازم حدّث بنفسي؟

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

تطبيقي ما بيستعمل use cache أبداً، أنا بأمان؟

من ثغرات الكاش إي، بس في ثغرات تانية بالتحديث: الكوكي بمسارات Edge، وتحسين الصور، والتطبيقات المستضافة ذاتياً. الأسهل إنك تحدّث بدل ما تفحص كل وحدة.

في حل مؤقت لثغرة الكاش إذا ما بقدر حدّث هلق؟

إي. الإرشاد بيقول إنو إذا ما استدعيت دالة use cache من جوّا unstable_cache، الثغرة ما بتصير. بس هاد للثغرة الأولى بس، والباقي بدّه التحديث.

شارك المقال

نسخة Markdown

مقالات أخرى