🔍 CVE-2026-90042

9.8
CVSS Score
CRITICAL
2026-09-16
2026-10-21 13:20
✅ 완료

🇰🇷 한글 설명

Linux 커널의 Ceph 파일 시스템에서 vmalloc() 영역에 할당된 버퍼를 처리할 때 발생하는 취약점입니다. fscrypt 서브시스템이 선형 매핑 영역의 버퍼만 요구함에도 불구하고, MDS로부터 받은 메시지가 vmalloc() 영역에 위치할 경우 적절한 처리 없이 전달되어 시스템 오류(oops)를 유발할 수 있습니다.

💡 쉬운 설명

리눅스 시스템의 파일 저장 방식 중 하나인 Ceph에서 메모리 관리 오류로 인해 시스템이 갑자기 멈추거나 오류가 발생할 수 있는 문제입니다. 특정 상황에서 데이터가 저장된 메모리 위치를 잘못 참조하여 발생하는 결함입니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: ceph: properly decrypt filenames in vmalloc() buffers The fscrypt subsystem uses the scatterlist crypto API, inheriting its requirement that any buffers are in the linear mapping region. However, the messenger client uses kvmalloc() to create buffers for messages, which will occasionally place those buffers in the vmalloc() region when physical memory fragmentation doesn't permit a large enough kmalloc(). The various callers of ceph_fname_to_usr() directly pass (slices of) raw messages from the MDS without considering that the messages may be in vmalloc() buffers, resulting in oopses especially on non-x86 platforms (see 'Closes:' for more details and a reproducer). Make ceph_fname_to_usr() explicitly tolerant of vmalloc()-allocated fname->ctext, fname->name, and/or oname->name buffers, using `tname` (which, when non-null, must be a linear address; when null, is briefly allocated as necessary) as a bounce buffer to avoid passing any inappropriate addresses to fscrypt_fname_disk_to_usr(). Additionally change parse_reply_info_readdir() -- the only function to supply its own `tname` -- to follow the new "tname must never come from vmalloc()" rule by passing NULL when the message is not in the linear region. Though this causes a per-dentry kmalloc()+kfree(), this overhead exists only when processing the minority of messages that spill into vmalloc(). My (crude) testing puts this at only about 1 in 8,000 readdir messages. Still, if the overhead proves unreasonable in the future, it is easy enough to mitigate: a future change could allocate a bounce buffer in parse_reply_info_readdir() and use that as `tname` instead.

📍 영향받는 시스템

Linux kernel (Ceph subsystem 사용 환경)

⚔️ 공격 벡터

메모리 파편화가 심한 상태에서 특수하게 조작된 MDS 메시지를 통해 시스템 오류 유발

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 vmalloc() 버퍼에 대한 바운스 버퍼 처리를 적용해야 함

🔧 검증 코드

출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel