🇰🇷 한글 설명
Linux 커널의 AMD IOMMU 드라이버에서 iommu_mmio_show 함수 호출 시 경계 검사 오류로 인한 Out-of-bounds read 취약점이 발견되었습니다. 기존 검사 로직은 4바이트를 기준으로 확인하지만 실제 읽기 작업은 8바이트를 수행하여, 특정 오프셋에서 메모리 범위를 벗어난 읽기가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 메모리 주소를 확인할 때, 실제 읽으려는 크기보다 검사하는 크기가 작아서 허용되지 않은 메모리 영역을 읽을 수 있는 문제입니다. 이로 인해 시스템 정보가 유출되거나 예기치 않은 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
iommu/amd: Fix potential out-of-bounds read in iommu_mmio_show
In iommu_mmio_write(), it validates the user-provided offset with the
check: `iommu->dbg_mmio_offset > iommu->mmio_phys_end - 4`.
This assumes a 4-byte access. However, the corresponding
show handler, iommu_mmio_show(), uses readq() to perform an 8-byte
(64-bit) read.
If a user provides an offset equal to `mmio_phys_end - 4`, the check
passes, and will lead to a 4-byte out-of-bounds read.
Fix this by adjusting the boundary check to use sizeof(u64), which
corresponds to the size of the readq() operation.
📍 영향받는 시스템
AMD IOMMU를 사용하는 Linux 커널 (패치 적용 전 버전)
⚔️ 공격 벡터
특정 오프셋 값을 조작하여 iommu_mmio_show 핸들러를 호출하는 방식
🛡️ 대응 방법
경계 검사 로직을 4바이트에서 8바이트(sizeof(u64))로 수정하여 최신 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 보안 패치 버전인지 확인하십시오.