CVE-2026-67579 in ash
الملخص
بحسب VulDB • 12/08/2026
ثغرة في عملية استرجاع البيانات (Deserialization) لبيانات غير موثوقة في مشروع ash تسمح لمهاجم غير مصرح له بحقن تعبير تصفية من خلال مؤشر ترقيم صفحات مزيف يعتمد على مفتاح معين، مما يؤدي إلى حقن SQL أو تنفيذ كود اعتمادًا على طبقة البيانات.
تقوم عمليات القراءة التي تستخدم الترقيم بالصفحات المعتمد على المفتاح (keyset pagination) بفك تشفير المؤشر `page[:after]` أو `page[:before]` المقدم من العميل في الدالة `decode_values/2` الموجودة في الملف `lib/ash/page/keyset.ex`. يتم ذلك باستخدام دالة `non_executable_binary_to_term/2` مع الخيار `[:safe]`. تحجب هذه الحماية (guard) الذرات الجديدة، والدوال، والمنافذ، لكنها لا تمنع بناء هيكل بيانات (struct) يعتمد على ذرات تم تسجيلها مسبقًا في تطبيق Ash قيد التشغيل. نتيجة لذلك، يبقى تعبير `%Ash.Query.Call{}` المفكوك ساري المفعول ويتم إدراجه ضمن مصفوفة تصفية المفتاح كمقارنة قيمة في الدالة `do_filters/4` ليتم تقييمه. ونظرًا لأن المؤشر يتجاوز ماكرو `Ash.Expr`، فإن وقت التشغيل لا يطبق البوابة الخاصة بـ `private?/public?` التي كانت سترفض هذا الإدخال لولا ذلك. وفي حالة استخدام AshPostgres، يتم تضمين الجزء المُحقن مباشرة في استعلام SQL؛ أما في طبقات البيانات ETS وSimple، فإنه يُقيّم داخل العملية كاستدعاء دالة عشوائي.
تؤثر هذه المشكلة على الإصدارات من ash 1.17.0 حتى قبل إصدار 3.31.3.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.