Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2026-59891-control-lab — مختبر معزول لاختبارات الانحدار وضوابط الأمان لـ CVE-2026-59891 في @sigstore/oci | Kitploit
أدوات/GitHubGitHub/gyubin02/cve-2026-59891-control-lab
أمن الحاوياتتحليل الثغرات الأمنيةأمن السحابةأمن سلسلة التوريدسوء التكوينالتعلم والتعليممختبرات وتدريب عملي
GitHubgyubin02/cve-2026-59891-control-lab

cve-2026-59891-control-lab

مختبر معزول لاختبارات الانحدار وضوابط الأمان لـ CVE-2026-59891 في @sigstore/oci

عرض المستودع
منذ 23 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-59891: مختبر الانحدار والتحكم

مشروع تمرين عملي معزول وتدقيق للقراءة فقط (read-only) يقارن الإصدار الفعلي المُصاب والإصدار المُصحَّح من @sigstore/oci باستخدام المدخلات نفسها، ويفحص شروط التعرّض حسب البيئة.

مُبلِّغ CVE الخاص بهذا المشروع هو gyubin02.

ملخّص مخصص للتوظيف والمقابلات: حالة أتمتة إدارة ثغرة CVE-2026-59891

ما الذي يتم التحقق منه؟

يكمن جوهر ثغرة CVE-2026-59891 في الخلط بين أسماء المضيفين (hostname) الذي يحدث عند اختيار بيانات اعتماد السجل (Registry).

  • الإصدار 0.7.0: يمكنه اختيار بيانات اعتماد ghcr.io لمجرد أن السلسلة cr.io موجودة داخل سلسلة النص ghcr.io.
  • الإصدار 0.7.1: يطبّع hostname ثم يختار فقط بيانات الاعتماد المطابقة تمامًا.

يقوم هذا المستودع أولًا بالتحقق تلقائيًا من سيناريوهين لاختيار بيانات الاعتماد.

  1. collision (تصادم): لا توجد سوى بيانات اعتماد ghcr.io بينما الهدف هو cr.io
  2. exact (مطابقة تامة): توجد بيانات اعتماد cr.io مطابقة تمامًا للهدف

يجب أن يختار الإصدار المُصاب بيانات الاعتماد بشكل خاطئ في السيناريو الأول، بينما يجب أن يرفضها الإصدار المُصحَّح. وفي السيناريو الثاني السليم، يجب أن ينجح كلا الإصدارين.

أضفنا إلى ذلك مقارنة ديناميكية تستخدم سجل mock مؤقتًا (للاستخدام لمرة واحدة) على العنوان 127.0.0.1 بدلًا من سجل خارجي حقيقي. يرسل الإصدار المُصاب 0.7.0 طلبين محليًا، ويُلاحَظ ظهور ترويسة Authorization اصطناعية في الطلب الثاني بعد تحدي المصادقة. أما الإصدار المُصحَّح 0.7.1 فيُرفض في مرحلة اختيار بيانات الاعتماد، فيكون عدد الطلبات صفرًا. لا تتضمن النتائج قيم الترويسة، بل فقط ما إذا كان ظهورها قد لوحظ وعدد الطلبات.

أداة CLI لفحص تعرّض المشروع

تقرأ أداة cve-2026-59891-audit البيانات الوصفية (metadata) فقط من ملف package-lock.json الخاص بالمشروع المستهدف ومن إعداد Docker المحدَّد صراحةً، وتُميّز ما يلي:

  • مسار تثبيت @sigstore/oci المتأثر ورقم إصداره
  • وجود إصدار مُصاب وما إذا كانت شروط التعرّض الفعلي مستوفاة
  • تعارض السلسلة الجزئية (substring) في اسم Registry، والهدف الفعلي للاختيار وفق ترتيب مفاتيح JSON
  • الأولويات حسب البيئة، والإجراءات التصحيحية، وإجراءات إعادة الاختبار
  • أدلة JSON وMarkdown مع إزالة اسم مضيف (hostname) Registry والمسارات المطلقة

للتنفيذ المباشر باستخدام بيانات (fixture) اصطناعية:

root@kitploit:~
npm run audit:demo

لفحص مشروع Node.js آخر:

root@kitploit:~
npm run audit:project -- \
  --project ../target-project \
  --docker-config ../review-copy/config.json \
  --image cr.io/example/demo \
  --destination-trust unknown \
  --format markdown \
  --output reports/cve-2026-59891.md

يجب تحديد --destination-trust بأحد الخيارات التالية:

  • trusted: يؤكد أن الوجهة (destination) مقيدة بالكود وبقائمة السماح (allowlist)
  • untrusted: يؤثر الإدخال الخارجي أو إدخال سير العمل (workflow) على الوجهة
  • unknown: لم يتم تأكيد ذلك بعد

تنقسم نتائج التقييم إلى: exposure_conditions_met وpotential_exposure وaffected_component_only وnot_detected وindeterminate. وحتى نتيجة not_detected هي مجرد نتيجة ضمن نطاق المدخلات المسجَّل فقط، ولا تعني "آمن" أو "الامتثال للوائح".

وسائل الحماية

  • لا يقرأ مختبر الانحدار ملف ~/.docker/config.json الحقيقي ولا يعدّله.
  • يستخدم فقط HOME مخصصًا معزولًا وقيمًا وهمية بلا قيمة حقيقية: lab-user / LAB_ONLY_FAKE_TOKEN.
  • لا يستدعي الحزمة إلا عندما تكون HOME وعلامة المختبر والقيم الوهمية جميعها صحيحة.
  • يمنع مسبار الانحدار الخاص باختيار بيانات الاعتماد، بوصفه شركًا (tripwire)، كل استدعاءات HTTP(S) وTCP وTLS وDNS وfetch.
  • في سطح شبكة Node الذي يستخدمه المسبار الديناميكي، يُسمح فقط بطلبات HTTP الموجهة إلى منفذ 127.0.0.1 المحدد الذي خصصه نظام التشغيل. ويُحظر طلبات HTTP الخارجية أو الموجهة إلى منافذ أخرى، وDNS resolver، وTLS، وUDP، وfetch العامة وWebSocket.
  • لا يُورِّث العمليات الفرعية رموز الجلسة الحالية أو متغيرات بيئة Docker.
  • يتحقق الاختبار من عدم تخزين حتى ترويسة وهمية في stdout/stderr أو نتائج التدقيق، بل تبقى القيم المنطقية (boolean) وعدد الطلبات فقط.
  • لا يمكن حذف --docker-config في واجهة الفحص CLI، ولا تستنتج الأداة وجود الملف من HOME أو DOCKER_CONFIG.

نظرًا لأن الحزمة المُصابة تُثبَّت عمدًا، فقد مُنع نشر المشروع كحزمة npm عبر إعداد "private": true. لا يجوز استخدامه كاعتمادية في كود الإنتاج. ولهذا، فإن إبلاغ npm audit عن الإصدار 0.7.0 هو نتيجة متوقعة، وقد وُثِّق نطاق هذا الاستثناء وأسبابه في SECURITY.md.

التشغيل

المتطلبات: Node.js 22.22.2+ أو 24.15.0+ أو 26 فما فوق. الإصدار الموصى به مُثبَّت في ملف .nvmrc.

root@kitploit:~
npm ci --ignore-scripts
npm test
npm run demo
npm run dynamic:demo
npm run audit:fixture
npm run audit:demo
npm run evidence

النتائج الأساسية المتوقعة من npm run demo:

root@kitploit:~
0.7.0  collision  credential-selected
0.7.1  collision  credential-rejected
0.7.0  exact      credential-selected
0.7.1  exact      credential-selected

Regression result: PASS

النتائج الأساسية المتوقعة من npm run dynamic:demo:

root@kitploit:~
{
  "vulnerable": {
    "packageVersion": "0.7.0",
    "credentialSelection": "credential-selected",
    "requestCount": 2,
    "authorizationObserved": true,
    "digestVerified": true,
    "networkPolicy": "exact-loopback-only"
  },
  "fixed": {
    "packageVersion": "0.7.1",
    "credentialSelection": "credential-rejected",
    "requestCount": 0,
    "authorizationObserved": false,
    "digestVerified": false,
    "networkPolicy": "exact-loopback-only"
  },
  "regressionResult": "PASS"
}

يبلغ إجمالي الاختبارات الآلية 34 اختبارًا. ينشئ npm run evidence 7 ملفات في المجمل: 6 مخرجات خاضعة للفحص، بالإضافة إلى SHA256SUMS للتحقق من سلامتها.

القدرات التي يُظهرها هذا المشروع

  • شرح شروط حدوث CVE حقيقي على مستوى الكود وإعادة إنتاجه بأمان
  • تصميم اختبارات انحدار (regression) تقارن الإصدار المُصاب والإصدار المُصحَّح في ظل الظروف نفسها
  • تصميم اختبار loopback-only يقارن ديناميكيًا حتى ما إذا كانت بيانات الاعتماد الاصطناعية تُرسل محليًا
  • تقييم الافتراضات المسبقة للهجوم في البيئة الفعلية، بشكل منفصل عن درجة CVSS المنشورة
  • التحديد الثابت لملفات package-lock v1·v2·v3، والأسماء المستعارة (alias)، والاعتماديات المتداخلة (nested dependencies)
  • توليد تلقائي لأدلة تدقيق بصيغة JSON وMarkdown مع استبعاد المعلومات السرية
  • إدارة الثغرات عبر المسار: الاكتشاف ← تحليل الأثر ← التحقق من الإصلاح ← الضبط (control)
  • اختبارات أمنية آمنة عند الفشل (fail-safe) لا تمس بيانات الاعتماد الحقيقية

المصادر والنطاق

  • GitHub Security Advisory GHSA-pf56-329r-95rw
  • NVD CVE-2026-59891

هذا المشروع تقييم رقابي (control) تعليمي محدود. تُثبت نتائج loopback اختلافات السلوك في البيئة الاصطناعية فقط، ولا تُثبت تعرّض بيانات الاعتماد أو اختراقها أو فعالية الضوابط في بيئة مؤسسية حقيقية. ولا تعني أهلية CISA أو شهادة ISMS-P أو امتثال منظمة معينة للوائح. حارس Node API (guard) هو طبقة دفاع لمسار التنفيذ المرصود للاعتماديات المُقفلة، وليس نطاق شبكة (network namespace) على مستوى نظام التشغيل أو جدار حماية.

توجد الوثائق التفصيلية حول النطاق والاختبارات والمخاطر والضوابط في docs/، وينشئ npm run evidence سجل تنفيذ قابلًا لإعادة الإنتاج وملف manifest بصيغة SHA-256.

تنزيل الأداة
  • لا تقوم CLI بفك ترميز (decode) قيم بيانات الاعتماد أو تجزئتها (hash) أو طباعتها، ولا تشغّل حزم المشروع المستهدف أو Docker أو مساعد بيانات الاعتماد (credential helper)، ولا تتصل بالشبكة.
  • إذا اكتشفت الأداة symlink أو مفاتيح JSON مكررة أو ملف lockfile غير مدعوم أو ملف npm-shrinkwrap.json ذا أولوية أعلى، فإنها تفشل دون أن تفترض أن الوضع آمن.