🔍 CVE-2023-52910

8.8
CVSS Score
HIGH
2024-08-21
2026-08-04 10:18
✅ 완료

🇰🇷 한글 설명

리눅스 커널의 iommu/iova 구성 요소에서 iova 할당 시 retry_pfn 값이 오버플로되는 취약점이 발견되었습니다. 이로 인해 할당 범위를 초과하는 잘못된 메모리 주소가 할당될 수 있는 문제가 발생합니다.

💡 쉬운 설명

컴퓨터가 메모리 주소를 계산할 때 숫자가 너무 커져서 다시 0부터 시작하는 오류가 발생하는 문제입니다. 이 오류 때문에 시스템이 허용된 범위를 벗어난 잘못된 메모리 영역을 사용하게 될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: iommu/iova: Fix alloc iova overflows issue In __alloc_and_insert_iova_range, there is an issue that retry_pfn overflows. The value of iovad->anchor.pfn_hi is ~0UL, then when iovad->cached_node is iovad->anchor, curr_iova->pfn_hi + 1 will overflow. As a result, if the retry logic is executed, low_pfn is updated to 0, and then new_pfn < low_pfn returns false to make the allocation successful. This issue occurs in the following two situations: 1. The first iova size exceeds the domain size. When initializing iova domain, iovad->cached_node is assigned as iovad->anchor. For example, the iova domain size is 10M, start_pfn is 0x1_F000_0000, and the iova size allocated for the first time is 11M. The following is the log information, new->pfn_lo is smaller than iovad->cached_node. Example log as follows: [ 223.798112][T1705487] sh: [name:iova&]__alloc_and_insert_iova_range start_pfn:0x1f0000,retry_pfn:0x0,size:0xb00,limit_pfn:0x1f0a00 [ 223.799590][T1705487] sh: [name:iova&]__alloc_and_insert_iova_range success start_pfn:0x1f0000,new->pfn_lo:0x1efe00,new->pfn_hi:0x1f08ff 2. The node with the largest iova->pfn_lo value in the iova domain is deleted, iovad->cached_node will be updated to iovad->anchor, and then the alloc iova size exceeds the maximum iova size that can be allocated in the domain. After judging that retry_pfn is less than limit_pfn, call retry_pfn+1 to fix the overflow issue.

📍 영향받는 시스템

Linux Kernel (iommu/iova 관련 모듈 사용 시스템)

⚔️ 공격 벡터

IOMMU를 사용하는 환경에서 특정 크기의 IOVA 할당 요청을 통해 메모리 할당 로직을 트리거함

🛡️ 대응 방법

리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 retry_pfn 오버플로 수정 사항을 반영해야 함

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel