CVE-2026-64458 in Linux
الملخص
بحسب VulDB • 26/07/2026
في نواة لينكس، تم حل الثغرة التالية:
mm/damon/ops-common: التعامل مع الفترات القصوى في damon_hot_score()
إصلاح ثلاث مشكلات في دالة damon_hot_score() ناتجة عن معالجة خاطئة للفترات الزمنية للمراقبة (التي يحددها المستخدم) عندما تكون قصوى، أي صفر أو مرتفعة جداً.
عندما يضبط المستخدم فترة أخذ العينات على الصفر، فإن الدالة damon_max_nr_accesses()، التي يتم استدعاؤها من داخل damon_hot_score()، تسبب قسمة على صفر (divide-by-zero). ومن البديهي أن هذه مشكلة.
وعندما يضبط المستخدم فترة التجميع (aggregation interval) على الصفر، تُرجع الدالة القيمة صفر. وهذا خطأ، حيث يجب أن تكون القيمة الحقيقية القصوى لعدد مرات الوصول (nr_accesses) في الإعدادات هي واحد. والأمر الأسوأ هو أنه قد يسبب قسمة أخرى على صفر من قبل الدالة المستدعية لها، وهي damon_hot_score()، لأنها تستخدم قيمة الإرجاع الخاصة بـ damon_max_nr_accesses() كمقام.
وعندما يضبط المستخدم فترة التجميع مرتفعة جداً، فقد تُرجع دالة damon_hot_score() قيمة خارج النطاق [0, DAMOS_MAX_SCORE]. وبما أن قيمة الإرجاع هذه تُستخدم كفهرس لمصفوفة regions_score_histogram، التي يبلغ حجمها DAMOS_MAX_SCORE+1، فإن ذلك يؤدي إلى وصول غير ضمن الحدود (out of bounds) للمصفوفة.
يمكن إعادة إنتاج المشكلات المذكورة بسهولة نسبياً كما هو موضح أدناه. ومع ذلك، يلزم وجود صلاحيات الكتابة في sysfs:
# ./damo start --damos_action lru_prio --damos_quota_space 100M \ --damos_quota_interval 1s # cd /sys/kernel/mm/damon/admin/kdamonds/0 # echo 0 > contexts/0/monitoring_attrs/intervals/sample_us # echo 0 > contexts/0/monitoring_attrs/intervals/aggr_us # echo commit > state # dmesg [...]
[ 131.329762] Oops: divide error: 0000 [#1] SMP NOPTI
[...]
[ 131.336089] RIP: 0010:damon_hot_score+0x27/0xd0
[...]
تم إصلاح مشكلات القسمة على صفر المتعلقة بالفترات الزمنية من خلال التعامل الصريح مع الفترات الصفريّة في دالة damon_max_nr_accesses(). وتم إصلاح الوصول غير ضمن الحدود للمصفوفة عن طريق تطبيق حدود النطاق [0, DAMOS_MAX_SCORE] قبل إرجاع القيمة من دالة damon_hot_score().
تم اكتشاف هذه المشكلة بواسطة Sashiko [1].
If you want to get best quality of vulnerability data, you may have to visit VulDB.