Zach Daniel

#6171من 60,387
50.3إجمالي CVSS
الثغرات · 9
منخفضة
3
متوسطة
2
عالية
4
PT-2026-71309
2026-08-12
7.5
CVE-2026-67579
Ash
Ash
يمكن لمهاجم غير مصدق عليه حقن تعبير تصفية باستخدام مؤشر ترقيم صفحات مزور لمجموعة المفاتيح. يحدث هذا لأن إجراءات القراءة التي تستخدم ترقيم الصفحات باستخدام مجموعة المفاتيح تقوم بفك تشفير مؤشرات `page[:after]` أو `page[:before]` التي يوفرها العميل في الدالة `decode values/2` الموجودة في `lib/ash/page/keyset.ex` باستخدام `non executable binary to term/2` مع `[:safe]`. ورغم أن هذا الحاجز يمنع دخول الذرات (atoms) والدوال (funs) والمنافذ (ports) الجديدة، إلا أنه لا يمنع الهياكل (structs) المبنية من ذرات تم تخزينها مسبقًا في تطبيق قيد التشغيل. ونتيجةً لذلك، يمكن إدراج تعبير `%Ash.Query.Call{}` الذي تم فك تشفيره في مرشح مجموعة المفاتيح كقيمة مقارنة في `do filters/4` وتقييمه. نظرًا لأن المؤشر يتجاوز ماكرو `Ash.Expr`، يفشل وقت التشغيل في تطبيق بوابة `private?/public?`. يختلف التأثير حسب طبقة البيانات: تسمح AshPostgres بحقن SQL، بينما تسمح طبقات البيانات ETS وSimple بتقييم التعبير أثناء العملية كدعوة دالة عشوائية.
PT-2026-69308
2026-08-09
5.9
CVE-2026-69659
Ash
Ash
توجد مشكلة استهلاك غير خاضع للرقابة للموارد، حيث يمكن للمهاجم استنفاد ذاكرة العقدة باستخدام مؤشر ترقيم صفحات مصمم خصيصًا لمجموعة المفاتيح. تعمل إجراءات القراءة التي تستخدم ترقيم صفحات مجموعة المفاتيح على فك تسلسل المؤشرات المقدمة من العميل عبر الدالة `decode values/2` الموجودة في `lib/ash/page/keyset.ex`. تقوم هذه العملية بفك تشفير القيمة باستخدام base64 وتمريرها إلى `:erlang.binary to term/2` دون تحديد الحد الأقصى للحجم. ونظرًا لأن تنسيق المصطلح الخارجي لـ Erlang يدعم الحمولات المضغوطة بواسطة zlib، فقد يقوم برنامج فك التشفير بتضخيم مؤشر صغير إلى عشرات الميغابايت من ذاكرة الكومة. وبما أن البرنامج يقوم فقط بتشفير المؤشرات كبيانات غير مضغوطة، فإن برنامج فك التشفير يقبل أشكال المصطلحات التي لا ينتجها برنامج التشفير. يمكن أن تؤدي الطلبات المتزامنة المتعددة إلى تراكم هذه التخصيصات وتسبب إنهاء عمل العقدة. ويتضمن ذلك المتغيرين `page[:after]` و`page[:before]`.
PT-2026-51581
2026-06-23
5.9
CVE-2026-55736
Ash
Ash
توجد مشكلة تتيح للمستخدمين تعيين قيمة حجة إجراء خاصة يُفترض أن يتم التحكم فيها حصريًا بواسطة كود موثوق به من جانب الخادم. حجج الإجراءات المُعلنة بـ `public?: false` مخصصة للإعدادات الداخلية، مثل تلك التي تتم عبر `Ash.Changeset.set private argument/3`، ولا ينبغي أن تكون قابلة للتعيين عبر مدخلات المستخدم النهائي. ومع ذلك، فإن تصفية هذه الحجج الخاصة تكون غير مكتملة عند إنشاء مجموعة تغييرات من خريطة المعلمات. في مسارات مجموعات التغييرات العادية (`for create`، `for update`، `for destroy`)، لا يتم إزالة الحجج الخاصة إلا إذا كان مفتاح المعلمة ذرة (atom)؛ أما إذا كان المفتاح ثنائيًا (سلسلة)، وهو أمر شائع في المعلمات التي يقدمها المستخدم، يتم الاحتفاظ بالحجة. في المسار الذري (`Ash.Changeset.fully atomic changeset/4`، بما في ذلك التحديثات الذرية والجماعية)، لا يتم استبعاد الحجج الخاصة بغض النظر عن نوع المفتاح. وهذا يسمح للمهاجم بحقن قيم في الحجج الخاصة، مما قد يؤدي إلى تصعيد الامتيازات أو انتهاكات السلامة، خاصةً إذا تم استخدام حجج مثل `acting user id` للتفويض أو ملكية السجلات.