🇰🇷 한글 설명
Linux 커널의 x86/amd_node 구성 요소에서 amd_smn_init() 함수가 실패하더라도 amd_smn_read/write() 함수가 호출될 수 있는 취약점이 발견되었습니다. 이 경우 'amd_roots'가 NULL 상태로 남아 있어, 해당 함수가 초기화되지 않은 메모리에 접근함으로써 NULL 포인터 역참조(NULL pointer dereference)가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 부품인 AMD 프로세서를 제어하는 프로그램이 준비가 덜 된 상태에서 명령을 받으면 시스템이 멈추거나 오류가 날 수 있는 문제입니다. 초기화 과정에서 발생할 수 있는 메모리 접근 오류를 수정하여 시스템 안정성을 높였습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
x86/amd_node: Fix potential NULL pointer dereference
amd_smn_read/write() are exported functions around __amd_smn_rw(), so
they are always available even if amd_smn_init() fails. In that case,
'amd_roots' is NULL and __amd_smn_rw() will access uninitialized memory.
Then, commit:
83518453074d ("x86/amd_node: Add SMN offsets to exclusive region access")
added the 'smn_exclusive' flag, which indicated the calls to
pci_request_config_region_exclusive() succeeded, to prevent
concurrent userspace access.
Commit:
0a4b61d9c2e4 ("x86/amd_node: Fix AMD root device caching")
re-ordered initialization so pci_request_config_region_exclusive() is
called earlier and a failure exits amd_smn_init() before allocating
'amd_roots'. The setting of 'smn_exclusive' moved to the end of
amd_smn_init(), after 'amd_roots' is allocated. It became redundant
and can be removed.
Replace 'smn_exclusive' with directly checking 'amd_roots', to fix a
potential NULL pointer dereference and to simplify the logic.
[ bp: Reorg commit message, touchup comment. ]
[ mingo: Rebase & further touchups. ]
📍 영향받는 시스템
AMD 프로세서를 사용하는 Linux 커널 시스템 (amd_node 모듈 포함)
⚔️ 공격 벡터
시스템 초기화 실패 상황을 유도하거나 특정 하드웨어 인터페이스를 통해 잘못된 메모리 접근을 유발
🛡️ 대응 방법
최신 보안 패치가 적용된 Linux 커널로 업데이트하여 amd_roots 상태를 직접 확인하도록 수정된 로직 적용
🔧 검증 코드
현재 커널 버전을 확인하고, 커널 모듈 내에 해당 함수가 포함되어 있는지 확인하여 패치 적용 여부를 검토합니다.
uname -r && grep -r 'amd_smn_rw' /lib/modules/$(uname -r)/kernel/arch/x86/drivers/pci/