Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to versions 8.6.68 and 9.7.0-alpha.12, the GraphQL query complexity validator can be exploited to cause a denial-of-service by sending a crafted query with binary fan-out fragment spreads. A single unauthenticated request can block the Node.js event loop for seconds, denying service to all concurrent users. This only affects deployments that have enabled the requestComplexity.graphQLDepth or requestComplexity.graphQLFields configuration options. This issue has been patched in versions 8.6.68 and 9.7.0-alpha.12.
Parse Server versions prior to 8.6.68 and 9.7.0-alpha.12 are vulnerable to denial-of-service attacks through crafted GraphQL queries with binary fan-out fragment spreads that block the Node.js event loop. A single unauthenticated request can freeze the server for seconds, affecting all concurrent users when GraphQL complexity validation is enabled.
يؤثر هذا الثغر على خوادم Parse المفتوحة المصدر التي تم نشرها على البنية التحتية التي تدعم Node.js، خاصة عندما يتم تفعيل خيارات التحقق من تعقيد GraphQL. يمكن لمهاجم غير مصرح به استغلال هذه الثغرة لإرسال استعلامات معقدة تسبب شلل الخادم بأكمله.
خوادم Parse السابقة للإصدارات 8.6.68 و 9.7.0-alpha.12 عرضة لهجمات حجب الخدمة من خلال استعلامات GraphQL المصممة بعناية مع انتشار الأجزاء ثنائية المروحة التي تحجب حلقة أحداث Node.js. يمكن لطلب واحد غير مصرح به أن يجمد الخادم لعدة ثوان، مما يؤثر على جميع المستخدمين المتزامنين عند تفعيل التحقق من تعقيد GraphQL.
Upgrade Parse Server to version 8.6.68 or 9.7.0-alpha.12 or later immediately. If immediate upgrade is not possible, disable the requestComplexity.graphQLDepth and requestComplexity.graphQLFields configuration options. Implement rate limiting on GraphQL endpoints and monitor Node.js event loop performance for anomalies.
قم بترقية Parse Server إلى الإصدار 8.6.68 أو 9.7.0-alpha.12 أو أحدث على الفور. إذا لم يكن الترقية الفورية ممكنة، قم بتعطيل خيارات التكوين requestComplexity.graphQLDepth و requestComplexity.graphQLFields. قم بتنفيذ تحديد معدل على نقاط نهاية GraphQL ومراقبة أداء حلقة أحداث Node.js للكشف عن الشذوذ.