
مدقّق أدلة use-cache في Next.js دون اتصال لـ GHSA-673q-mjm6-r5xr. أدلة ذاكرة التخزين المؤقت والمصفوفات المُنمّطة في Next.js. Python مستقل؛ تقارير JSON/CSV/HTML؛ بلا حمولات استغلال.
فرز دون اتصال لثغرة RCE من نوع typed-array في use-cache الخاصة بـ Next.js
GHSA-673q-mjm6-r5xr · دون اتصال، ملف واحد، بلا اعتماديات
يقيّم next-cache-rce-check إصدارات Next.js المُبلَّغ عنها، وبيانات وصفية لاعتماديات npm، وسياقًا محدودًا من شيفرة JS/TS المصدرية مقابل إشعار المشرفين الخاص بهذه المشكلة وحدها. ويُصدّر JSON قياسيًا، أو CSV، أو تقرير HTML بهوية بصرية.
لا ينفّذ شيفرة المشروع أبدًا، ولا يستدعي مدير حزم، ولا يتصل بالشبكة. ويُبلّغ عن عدم اليقين بصدق: الأدلة المفقودة أو المتعارضة أو المشروطة تُصنَّف unknown، وليست "آمنة" أبدًا.
[!IMPORTANT] التعرّض المحتمل ليس قابلية استغلال مؤكدة. كل نتيجة تُبقي
exploitability: not_tested. فالإصدار المُبلَّغ عنه أو ملف القفل أو نمط الشيفرة لا يمكنه إظهار التهيئة المنشورة، أو الترقيعات الرجعية من المورّد، أو حالة الترقيع الفعلية. تعامل مع كل نتيجة كدعوة للمشرف للتحقق.
يتبع هذا الأداة نهج الإبلاغ والترخيص المتحفظ الخاص بـ node2shell-check وphp2shell-check.
يحدد إشعار المشرفين Next.js 16.0.0 حتى 16.4.0 كإصدارات متأثرة، و16.4.1 كإصدار مُصلَح. وشروط انطباقه هي App Router، وCache Components، ودالة use-cache تُرجع عدة typed arrays. وينصح المشرف بالترقية حتى عندما لا يبدو أن التطبيق يحتوي على دوال مطابقة، ولا يدرج أي حل بديل معروف للشيفرة المتأثرة. راجع الإشعار وإصدار 16.4.1.
| خط الإصدار | متأثر (مُبلَّغ عنه) | مُصلَح في |
|---|---|---|
| Next.js 16.0 إلى 16.4 | 16.0.0 إلى 16.4.0 | 16.4.1 |
تم التحقق من اللقطة المضمّنة في 2026-10-23 مقابل إشعار المشرفين. لم يُخصَّص أي معرّف CVE في الإشعار وقت التحقق.
يصنّف هذا الفاحص الإصدارات الدقيقة العادية فقط على خطي الإصدار 16.0–16.4 المتحقق منهما. أما الإصدارات الرئيسية الأقدم، والإصدارات الأولية، والإصدارات المؤهَّلة من المورّد، وخطوط 16.5+ المستقبلية فتبقى unknown. ولا يحدد ما إذا كان البناء المُبلَّغ عنه قد صدر فعلًا أو ما إذا كان ترقيع رجعي من المورّد موجودًا.
next_cache_rce_check.py المستقل أو نسخة مستنسخة من هذا المستودع.لا حاجة إلى Node.js أو مدير حزم أو اتصال بالشبكة أو أي حزمة طرف ثالث.
# Compare a version obtained from your deployed dependency.
python next_cache_rce_check.py --next-version 16.4.0
# Inspect a project copy you are authorized to read.
python next_cache_rce_check.py /path/to/project --asset-id service-a
# Save an offline HTML report, with optional branding.
python next_cache_rce_check.py /path/to/project --format html --brand "Example team" --logo team.png --output report.html
# Save canonical JSON for automation; exit 1 on an affected reported version.
python next_cache_rce_check.py /path/to/project --format json --output report.json --fail-on-finding
# Try the artificial fixture without installing anything.
python next_cache_rce_check.py examples/synthetic-project --asset-id synthetic-demo
الـ fixture اصطناعي ويجب أن يُبلّغ عن potentially_affected (انظر examples). لا تقم بتثبيته أو نشره.
قدّم دليل مشروع، أو على الأقل --next-version واحدًا، أو كليهما. لا يوجد فحص ضمني للدليل الحالي. يسرد --help جميع الوسائط ويطبع --version إصدار الأداة.
| الخيار | الغرض |
|---|---|
PROJECT | دليل جذر التطبيق المستقر. شغّله مرة واحدة لكل تطبيق؛ لا يتم تحليل رسوم حزم مساحة العمل ولا الجذور المتداخلة العشوائية. |
--next-version VERSION | إصدار مُبلَّغ عنه لنسخة Next.js الجذرية. كرّره للحفاظ على ملاحظات متعددة؛ يُبلَّغ عن التعارض كتعارض ولا يُحلّ. |
--asset-id LABEL | تسمية غير حساسة (الافتراضي project). |
--format {json,csv,html} | تنسيق التقرير (الافتراضي json). |
--output PATH | كتابة التقرير إلى ملف خارج دليل المشروع المُقيَّم بدلًا من stdout. |
--force | استبدال ملف تقرير موجود. بدونه، تُحفظ الملفات الموجودة. |
--brand NAME، --logo PATH | اسم العرض في HTML (الافتراضي CompleteTech LLC) وشعار محلي اختياري بصيغة PNG/JPEG/GIF/WebP. |
--fail-on-finding، --fail-on-unknown | الخروج بالرمز 1 عند اكتمال تقرير يحتوي على نتائج potentially_affected أو unknown على التوالي. |
يجب أن تكون وجهات التقرير خارج دليل المشروع المُقيَّم، بما في ذلك عند استخدام --force؛ لا يكتب الفاحص أبدًا داخل شجرة المشروع. تبقى الإصدارات الدقيقة المقبولة مرتبطة بمصادر أدلتها الفردية في JSON وCSV وHTML حتى عندما يجعل التعارض الإصدار المحدد غير معروف. لتقييم إصدار تم التحقق منه بشكل منفصل دون بيانات وصفية للمشروع غير مدعومة، استخدم --next-version وحده. صياغة الوسائط وحدود القيم والحمايات موجودة في مرجع CLI.
| المدخل | المعالجة |
|---|---|
package-lock.json / npm-shrinkwrap.json، إصدارات npm من 1 إلى 3 | استخراج إصدارات Next.js الدقيقة المحلولة، مع الحفاظ على النسخ المتداخلة والأسماء المستعارة القياسية لـ npm والتعارضات. لا يشهد ملف القفل على التثبيت. |
node_modules/next/package.json المباشر | قراءة هوية الحزمة والإصدار المثبَّت المُبلَّغ عنه؛ يبقى التعارض مع ملف القفل غير معروف. |
package.json | تسجيل مرشح إعلان تبعية. تبقى كل من التثبيتات الدقيقة والنطاقات إعلانات، وليست أبدًا دليلًا على الإصدار المثبَّت. |
| ملفات قفل Yarn وpnpm وBun | غير مدعومة صراحةً. التغطية غير مكتملة ورمز الخروج هو 2؛ يمنع الجرد غير المدعوم تقييمًا محددًا. |
| ملفات JS/TS وملفات App Router التقليدية | سياق معجمي محدود فقط. لا يوجد رسم بياني للاستيراد، ولا تحليل لتدفق القيم، ولا تقييم وقت التشغيل، ولا فحص للوصولية. |
تُرفق أدلة المصدر فقط بنسخة node_modules/next المباشرة؛ للنسخ المتداخلة نتائج إصداراتها الخاصة.
| النتيجة التي يصدرها هذا الـ CLI | المعنى |
|---|---|
potentially_affected | إصدار دقيق مُبلَّغ عنه/محلول ضمن 16.0.0–16.4.0. راجع شروط التطبيق وأعطِ الأولوية للترقية. |
fixed_version_reported | إصدار دقيق 16.4.x مُبلَّغ عنه يستوفي حد الإصلاح 16.4.1. لا يُشهد على التصحيحات المثبَّتة والحالة المنشورة بشكل مستقل. |
unknown | الدليل غائب أو متعارض أو مشروط أو مشوّه أو خارج هذه اللقطة أو غير مكتمل بطريقة تمنع استنتاج إصدار محدد. |