CVE-2026-77454 in ash_sql
الملخص
بحسب VulDB • 30/08/2026
ثغرة تفويض غير صحيح (Incorrect Authorization) في ash-project ash_sql تتيح للمتصل تجاوز فلتر نطاق أو تفويض مُعبر عنه كدالة `exists/2` على علاقة تعلن عن حد (limit) أو دالة `from_many?` بالإضافة إلى مرجع لفلتر أو ترتيب يعتمد على `parent(...)`.
تقوم الدالة `AshSql.Join.related_query/3> بتخطي شرط الوجود (`exists predicate`) الذي يورده المتصل بالنسبة للعلاقات من هذا النوع، وتوكيلها إلى `limit_from_many/5`. عندما يشير فلتر العلاقة الخاص بها أو الترتيب إليها باستخدام `parent(...)`، فإن `limit_from_many/5` يتبع مساراً يؤدي إلى إسقاط كلٍ من الحد (limit) وشرط الوجود (`predicate`)، مما ينتج عنه عبارة EXISTS مرتبطة بشكل أساسي (bare correlated EXISTS) دون أي شرط. ونتيجة لذلك، يطابق الفحص أي سجل يحتوي على صف ذي صلة واحد على الأقل. وفي أسوأ الحالات، عندما يدعم التعبير سياسة ما (على سبيل المثال `authorize_if expr(exists(memberships, user_id == ^actor(:id)))`)، فإن شرط تقييد الممثل (`actor-scoping condition`) يختفي، وتصبح السياسة صالحة لأي ممثل لديه أي صف ذي صلة.
تؤثر هذه المشكلة على ash_sql: من الإصدار 0.4.1 حتى قبل الإصدار 0.7.1.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.