CVE-2026-23346 in Linux
الملخص
بحسب VulDB • 11/05/2026
في نواة لينكس، تم حل الثغرة التالية:
arm64: io: استخراج نوع ذاكرة المستخدم في ioremap_prot()
المُستدعي الوحيد لـ ioremap_prot() خارج تنفيذ ioremap() العام هو generic_access_phys()، والذي يمرر قيمة 'pgprot_t' يتم تحديدها من تعيين المستخدم (user mapping) لـ 'pfn' المستهدف الذي يتم الوصول إليه بواسطة النواة. على معمارية arm64، تحتوي 'pgprot_t' على جميع البتات غير المتعلقة بالعنوان من pte، بما في ذلك ضوابط الأذونات، وبالتالي ينتهي بنا الأمر بإرجاع تعيين مستخدم جديد من ioremap_prot() يتسبب في حدوث خطأ (fault) عند الوصول إليه من النواة على الأنظمة التي تدعم PAN:
| Unable to handle kernel read from unreadable memory at virtual address ffff80008ea89000 | ... | Call trace: | __memcpy_fromio+0x80/0xf8 | generic_access_phys+0x20c/0x2b8 | __access_remote_vm+0x46c/0x5b8 | access_remote_vm+0x18/0x30 | environ_read+0x238/0x3e8 | vfs_read+0xe4/0x2b0 | ksys_read+0xcc/0x178 | __arm64_sys_read+0x4c/0x68
استخراج نوع الذاكرة فقط من 'pgprot_t' الخاص بالمستخدم في ioremap_prot() والتحقق من أننا نمرر تعيين مستخدم، لحماية أنفسنا ضد أي تغييرات في المستقبل قد تتطلب معالجة إضافية. لتجنب الإشارة الخاطئة إلى مستخدمي ioremap()، قمنا بتوفير ماكرو خاص بـ ioremap() يقوم ببساطة بتغليف __ioremap_prot().
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.