PT-2026-136970
CVE-2026-118391
·
تاريخ النشر
2026-11-04
·
تاريخ التحديث
2026-11-04
الوصف من
CVSS 4.0
8.9
عاليةالمقاييسAV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
اسم البرنامج المصاب والإصدارات المتأثرة
ecto الإصدارات من 3.4.0 إلى 3.14.2
Description
يمكن لمهاجم عن بُعد غير مصرح له أن يتسبب في استنفاد الذاكرة في كل من التطبيق وخادم قاعدة البيانات. يحدث هذا عندما يقوم التطبيق بإدراج بيانات يزودها المستخدم في
json extract path/2 أو field[^key] أو splice/1. يقوم Ecto بتخزين الاستعلامات المُعدة في ذاكرة مؤقتة (cache) ضمن جدول ETS بدون حدود للحجم أو سياسات للحذف. نظرًا لأن عناصر مسار JSON المُدرجة وتوسعات splice/1 تصبح جزءًا من تعبير الاستعلام بدلاً من أن تكون مجرد معاملات، فإن كل مفتاح فريد أو طول قائمة مختلف ينشئ إدخالاً جديدًا في الذاكرة المؤقتة. عند استخدام ecto sql، يتم إنشاء بيان مُعد جديد في اتصال قاعدة البيانات لكل إدخال. ولا يتم تحرير هذه الذاكرة إلا بعد إعادة تشغيل العمليات.Recommendations
تحديث ecto إلى الإصدار 3.14.3 أو أحدث.
كإجراء مؤقت، قم بتمرير المسار كمعامل استعلام لمنعه من أن يصبح جزءًا من مفتاح الذاكرة المؤقتة (على سبيل المثال، استخدام
fragment("? #> ?", i.meta, type(^path, {:array, :string})) لقواعد بيانات PostgreSQL).
كإجـراء مؤقت، قم بتعطيل الذاكرة المؤقتة للاستعلامات المتأثرة عن طريق تعيين query cache: false في استدعاء Repo.all().
كإجراء مؤقت، قم بتقييد المفاتيح وأطوال القوائم بمجموعة معروفة ومحددة مسبقًا قبل بناء الاستعلام. وجدت خطأً في الوصف؟ لديك ما تضيفه؟ لا تتردد في مراسلتنا 👾