[{"data":1,"prerenderedAt":215},["ShallowReactive",2],{"seo-verification":3,"blog-nextjs-16-4-1-15-5-28-تحديث-ثغرة-rce-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-nextjs-16-4-1-15-5-28-تحديث-ثغرة-rce-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":148,"ctaBody":149,"ctaButton":150,"ctaUrl":151,"relatedPosts":152},500,"nextjs-16-4-1-15-5-28-تحديث-ثغرة-rce",{"fr":12,"en":13,"ar":10,"es":14},"nextjs-16-4-1-15-5-28-rce-mettre-a-jour","nextjs-16-4-1-15-5-28-rce-update","nextjs-16-4-1-15-5-28-rce-actualizar","Next.js 16.4.1 و15.5.28: إصلاح ثغرات RCE على VPS","إصلاح ثغرتين حرجتين لتنفيذ التعليمات عن بعد وثغرة حجب خدمة في Next.js 16.4.1 و15.5.28. الإصدارات المتأثرة والتحقق على VPS وإعادة النشر عبر PM2 وDocker وCoolify.",9,0,false,"2026-10-23T00:00:00+00:00","2026-10-23T23:43:01+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fnextjs-16-4-1-15-5-28-rce-mettre-a-jour-poster.svg","في 14 أكتوبر 2026 أصدر Next.js تحديثًا استثنائيًا خارج الدورة المعتادة: الإصداران 16.4.1 و15.5.28. يعالج هذا التحديث ثغرتين حرجتين لتنفيذ التعليمات عن بُعد لا تتطلبان أي حساب، إضافةً إلى ثغرة حجب خدمة. على خادم VPS لا توجد منصة تحدّث تطبيقك نيابةً عنك: عليك رفع الإصدار ومراجعة ملف القفل وإعادة البناء وإعادة تشغيل العملية الصحيحة. بل قد تعيد عملية نشر Docker استخدام طبقة مخزّنة مؤقتًا فتعود النسخة القديمة إلى الإنتاج. إليك كيف تعرف خلال عشر دقائق إن كنت معرّضًا، وكيف تحدّث، وكيف تثبت أن الإصلاح يعمل فعلًا.",[35,39,49,52,83,86,105,108,126,129,138,142,145],{"type":36,"title":37,"body":38},"h2","ما الذي صدر في 14 أكتوبر","في 14 أكتوبر 2026 نشر فريق Next.js تحديثًا أمنيًا خارج الدورة المعتادة: الإصدار 16.4.1 لفرع Active LTS والإصدار 15.5.28 لفرع Maintenance LTS. يعالج التحديث ثلاث ثغرات مرتبطة بمكتبات أصلية يعتمد عليها: ثغرتان حرجتان لتنفيذ التعليمات عن بُعد دون مصادقة، وثغرة حجب خدمة عالية الخطورة. وكان إصلاحان من هذه الإصلاحات قد تأجّلا منذ إصدار سبتمبر بسبب تأخر المشاريع الأصلية.\n\nعلى خادم تديره بنفسك لا يصل الإصلاح من تلقاء نفسه. عليك رفع `next` والتأكد من أن مكتبة `sharp` تتبعه، ثم إعادة بناء التطبيق وإعادة تشغيل العملية التي تخدم الزوار فعلًا. تسلك هذه المقالة هذا المسار مع PM2 وDocker وCoolify، دون إعادة شرح تثبيت خادم Next.js.",{"type":40,"title":41,"items":42},"ul","أهم ما يجب تذكّره",[43,44,45,46,47,48],"**GHSA-673q-mjm6-r5xr (حرجة)** — تنفيذ تعليمات عن بُعد دون مصادقة في تطبيق App Router يستخدم Cache Components، عندما تُرجع دالة `use cache` عدة مصفوفات typed arrays. لا يوجد حل بديل معروف. يذكر التنبيه النطاق من 16.0.0 إلى 16.4.0 ودرجة CVSS تساوي 9.5.","**CVE-2026-96889 \u002F GHSA-2464-fhr4-w9xw (حرجة)** — تنفيذ تعليمات عن بُعد عبر مكتبة أصلية في واجهة تحسين الصور، عند استخدام ملفات SVG، على أنظمة Linux المعتمدة على glibc. الدرجة 9.5. الإجراء الرسمي: sharp بالإصدار 0.35.5 أو أحدث.","**GHSA-p3m5-59mp-jv5r (عالية)** — حجب خدمة في تطبيق App Router يحتوي على Server Action واحدة على الأقل: طلبات مصطنعة تستنزف المعالج وتعطّل الطلبات التالية في العملية نفسها. الدرجة 8.2. لا يتأثر Pages Router ولا التطبيق الخالي من Server Actions.","**الإصدارات المصحّحة** — 16.4.1 للفرع 16 و15.5.28 للفرع 15، مع الأمرين الرسميين `npm install next@16.4.1` و`npm install next@15.5.28`.","**لا CVE لتنبيهين من ثلاثة** — ثغرة الصور وحدها تحمل معرّف CVE. أما الأخريان فتُتابعان بمعرّف GHSA: أداة لا تبحث إلا عن CVE ستفوّتهما.","**حتى دون استخدام مباشر** — بالنسبة إلى ثغرة `use cache` تطلب Vercel التحديث حتى لو لم يحتوِ تطبيقك على دالة مشابهة.",{"type":36,"title":50,"body":51},"دون use cache ولا SVG: لماذا لا يكفي ذلك","هناك ثلاثة أسباب تمنعك من التوقف عند هذا الاعتراض. أولًا، في ثغرة `use cache` الإعلان صريح: لا يوجد حل بديل، ويُطلب التحديث حتى حين لا يحتوي التطبيق على دالة مشابهة. ثانيًا، تعتمد ثغرة الصور على مكتبة أصلية، ولا تعرف دائمًا أي ملفات SVG تصل إلى أداة التحسين، خصوصًا عندما تأتي الصور من مصادر بعيدة. ثالثًا، لا يحتاج حجب الخدمة إلا إلى Server Action واحدة، وهو أمر تحتويه نماذج كثيرة في App Router.\n\nخطر الأعطال محدود: الترقية تبقى داخل الفرع نفسه، 16.4.x أو 15.5.x. قيد واحد يجب معرفته: يعلن الإصدار 16.4.1 اشتراط Node بالإصدار 20.9 أو أحدث، بينما يقبل 15.5.28 الإصدار 18.18 فما فوق من Node. وإن كنت على إصدار أقدم من الفرع 16، فالانتقال إلى 16.4.1 يبقى ضمن الإصدار الرئيسي نفسه.",{"type":53,"title":54,"headers":55,"rows":59},"comparison","أي إصدار تثبّت بحسب فرعك",[56,57,58],"إصدارك","الحالة","ما العمل",[60,64,68,72,75,79],[61,62,63],"من 16.0.0 إلى 16.4.0","متأثر بالتنبيهات الثلاثة","الانتقال إلى 16.4.1 أو إلى إصدار 16.4.x أحدث",[65,66,67],"16.4.1 وما بعده","الإصلاح متضمَّن","فحص sharp والتأكد من إعادة النشر الفعلية",[69,70,71],"من 15.0.0 إلى 15.5.27","متأثر بثغرة الصور وبحجب الخدمة","الانتقال إلى 15.5.28 ثم التخطيط للترحيل إلى 16.4.x",[73,66,74],"15.5.28","التخطيط للترحيل إلى 16.4.x",[76,77,78],"13.x و14.x","متأثر ولم يُنشر إصلاح لهذين الفرعين","الترحيل إلى 15.5.28 أو 16.4.1",[80,81,82],"من 10.0.0 إلى 12.x","متأثر بثغرة الصور ولم يُنشر إصلاح","الترحيل إلى فرع ما زال مدعومًا",{"type":36,"title":84,"body":85},"معرفة ما يعمل فعلًا","الإصدار المكتوب في مستودعك ليس هو الذي يردّ على الطلبات. قد يسبق ملف القفل الإصلاح، وقد يعيد بناء Docker استخدام طبقة مخزّنة، وقد تشير عملية PM2 إلى مجلد إصدار قديم. ومع خرج `standalone` ينسخ Next.js إلى مجلد النشر ملفات `node_modules` التي يحتاجها: فتكون مكتبة `sharp` المضمّنة هي الموجودة لحظة البناء، لا التي ثبّتّها بعد ذلك. تُجرى الفحوص التالية على الجهاز أو الحاوية التي تخدم الزوار.",{"type":87,"title":88,"steps":89},"steps","جرد الوضع في خمسة فحوص",[90,93,96,99,102],{"title":91,"body":92},"قراءة إصداري Next.js وsharp","من جذر المشروع: `npm ls next sharp`، أو `pnpm why sharp` عند استخدام pnpm. وللإصدار الدقيق من Next.js: `node -p \"require('next\u002Fpackage.json').version\"`. إذا ظهرت `sharp` أقل من 0.35.5 تحت `next` فيجب تصحيحها.",{"title":94,"body":95},"رصد Cache Components وuse cache","`grep -rn \"cacheComponents\" next.config.*` ثم `grep -rln \"use cache\" app src`. إذا لم يظهر `cacheComponents` فتطبيقك لا يسلك المسار الذي يصفه التنبيه. حدّث مع ذلك: تطلب Vercel ذلك في جميع الحالات.",{"title":97,"body":98},"رصد استخدام SVG","`grep -rn \"dangerouslyAllowSVG\\|remotePatterns\" next.config.*` و`find public -name \"*.svg\"`. بحسب التوثيق لا يحسّن Next.js صور SVG افتراضيًا، ويتيحها الإعداد `dangerouslyAllowSVG`. غياب هذا الإعداد علامة جيدة وليس دليلًا، فالتنبيه لا يفصّل المسار الدقيق.",{"title":100,"body":101},"رصد Server Actions","`grep -rln \"use server\" app src`. يكفي ملف واحد ليصبح تطبيق App Router معنيًّا بحجب الخدمة.",{"title":103,"body":104},"التعرف على مكتبة C في النظام","يعرض الأمر `ldd --version` عبارة GNU libc على Debian وUbuntu وAlmaLinux وRocky، وعبارة musl libc على Alpine. لا يذكر التنبيه سوى glibc ولا يقول شيئًا عن musl: فلا تستنتج أن Alpine بمنأى. داخل حاوية: `docker exec \u003Cالحاوية> ldd --version`.",{"type":36,"title":106,"body":107},"التحديث ثم مراجعة ملف القفل","نفّذ الأمر الخاص بفرعك: `npm install next@16.4.1` أو `npm install next@15.5.28`. يبقى فخ لا يفصّله الإعلان. يعلن الإصدار 16.4.1 أن `sharp` اعتمادية اختيارية بالنطاق `^0.35.5`، أما 15.5.28 فيعلن `^0.34.3 || ^0.35.5`. وملف قفل يحتوي أصلًا على إصدار 0.34.x يحقق هذا النطاق، فلا يجد مدير الحزم سببًا لرفعه.\n\nراجع إذن النتيجة بالأمر `npm ls sharp`. إذا ظهر إصدار أقل من 0.35.5 فافرض الترقية بالأمر `npm install sharp@^0.35.5`، أو أضف override في `package.json` مثل `\"overrides\": { \"sharp\": \"^0.35.5\" }`. ومع pnpm أو yarn يكون المعادل برفع `sharp` أو بتصريح override. ثبّت ملف القفل في المستودع: فهو ما ستقرؤه أنظمة CI وصورة Docker.",{"type":87,"title":109,"steps":110},"إعادة النشر بحسب بيئتك",[111,114,117,120,123],{"title":112,"body":113},"التحقق من البناء","`npm ci` ثم `npm run build` ثم `npm ls next sharp`. إذا فشل البناء بسبب Node فراجع الإصدار الذي يشترطه الفرع الذي اخترته.",{"title":115,"body":116},"PM2","ابنِ في المجلد الذي يشغّله PM2 ثم نفّذ `pm2 reload \u003Cالاسم>`. وتأكد بالأمر `pm2 describe \u003Cالاسم>` أن مجلد التنفيذ هو الذي أعدت بناءه للتو: ففي نظام الإصدارات المتتالية قد يعيد رابط رمزي منسي تشغيل الشيفرة القديمة.",{"title":118,"body":119},"Docker","أعد البناء دون ذاكرة مؤقتة: `docker build --no-cache -t myapp:fixed .`، أو أبطل على الأقل طبقة `npm ci`. ثم أعد التشغيل بالأمر `docker compose up -d --force-recreate`. بعد ذلك قارن صورة الحاوية العاملة (`docker inspect -f '{{.Image}}' \u003Cالحاوية>`) بالصورة التي بنيتها للتو.",{"title":121,"body":122},"Coolify","أطلق إعادة نشر تتجاهل ذاكرة البناء المؤقتة، ثم اقرأ السجل: يجب أن تُنفَّذ خطوة تثبيت الاعتماديات لا أن تُعلَّم على أنها أُعيد استخدامها. إعادة التشغيل البسيطة لا تعيد بناء شيء.",{"title":124,"body":125},"إثبات الإصلاح","اقرأ الإصدار من العملية العاملة لا من المستودع: يجب أن يعرض الأمر `docker exec \u003Cالحاوية> node -p \"require('next\u002Fpackage.json').version\"` القيمة 16.4.1 أو 15.5.28 (أو إصدارًا أحدث من الفرع نفسه). وافحص `sharp` بالأمر `docker exec \u003Cالحاوية> grep '\"version\"' node_modules\u002Fsharp\u002Fpackage.json` الذي يجب أن يعرض 0.35.5 أو أحدث.",{"type":36,"title":127,"body":128},"إذا تعذّرت إعادة النشر اليوم","لا توجد أي وسيلة بديلة لثغرة `use cache`: التحديث وحده يعالجها. أما الثغرتان الأخريان فهناك إجراءات تخفيف تقلّل الخطر في الأثناء. وهي لا تغني عن الإصلاح، ويحسن تدوينها في سجل التشغيل بوصفها مؤقتة.",{"type":40,"title":130,"items":131},"إجراءات تخفيف مؤقتة وليست إصلاحات",[132,133,134,135,136,137],"**رفع sharp وحدها** — هذا هو الإجراء الرسمي لثغرة الصور: sharp بالإصدار 0.35.5 أو أحدث. تأكد من نجاح البناء ومن أن تحسين الصور ما زال يعمل.","**عدم تمرير SVG عبر أداة التحسين** — أبقِ `dangerouslyAllowSVG` معطّلًا ولا تفعّله دون حاجة مثبتة.","**تضييق `images.remotePatterns`** — اقصر المصادر البعيدة التي تقبلها أداة التحسين على المضيفين الذين تتحكم بهم.","**تشغيل Node بصيغة PIE** — يذكر تنبيه sharp هذا النمط لتقليل خطر تنفيذ التعليمات، مع التنبيه إلى أن ملفات Node.js الرسمية ليست PIE.","**تقليص الضرر الممكن** — عملية بلا صلاحيات الجذر، وحاوية للقراءة فقط (`docker run --read-only`)، ولا أسرار غير ضرورية في البيئة.","**تحديد معدل الطلبات أمام Next.js** — قاعدة `limit_req` في nginx وتنبيه على المعالج يبطئان حجب الخدمة دون أن يمنعاه.",{"type":139,"title":140,"body":141},"tip","شغّل npm audit بعد التحديث","يعتمد `npm audit` على قاعدة تنبيهات GitHub، فيغطي معرّفات GHSA بما فيها التي لا CVE لها. شغّله بعد رفع الإصدار، وأضفه إلى CI حتى لا يعتمد التنبيه القادم على مراقبة يدوية.",{"type":36,"title":143,"body":144},"بعد الإصلاح: المراقبة والتخطيط للفرع 15","لا تنشر التنبيهات أي مؤشر اختراق، فلا توجد بصمة دقيقة للبحث عنها. راقب العلامات العامة. عملية Node يبقى معالجها مستنزفًا باستمرار تشير إلى حجب الخدمة. وإعادات التشغيل غير المتوقعة، أو العمليات الفرعية التي لا يطلقها التطبيق أبدًا، أو الاتصالات الصادرة من مستخدم التطبيق، كلها تستدعي التحقيق. وفي سجلات nginx يعرض الأمر `grep \"_next\u002Fimage\" access.log | grep -i svg` طلبات التحسين التي تستهدف ملفات SVG.\n\nأما الفرع 15 فكن حذرًا مع التقويم. بحسب endoflife.date انتهى الدعم الأمني للفرع 15 في 21 أكتوبر 2026، بينما لا تذكر صفحة سياسة Next.js تاريخًا وتحدد سنتين من Maintenance LTS. فقد يكون 15.5.28 آخر إصلاح لهذا الفرع: خطّط للترحيل إلى 16.4.x. أما الإصدار 16.4.2 الذي صدر في اليوم التالي لـ 16.4.1 فلا يحتوي بحسب ملاحظاته إلا على إصلاحات منقولة لا صلة لها بهذه التنبيهات.",{"type":36,"title":146,"body":147},"التوثيق الرسمي","إعلان Next.js بتاريخ 14 أكتوبر 2026: https:\u002F\u002Fnextjs.org\u002Fblog\u002Fnextjs-security-update-october-14-2026\n\nتنبيهات GitHub: https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Fsecurity\u002Fadvisories\u002FGHSA-673q-mjm6-r5xr و https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Fsecurity\u002Fadvisories\u002FGHSA-2464-fhr4-w9xw و https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js\u002Fsecurity\u002Fadvisories\u002FGHSA-p3m5-59mp-jv5r\n\nتنبيه sharp: https:\u002F\u002Fgithub.com\u002Flovell\u002Fsharp\u002Fsecurity\u002Fadvisories\u002FGHSA-wq5f-xc86-pv6w\n\nملاحظة Netlify: https:\u002F\u002Fwww.netlify.com\u002Fchangelog\u002F2026-10-14-nextjs-react-security-vulnerabilities\u002F\n\nسياسة الدعم: https:\u002F\u002Fnextjs.org\u002Fsupport-policy و https:\u002F\u002Fendoflife.date\u002Fnextjs","احتفظ بالتحكم في عمليات إعادة النشر","على خادم VPS من ServOrbit.com تحصل على صلاحيات الجذر وعنوان IPv4 مخصّص وحرية اختيار نظام التشغيل: يبقى Node وDocker وتوقيت كل إعادة نشر بيدك. وهناك أيضًا خيار لإدارة الـ VPS، ويُشرح نطاقه في صفحة العرض.","اكتشف خوادم VPS","\u002Fsolutions\u002Fdeveloppeurs",[153,176,199],{"id":154,"slug":155,"slugs":156,"title":160,"excerpt":161,"readTime":162,"views":18,"isPinned":19,"publishedAt":163,"updatedAt":164,"category":165,"categories":171,"featuredImage":30,"bgImage":31,"posterImage":173,"relatedSolution":174},46,"نشر-تطبيق-nextjs-على-vps",{"fr":157,"en":158,"ar":155,"es":159},"deployer-nextjs-vps","deploy-a-nextjs-application-on-a-vps","desplegar-nextjs-en-un-vps","نشر تطبيق Next.js على VPS","انشر Next.js على VPS: Node.js وPM2 وNginx وSSL وSSR. دليل كامل للمطوّرين والوكالات الراغبين في الاستضافة الذاتية.",13,"2026-05-05T00:00:00+00:00","2026-09-11T11:34:12+00:00",{"id":166,"name":167,"slug":168,"color":169,"icon":170},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[172],{"id":166,"name":167,"slug":168,"color":169,"icon":170},"\u002Fblog\u002Fcovers\u002Fdeployer-nextjs-vps-poster.svg",{"categorySlug":167,"appSlug":175},"nextjs-stack",{"id":177,"slug":178,"slugs":179,"title":183,"excerpt":184,"readTime":185,"views":18,"isPinned":19,"publishedAt":186,"updatedAt":187,"category":188,"categories":193,"featuredImage":30,"bgImage":31,"posterImage":195,"relatedSolution":196},371,"مغادرة-heroku-vercel-vps-coolify-2026",{"fr":180,"en":181,"ar":178,"es":182},"quitter-heroku-vercel-vps-coolify-2026","leaving-heroku-vercel-vps-coolify-2026","abandonar-heroku-vercel-vps-coolify-2026","مغادرة ‎Heroku‎ و‎Vercel‎ نحو ‎VPS + Coolify‎ في 2026","تحليل نقطة التعادل بين ‎Heroku Pro‎ و‎VPS + Coolify‎ في 2026: 5 إشارات تحذيرية ودليل الهجرة خطوة بخطوة ومقارنة ‎Coolify‎ و‎Dokploy‎ و‎Kamal‎.",10,"2026-09-23T00:00:00+00:00","2026-09-23T15:23:17+00:00",{"id":189,"name":190,"slug":191,"color":192,"icon":191},3,"النشر","deploiement","bg-success\u002F10 text-success",[194],{"id":189,"name":190,"slug":191,"color":192,"icon":191},"\u002Fblog\u002Fcovers\u002Fquitter-heroku-vercel-vps-coolify-2026-poster.svg",{"categorySlug":197,"appSlug":198},"نشر-التطبيقات-وdevops","coolify",{"id":200,"slug":201,"slugs":202,"title":206,"excerpt":207,"readTime":208,"views":18,"isPinned":19,"publishedAt":209,"updatedAt":210,"category":211,"categories":212,"featuredImage":30,"bgImage":31,"posterImage":214,"relatedSolution":30},492,"ثغرة-nginx-cve-2026-15176-الفحص-والتحديث-إلى-1-30-6",{"fr":203,"en":204,"ar":201,"es":205},"nginx-cve-2026-15176-mettre-a-jour","nginx-cve-2026-15176-audit-and-patch-to-1-30-6","nginx-cve-2026-15176-auditar-y-actualizar-a-1-30-6","ثغرة nginx CVE-2026-15176: الفحص والتحديث إلى 1.30.6","يصلح nginx 1.30.6 و1.31.7 خمس ثغرات، منها CVE-2026-15176. الإصدارات المتأثرة، أوامر فحص الإعدادات، التحديث حسب كل نظام، والحلول المؤقتة.",12,"2026-10-22T00:00:00+00:00","2026-10-23T13:27:02+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[213],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fnginx-cve-2026-15176-mettre-a-jour-poster.svg",1792799275021]