🔍 CVE-2024-56544

5.5
CVSS Score
MEDIUM
2024-12-27
2026-10-21 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 udmabuf 구성 요소에서 folios 배열을 할당할 때 kmalloc을 사용하여 발생하는 메모리 할당 제한 문제입니다. 64비트 시스템에서 특정 조건 하에 4MB 이상의 메모리 할당을 시도할 경우 경고가 발생하며 할당에 실패할 수 있습니다.

💡 쉬운 설명

리눅스 시스템에서 특정 대용량 메모리를 사용하려고 할 때, 메모리를 빌려오는 방식의 한계 때문에 오류가 발생하고 작업이 중단되는 문제입니다. 이를 해결하기 위해 더 큰 메모리도 안정적으로 빌려올 수 있는 새로운 방식을 적용했습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: udmabuf: change folios array from kmalloc to kvmalloc When PAGE_SIZE 4096, MAX_PAGE_ORDER 10, 64bit machine, page_alloc only support 4MB. If above this, trigger this warn and return NULL. udmabuf can change size limit, if change it to 3072(3GB), and then alloc 3GB udmabuf, will fail create. [ 4080.876581] ------------[ cut here ]------------ [ 4080.876843] WARNING: CPU: 3 PID: 2015 at mm/page_alloc.c:4556 __alloc_pages+0x2c8/0x350 [ 4080.878839] RIP: 0010:__alloc_pages+0x2c8/0x350 [ 4080.879470] Call Trace: [ 4080.879473] <TASK> [ 4080.879473] ? __alloc_pages+0x2c8/0x350 [ 4080.879475] ? __warn.cold+0x8e/0xe8 [ 4080.880647] ? __alloc_pages+0x2c8/0x350 [ 4080.880909] ? report_bug+0xff/0x140 [ 4080.881175] ? handle_bug+0x3c/0x80 [ 4080.881556] ? exc_invalid_op+0x17/0x70 [ 4080.881559] ? asm_exc_invalid_op+0x1a/0x20 [ 4080.882077] ? udmabuf_create+0x131/0x400 Because MAX_PAGE_ORDER, kmalloc can max alloc 4096 * (1 << 10), 4MB memory, each array entry is pointer(8byte), so can save 524288 pages(2GB). Further more, costly order(order 3) may not be guaranteed that it can be applied for, due to fragmentation. This patch change udmabuf array use kvmalloc_array, this can fallback alloc into vmalloc, which can guarantee allocation for any size and does not affect the performance of kmalloc allocations.

📍 영향받는 시스템

Linux Kernel (udmabuf 모듈을 사용하는 시스템)

⚔️ 공격 벡터

로컬 사용자가 대용량 udmabuf 생성을 시도하여 커널 경고를 유발하고 서비스 거부(DoS)를 일으킬 수 있음

🛡️ 대응 방법

udmabuf의 folios 배열 할당 방식을 kmalloc에서 kvmalloc으로 변경한 최신 커널 패치 적용

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전인지 배포판 보안 공지를 통해 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel