В ядре Linux устранена следующая уязвимость:
платформа/x86/amd/pmc: Распространение ошибок SMU и проверка адреса S2D.
amd_stb_s2d_init() отбрасывает возвращаемое значение нескольких команд S2D SMU. Когда SMU отклоняет команду (например, «SMU cmd error. err: 0xff»),
сбой замечается только косвенно (если вообще замечается) и сообщается как -EIO,
маскировка реальной ошибки. Более серьезно, возвращаемые значения S2D_PHYS_ADDR_LOW/HIGH игнорируются, поэтому
в случае сбоя phys_addr_low/hi остаются неинициализированными и собираются
адрес передается напрямую в devm_ioremap().
Когда СМУ оставляет их в
ноль, это отображает физический адрес 0 и выдает предупреждение ioremap-on-RAM:
amd_pmc AMDI000B:00: Ошибка командной строки SMU. ошибка: 0xff
ioremap в оперативной памяти по адресу 0x0000000000000000 - 0x0000000000ffffff
ВНИМАНИЕ: ЦП: 13 PID: 4592 в файлеarch/x86/mm/ioremap.c:... Проверьте возвращаемое значение каждой команды SMU и распространите его, а также отклоните
нулевой физический адрес перед вызовом devm_ioremap().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: platform/x86/amd/pmc: Propagate SMU errors and validate S2D address amd_stb_s2d_init() discards the return value of several S2D SMU commands. When the SMU refuses a command (e.g. "SMU cmd failed. err: 0xff") the failure is only noticed indirectly - if at all - and reported as -EIO, masking the real error. More seriously, the S2D_PHYS_ADDR_LOW/HIGH return values are ignored, so on failure phys_addr_low/hi are left uninitialised and the assembled address is passed straight to devm_ioremap(). When the SMU leaves them at zero this maps physical address 0 and trips the ioremap-on-RAM warning: amd_pmc AMDI000B:00: SMU cmd failed. err: 0xff ioremap on RAM at 0x0000000000000000 - 0x0000000000ffffff WARNING: CPU: 13 PID: 4592 at arch/x86/mm/ioremap.c:... Check the return value of each SMU command and propagate it, and reject a zero physical address before calling devm_ioremap().
Характеристики атаки
Последствия
Строка CVSS v3.1