🇰🇷 한글 설명
Linux 커널 RAID10 드라이버의 raid10_make_request 함수에서, REQ_NOWAIT 플래그가 설정된 경우 mempool에서 할당한 메모리가 해제되지 않아 메모리 누수가 발생합니다. 해당 버그는 커널 패치로 수정되었습니다.
💡 쉬운 설명
RAID10 저장장치 관리 기능에서 사용이 끝난 메모리를 반납하지 않아 시스템 메모리가 조금씩 낭비되는 문제입니다. 장시간 고부하 I/O 작업이 많은 서버에서 메모리 부족 현상을 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
raid10: cleanup memleak at raid10_make_request
If raid10_read_request or raid10_write_request registers a new
request and the REQ_NOWAIT flag is set, the code does not
free the malloc from the mempool.
unreferenced object 0xffff8884802c3200 (size 192):
comm "fio", pid 9197, jiffies 4298078271
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 88 41 02 00 00 00 00 00 .........A......
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace (crc c1a049a2):
__kmalloc+0x2bb/0x450
mempool_alloc+0x11b/0x320
raid10_make_request+0x19e/0x650 [raid10]
md_handle_request+0x3b3/0x9e0
__submit_bio+0x394/0x560
__submit_bio_noacct+0x145/0x530
submit_bio_noacct_nocheck+0x682/0x830
__blkdev_direct_IO_async+0x4dc/0x6b0
blkdev_read_iter+0x1e5/0x3b0
__io_read+0x230/0x1110
io_read+0x13/0x30
io_issue_sqe+0x134/0x1180
io_submit_sqes+0x48c/0xe90
__do_sys_io_uring_enter+0x574/0x8b0
do_syscall_64+0x5c/0xe0
entry_SYSCALL_64_after_hwframe+0x76/0x7e
V4: changing backing tree to see if CKI tests will pass.
The patch code has not changed between any versions.
📍 영향받는 시스템
RAID10(md raid10) 드라이버를 사용하는 Linux 커널 (수정 커밋 적용 전 버전)
⚔️ 공격 벡터
로컬 사용자가 REQ_NOWAIT 플래그를 사용하는 비동기 I/O 요청을 반복 발생시켜 커널 메모리를 점진적으로 소모시킬 수 있음
🛡️ 대응 방법
Linux 배포판 제공 최신 커널로 업데이트하여 CVE-2025-38444 수정 패치를 적용
🔧 검증 코드
출력된 커널 버전이 배포판의 수정된 최신 커널 버전 이상인지 확인하고, raid10 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않습니다.
uname -r && (lsmod | grep -E '^raid10' || echo 'raid10 module not loaded')