Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to versions 8.6.66 and 9.7.0-alpha.10, the GraphQL API endpoint does not respect the allowOrigin server option and unconditionally allows cross-origin requests from any website. This bypasses origin restrictions that operators configure to control which websites can interact with the Parse Server API. The REST API correctly enforces the configured allowOrigin restriction. This issue has been patched in versions 8.6.66 and 9.7.0-alpha.10.
Parse Server versions prior to 8.6.66 and 9.7.0-alpha.10 contain a critical CORS bypass vulnerability in the GraphQL API endpoint that unconditionally allows cross-origin requests regardless of configured allowOrigin restrictions. This enables attackers to bypass origin controls and interact with Parse Server APIs from unauthorized domains, potentially leading to unauthorized data access and API abuse. The vulnerability is particularly severe as the REST API correctly enforces these restrictions, creating an inconsistent security posture.
IMMEDIATE ACTIONS:
1. Identify all Parse Server instances in your infrastructure and determine their versions (check package.json or npm list parse-server)
2. Audit GraphQL API access logs for suspicious cross-origin requests from unauthorized domains
3. Implement temporary WAF rules to block GraphQL requests with suspicious Origin headers
PATCHING:
1. Upgrade Parse Server to version 8.6.66 or later for v8.x branch
2. Upgrade to version 9.7.0-alpha.10 or later for v9.x branch
3. Test patches in staging environment before production deployment
4. Coordinate with development teams to ensure application compatibility
COMPENSATING CONTROLS (if immediate patching not possible):
1. Implement reverse proxy/API gateway with strict CORS enforcement (nginx, Kong, AWS API Gateway)
2. Configure allowOrigin to whitelist only legitimate domains at infrastructure level
3. Disable GraphQL endpoint if not actively used; use REST API exclusively
4. Implement request signing/authentication tokens for all API calls
5. Monitor and alert on GraphQL requests from unexpected origins
DETECTION:
1. Search logs for GraphQL endpoint requests with Origin headers not matching allowOrigin configuration
2. Monitor for POST requests to /graphql with suspicious referer headers
3. Alert on GraphQL queries from external IP ranges or non-whitelisted domains
4. Implement SIEM rules: (endpoint=/graphql AND origin NOT IN whitelist)
الإجراءات الفورية:
1. حدد جميع مثيلات Parse Server في البنية الأساسية لديك وحدد إصداراتها (تحقق من package.json أو npm list parse-server)
2. قم بتدقيق سجلات وصول GraphQL API بحثاً عن طلبات مريبة متعددة الأصول من نطاقات غير مصرح بها
3. تطبيق قواعد WAF مؤقتة لحظر طلبات GraphQL برؤوس Origin مريبة
التصحيح:
1. قم بترقية Parse Server إلى الإصدار 8.6.66 أو أحدث لفرع v8.x
2. قم بالترقية إلى الإصدار 9.7.0-alpha.10 أو أحدث لفرع v9.x
3. اختبر التصحيحات في بيئة التجريب قبل نشر الإنتاج
4. تنسيق مع فرق التطوير لضمان توافق التطبيق
عناصر التحكم التعويضية (إذا لم يكن التصحيح الفوري ممكناً):
1. تطبيق بوابة API/وكيل عكسي مع فرض CORS صارم (nginx, Kong, AWS API Gateway)
2. تكوين allowOrigin لإدراج النطاقات الشرعية فقط على مستوى البنية الأساسية
3. تعطيل نقطة نهاية GraphQL إذا لم تكن قيد الاستخدام النشط؛ استخدم REST API حصرياً
4. تطبيق توقيع الطلب/رموز المصادقة لجميع استدعاءات API
5. مراقبة والتنبيه على طلبات GraphQL من أصول غير متوقعة
الكشف:
1. ابحث في السجلات عن طلبات نقطة نهاية GraphQL برؤوس Origin غير متطابقة مع تكوين allowOrigin
2. مراقبة طلبات POST إلى /graphql برؤوس referer مريبة
3. التنبيه على استعلامات GraphQL من نطاقات IP خارجية أو نطاقات غير مدرجة في القائمة البيضاء
4. تطبيق قواعد SIEM: (endpoint=/graphql AND origin NOT IN whitelist)