🇰🇷 한글 설명
Linux 커널의 ACPI PRM 처리 과정에서 EFI 런타임 서비스용 메모리 블록을 잘못 식별하여 발생하는 취약점입니다. PRM 핸들러가 적절한 EFI_MEMORY_RUNTIME 유형이 아닌 EFI_CONVENTIONAL_MEMORY를 참조함으로써 페이지 요청 예외가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영 체제가 시스템 관리 기능을 수행할 때, 엉뚱한 메모리 공간을 사용하려고 시도하여 오류가 발생하는 문제입니다. 이로 인해 시스템이 예상치 못한 방식으로 멈추거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context
PRMT needs to find the correct type of block to translate the PA-VA
mapping for EFI runtime services.
The issue arises because the PRMT is finding a block of type
EFI_CONVENTIONAL_MEMORY, which is not appropriate for runtime services
as described in Section 2.2.2 (Runtime Services) of the UEFI
Specification [1]. Since the PRM handler is a type of runtime service,
this causes an exception when the PRM handler is called.
[Firmware Bug]: Unable to handle paging request in EFI runtime service
WARNING: CPU: 22 PID: 4330 at drivers/firmware/efi/runtime-wrappers.c:341
__efi_queue_work+0x11c/0x170
Call trace:
Let PRMT find a block with EFI_MEMORY_RUNTIME for PRM handler and PRM
context.
If no suitable block is found, a warning message will be printed, but
the procedure continues to manage the next PRM handler.
However, if the PRM handler is actually called without proper allocation,
it would result in a failure during error handling.
By using the correct memory types for runtime services, ensure that the
PRM handler and the context are properly mapped in the virtual address
space during runtime, preventing the paging request error.
The issue is really that only memory that has been remapped for runtime
by the firmware can be used by the PRM handler, and so the region needs
to have the EFI_MEMORY_RUNTIME attribute.
[ rjw: Subject and changelog edits ]
📍 영향받는 시스템
ACPI PRM 핸들러를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
로컬 공격자가 특정 ACPI 호출을 유도하여 시스템 예외를 발생시킬 수 있음
🛡️ 대응 방법
PRM 핸들러가 EFI_MEMORY_RUNTIME 속성을 가진 메모리 블록을 사용하도록 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인