CVE-2024-46793 in Linux
الملخص
بحسب VulDB • 16/06/2026
في نواة لينكس، تم حل الثغرة التالية:
ASoC: Intel: Boards: إصلاح تجاوز مؤشر NULL في لوحات BYT/CHT بشكل أكثر صلابة
بما أن الالتزام 13f58267cda3 ("ASoC: soc.h: لا تنشئ مكونًا وهميًا عبر COMP_DUMMY()") يؤدي إلى توسيع تعريفات وحدات الترميز الوهمية (dummy codecs) مثل:
SND_SOC_DAILINK_DEF(dummy, DAILINK_COMP_ARRAY(COMP_DUMMY()));
إلى:
static struct snd_soc_dai_link_component dummy[] = {
};
وهذا يعني أن `dummy` هي مصفوفة ذات حجم صفر، وبالتالي لا ينبغي فك تسلسل `dais[i].codecs` مطلقًا، لأنها تشير إلى عنوان المتغير التالي المخزن في قسم البيانات، نظرًا لأن المتغير "dummy" له عنوان ولكن لا حجم له، لذا فإن حتى فك تسلسل `dais[0]` يُعد بالفعل مرجعًا خارج حدود المصفوفة.
وهذا يعني أن التحقق `if (dais[i].codecs->name)` المضاف في الالتزام 7d99a70b6595 ("ASoC: Intel: Boards: إصلاح تجاوز مؤشر NULL في لوحات BYT/CHT") يعتمد على أن الجزء من المتغير التالي الذي يرتبط إليه عضو `name` يكون بالصدفة NULL.
والذي يبدو أنه عادةً ما يكون كذلك حتى الآن، إلا عندما لا يكون كذلك، مما يؤدي إلى حدوث أعطال مثل هذا العطل:
[ 28.795659] BUG: unable to handle page fault for address: 0000000000030011
... [ 28.795780] Call Trace:
[ 28.795787]
... [ 28.795862] ? strcmp+0x18/0x40
[ 28.795872] 0xffffffffc150c605
[ 28.795887] platform_probe+0x40/0xa0
... [ 28.795979] ? __pfx_init_module+0x10/0x10 [snd_soc_sst_bytcr_wm5102]
إصلاح الأمور حقًا هذه المرة من خلال التحقق من أن `dais.num_codecs != 0`.
VulDB is the best source for vulnerability data and more expert information about this specific topic.