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

الملخص

بحسب VulDB • 25/07/2026

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

hwrng: virtio: تقييد قيمة used.len المُبلغ عنها من الجهاز في دالة copy_data()

تقوم الدالة random_recv_done() بتخزين قيمة used.len المُبلَّغ عنها مباشرةً داخل vi->data_avail. ثم تستخدم الدالة copy_data() هذه القيمة كمؤشر (index) لـ vi->data[] باستخدام vi->data_idx (التي تم تحديثها بواسطة استدعاءات سابقة للدالة copy_data())، وتنفذ عملية memcpy() دون إعادة التحقق من صحة أيٍّ من القيمتين مقابل حجم المخزن المؤقت المُعلن عنه sizeof(vi->data) (وهو SMP_CACHE_BYTES بايت، وعادةً ما يكون 32 أو 64).

يمكن لخلفية virtio-rng خبيثة أو بها أخطاء ضبط قيمة used.len لتتجاوز sizeof(vi->data)، مما يدفع عملية memcpy() إلى تجاوز نهاية المصفوفة الداخلية والانتقال إلى أجزاء من شريحة (slab) kmalloc-1k المجاورة. تقوم الدالة hwrng_fillfn() بخلط هذه البايتات داخل مولد الأرقام العشوائية للضيف (guest RNG)، ويمكن لجذر النظام في الضيف أيضاً ملاحظتها مباشرةً عبر /dev/hwrng.

الأثر الملموس يحدث داخل بيئة الضيف:

- سلامة الذاكرة/التعزيز الأمني: أي خلفية virtio-rng تقوم بالإبلاغ المفرط عن قيمة used.len تتسبب في قراءة السائق (driver) خارج نطاق vi->data إلى محتويات شريحة غير ذات صلة. تعد hwrng_fillfn() خيط نواة يعمل بمجرد اكتشاف الجهاز؛ ولا تفاعل مطلوب مع مساحة المستخدم في الضيف لبدء تشغيل تجاوز الحدود (OOB).

- تسرب عبر الحدود (نموذج التهديد للحوسبة السرية): يمكن لمراقب النظام (hypervisor) خبيث يتعاون مع جذر نظام ضيع خبيث أو مُخترق استخدام /dev/hwrng كقناة لتسريب بيانات شريحة الذاكرة في نواة الضيف. يضبط المضيف قيمة used.len كبيرة، ويقرأ جذر الضيف من /dev/hwrng، وتحتوي البايتات المُرجعة على محتويات شريحة نواة الضيف التي كانت مجاورة لـ vi->data. عملياً، عادةً ما تقوم ضيوف الحوسبة السرية (مثل SEV-SNP وTDX) بتعطيل virtio-rng تماماً، لذا فإن هذا المسار محدود النطاق، لكن الإصلاح لا يزال يستحق الإضافة لأن ثغرة سلامة الذاكرة الأساسية تلوث مولد الأرقام العشوائية للضيف على أي مضيف.

تؤكد KASAN حدوث تجاوز الحدود (OOB) في ضيف يعمل بإصدار 7.1-rc4 والذي تم تعديل خلفية virtio-rng الخاصة به للإبلاغ عن used.len = 0x10000:

BUG: KASAN: slab-out-of-bounds in virtio_read+0x394/0x5d0 Read of size 64 at addr ffff88800ae0ba20 by task hwrng/52 Call Trace: __asan_memcpy+0x23/0x60 virtio_read+0x394/0x5d0 hwrng_fillfn+0xb2/0x470 kthread+0x2cc/0x3a0 Allocated by task 1: probe_common+0xa5/0x660 virtio_dev_probe+0x549/0xbc0 The buggy address belongs to the object at ffff88800ae0b800 which belongs to the cache kmalloc-1k of size 1024 The buggy address is located 0 bytes to the right of allocated 544-byte region [ffff88800ae0b800, ffff88800ae0ba20)

نفس فئة الأ

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

مسؤول

Linux

حجز

19/07/2026

إفشاء

25/07/2026

الاعتدال

تمت الموافقة

إدخال

VDB-383246

EPSS

0.00148

KEV

لا

النشاطات

منخفض جدًا

المصادر

Might our Artificial Intelligence support you?

Check our Alexa App!