🇰🇷 한글 설명
Linux 커널의 amd_stb_s2d_init() 함수가 SMU 명령의 반환 값을 제대로 확인하지 않아 발생하는 취약점입니다. SMU 명령 실패 시 물리 주소 값이 초기화되지 않은 상태로 devm_ioremap()에 전달되어, 물리 주소 0을 매핑함으로써 시스템 경고를 발생시키거나 예기치 않은 동작을 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품(SMU)에 명령을 내렸을 때 오류가 발생해도 이를 무시하고 잘못된 메모리 주소를 사용하려 시도하는 문제입니다. 이로 인해 시스템이 불안정해지거나 오류 메시지가 발생하며 작동이 멈출 수 있습니다.
🇺🇸 원문 (English)
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().
📍 영향받는 시스템
AMD PMC 드라이버를 사용하는 Linux 커널 (x86_64 아키텍처)
⚔️ 공격 벡터
하드웨어 SMU 오류를 유도하여 잘못된 물리 주소 매핑을 발생시키는 방식
🛡️ 대응 방법
SMU 명령의 반환 값을 검증하고 물리 주소가 0인 경우 매핑을 거부하도록 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.