🔍 CVE-2026-89507

7.8
CVSS Score
HIGH
2026-09-11
2026-10-19 09:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 RDMA/ucma 구성 요소에서 발생하는 레이스 컨디션 취약점으로, ucma_migrate_id() 함수가 실행되는 동안 ctx->file이 변경될 수 있습니다. 이로 인해 리스트 손상(list corruption)과 커널 버그가 발생하며, 뮤텍스 잠금이 해제되지 않아 시스템이 중단될 수 있습니다. 권한이 없는 사용자도 /dev/infiniband/rdma_cm 장치를 통해 이 취약점을 악용할 수 있습니다.

💡 쉬운 설명

시스템 내부에서 데이터가 이동하는 찰나의 순간에 데이터가 바뀌어 버리는 오류가 발생합니다. 이로 인해 컴퓨터의 핵심 기능인 커널이 멈추거나 오류가 발생하여 시스템이 불안정해질 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: RDMA/ucma: Lock the handler in ucma_write_cm_event() ctx->file may only be changed under the handler lock and the xa_lock, which is what stops uevents being queued for a ctx while ucma_migrate_id() moves it to another file. The CM core takes that lock before invoking ucma_event_handler(), but the write() paths that queue uevents themselves do not. ucma_write_cm_event() re-reads ctx->file for each of its four dereferences, so ucma_migrate_id() can swap it mid-sequence: mutex_lock(&ctx->file->mut); /* file A */ list_add_tail(&uevent->list, &ctx->file->event_list); /* file B */ mutex_unlock(&ctx->file->mut); /* file B */ wake_up_interruptible(&ctx->file->poll_wait); /* file B */ The window is the mutex_lock() itself: the writer sleeps in it while the migration reassigns ctx->file. The list_add_tail() then runs on file B's event_list holding only file A's mutex: list_add corruption. prev->next should be next (ffff888101320f30), but was ffff88814a08c418. (prev=ffff88814a075c18). kernel BUG at lib/list_debug.c:32! Call Trace: ucma_write_cm_event+0x36e/0x5e0 and file A's mut is left held forever, wedging its next writer in D state. The uevent is also stranded on a list ucma_cleanup_ctx_events() will not walk, so it outlives its context. /dev/infiniband/rdma_cm is 0666 and no RDMA device is involved, so an unprivileged user reaches all of this. Take the handler lock, as ucma_cleanup_mc_events() does; ctx->cm_id is pinned by the ucma_get_ctx() reference.

📍 영향받는 시스템

RDMA/ucma를 사용하는 Linux 커널 버전

⚔️ 공격 벡터

권한이 없는 로컬 사용자가 /dev/infiniband/rdma_cm 장치에 접근하여 특정 이벤트를 유도함

🛡️ 대응 방법

해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 보안 업데이트 버전인지 확인

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