CVE-2026-89962 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 16.

리눅스 커널에서 다음 취약점이 해결되었습니다:

powerpc/kexec_file: kexec 범위 절단 방지

Sashiko AI 검토를 통해 다음과 같은 문제가 지적되었습니다.

__merge_memory_ranges() 함수는 메모리 범위를 병합할 때 겹치는 메모리 범위를 잘못 처리합니다. sort_memory_ranges()가 모든 범위를 시작 주소 기준 오름차순으로 정렬하지만, 병합 로직에는 두 가지 결함이 남아 있습니다:

1. 현재 범위의 시작을 이전 요소(i-1) 대신 활성 대상 인덱스(idx)와 비교하지 않습니다. 2. 'ranges[idx].end'를 'ranges[i].end'로 무조건 덮어씁니다.

이 로직 결함은 더 큰 메모리 범위가 이후의 작은 범위들을 완전히 포괄할 때 치명적인 메모리 절단을 초래합니다.

예를 들어, 세 가지 범위로 구성된 정렬된 입력 배열을 고려해 보겠습니다: Range A (idx=0): [0x1000 - 0x9000]
Range B (i=1): [0x2000 - 0x5000] (Range A 내부에 완전히 포함됨)
Range C (i=2): [0x6000 - 0x8000] (Range A 내부에 완전히 포함됨)

1. i=1일 때 (Range B): ranges[1].start(0x2000) <= ranges[0].end + 1(0x9001)은 TRUE입니다.
코드가 실행됩니다: ranges[0].end = ranges[1].end, 이는 Range A의 끝을 0x9000에서 0x5000으로 잘못 축소시킵니다.

2. i=2일 때 (Range C): ranges[2].start(0x6000) <= ranges[1].end + 1(0x5001)은 FALSE입니다.
코드는 else 블록에 진입하여 손상된 새 범위를 생성합니다.

결과적으로 유효한 메모리 조각 [0x5001 - 0x5fff] 및 [0x8001 - 0x9000]이 kexec 제외 목록에서 완전히 손실되어, 크래시 커널이 활성 메모리를 덮어쓸 수 있게 되어 데이터 손상 또는 시스템 충돌을 유발할 수 있습니다.

현재 범위의 시작을 활성 병합된 범위(idx)의 끝과 비교하고 max()를 사용하여 외부 경계가 절단되지 않도록 안전하게 처리함으로써 이 문제를 수정합니다.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

출처

Do you know our Splunk app?

Download it now for free!