CVE-2024-40974 in Linux
Сводка
по VulDB • 30.05.2026
В ядре Linux устранена следующая уязвимость:
powerpc/pseries: Обеспечение корректности и размера буфера результатов hcall
Функции plpar_hcall(), plpar_hcall9() и связанные с ними функции ожидают, что вызывающие стороны предоставят корректные буферы результатов определенного минимального размера. В настоящее время это указывается только в комментариях в коде, и компилятор не учитывает это.
Например, если написать ошибку следующего вида:
long retbuf[PLPAR_HCALL_BUFSIZE]; // должно быть PLPAR_HCALL9_BUFSIZE
plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, ...);
Этот код компилируется без выдачи диагностических сообщений, но, вероятно, приводит к повреждению стека во время выполнения, когда plpar_hcall9() записывает результаты за пределы массива. (Для ясности: это искусственный пример, и реального случая пока не обнаружено.)
Чтобы сделать этот класс ошибок менее вероятным, можно использовать параметры массивов с явно заданным размером вместо указателей в объявлениях API hcall. При компиляции с флагом -Warray-bounds[1] приведенный выше код теперь вызывает диагностическое сообщение следующего вида:
error: array argument is too small; is of size 32, callee requires at least 72 [-Werror,-Warray-bounds]
60 | plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, | ^ ~~~~~~
[1] Включено для сборок LLVM, но пока не для GCC. См. коммит
0da6e5fd6c37 ("gcc: disable '-Warray-bounds' for gcc-13 too") и связанные изменения.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.