🔍 CVE-2026-89805

7.8
CVSS Score
HIGH
2026-09-16
2026-10-19 09:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 drm/pagemap 구성 요소에서 고차(higher-order) folio 할당 실패 시 적절한 폴백(fallback) 메커니즘이 부재하고, 페이지 해제 과정에서 참조 카운트가 감소된 후 순서를 계산하는 Use-After-Free 취약점이 발견되었습니다. 이로 인해 메모리 압박 상황에서 커널 로그 스팸이 발생하거나 시스템 안정성이 저해될 수 있습니다.

💡 쉬운 설명

리눅스 운영체제의 그래픽 관련 메모리 관리 기능에서 메모리 할당 오류를 처리하는 과정 중 실수로 이미 삭제된 메모리 정보를 다시 참조하는 보안 결함이 발견되었습니다. 이 문제가 악용되거나 발생하면 시스템이 예기치 않게 멈추거나 오류가 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: drm/pagemap: Fix folio allocation fallback and use-after-put drm_pagemap_migrate_populate_ram_pfn() had two issues when populating RAM PFNs with higher-order folios: 1. The higher-order vma_alloc_folio()/folio_alloc() calls did not pass __GFP_NOWARN, so a THP allocation failure under memory pressure would spam the kernel log, and there was no fallback path despite a TODO comment stating one was needed. Add __GFP_NOWARN to the higher-order allocation and, on failure, fall back to order-0 allocations for the entire range originally covered by the failed higher-order allocation, leaving MIGRATE_PFN_COMPOUND unset for those PFNs. 2. In the free_pages error path, order was computed via folio_order(page_folio(page)) *after* put_page(page) had already dropped the reference, resulting in a use-after-free/put when that was the last reference on the page. Compute order before releasing the page. Introducing the fallback in 1. also requires the source page array handed to ->copy_to_ram() to be built differently. Both callers only populated the entry at the head of each source folio, relying on the copy callback to derive the rest of the folio from the order recorded in the matching drm_pagemap_addr. Once the destination has been demoted to order-0 folios the drm_pagemap_addr entries are per-page, so a source page is needed for every one of them; leaving them NULL makes the copy callback stop after the first page and the remainder of the range is never copied. The source folio is only split later, by migrate_vma_pages() / migrate_device_pages(), so its order cannot be used to detect the demotion - test the destination for MIGRATE_PFN_COMPOUND instead. Factor the array population out into drm_pagemap_migrate_populate_src_pages() and use it from both drm_pagemap_evict_to_ram() and __drm_pagemap_migrate_to_ram().

📍 영향받는 시스템

Linux Kernel (drm/pagemap 관련 모듈 사용 시스템)

⚔️ 공격 벡터

메모리 압박 상황을 유도하여 특정 메모리 할당 실패 경로를 실행함으로써 시스템 불안정성 유발

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 folio 할당 폴백 로직 및 Use-After-Free 수정 사항 반영

🔧 검증 코드

출력된 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel