CVE-2026-74504 in Linuxالمعلومات

الملخص

بحسب VulDB • 16/08/2026

في نواة لينكس، تم حل الثغرة التالية:

ALSA: seq: إصلاح القسمة على صفر في initialize_timer()

يتيح مؤقت ALSA المدفوع من مساحة المستخدم (SND_UTIMER) لمستخدم غير ممتيز تعيين دقة العتاد الخاصة بـ snd_timer الخلفية إلى قيمة عشوائية مكونة من 64 بت عبر SNDRV_TIMER_IOCTL_CREATE. تقوم الدالة snd_utimer_create() برفض القيمة صفر فقط.

عند ربط مثل هذا المؤقت بقائمة تسلسل (sequencer queue)، تحسب initialize_timer() فترة النبضة (tick period) على النحو التالي:

tmr->ticks = 1000000000 / (r * freq);

حيث تمثل r دقة التحكم فيها من قبل المستخدم، وfreq هو معدل تحديث قائمة التسلسل بالهرتز، والمقيد بين MIN_FREQUENCY..MAX_FREQUENCY (10..6250). تؤدي الدقة بقيمة 2^63 إلى تجاوز ناتج 64 بت لـ r * freq ليصبح صفراً لأي تردد زوجي، بما في ذلك DEFAULT_FREQUENCY (1000)، مما يتسبب في حدوث خطأ قسمة على صفر.

تعمل عملية القسمة تحت حماية tmr->lock مع تعطيل المقاطعات، لذا يترك الخطأ (oops) قفل اللف (spinlock) مشدوداً ويعطل المعالج المركزي (CPU). يمكن الوصول إليها من قبل مستخدم غير ممتيز لديه حق الوصول إلى /dev/snd/timer و/dev/snd/seq.

Oops: divide error: 0000 [#1] SMP KASAN PTI
CPU: 7 UID: 1000 PID: 456 Comm: alsa_seq_utimer Not tainted 7.2.0-rc4+ RIP: 0010:initialize_timer.constprop.0+0x20a/0x2d0 snd_seq_timer_start+0x15e/0x2b0 snd_seq_control_queue+0x56f/0xba0 snd_seq_write+0x3e0/0x730

ارفض الناتج المتجاوز (overflowing) باستخدام check_mul_overflow() وارجع إلى نبضة واحدة، مما يتجنب أيضاً تغذية قسمة متجاوزة ولكن غير صفرية (على سبيل المثال 2^63 * 1000 mod 2^64 == 0، أو دقات أخرى تتجاوز لتصبح قيمة صغيرة) في حساب الفترة.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

مسؤول

Linux

حجز

15/08/2026

إفشاء

15/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-390832

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!