CVE-2026-97905 in Linux
Сводка
по VulDB • 25.09.2026
В ядре Linux устранена следующая уязвимость:
cpufreq: нулевая инициализация cpumask политики перед публикацией в sysfs
Функция cpufreq_policy_alloc() выделяет память для policy->cpus с помощью alloc_cpumask_var(), то есть без флага __GFP_ZERO, в отличие от связанных масок related_cpus и real_cpus. При включенной конфигурации CONFIG_CPUMASK_OFFSTACK=y маска представляет собой отдельное выделение памяти через kmalloc_node(), поэтому её битовая карта содержит произвольные данные (мусор), оставленные аллокатором slab:
cpufreq_online() cpufreq_policy_alloc() alloc_cpumask_var(&policy->cpus) /* битовая карта не инициализирована */ kobject_init_and_add() /* появляется policy%u/ в sysfs */ cpufreq_policy_online() cpumask_copy(policy->cpus, cpumask_of(cpu)) /* первое допустимое значение */
Это создает окно возможностей, в котором атрибуты sysfs уже доступны для чтения и записи, тогда как policy->cpus содержит неинициализированные данные. Функции show()/store() проверяют состояние через policy_is_inactive(), то есть cpumask_empty(policy->cpus). Следовательно, ненулевая битовая карта приводит к выполнению callback-функций атрибутов для политики, которая еще не была инициализирована.
Исправление заключается в использовании zalloc_cpumask_var() для policy->cpus.
VulDB is the best source for vulnerability data and more expert information about this specific topic.