🔍 CVE-2026-64188

7.8
CVSS Score
HIGH
2026-07-20
2026-08-11 19:08
✅ 완료

🇰🇷 한글 설명

Linux 커널의 Qualcomm RMnet 드라이버에서 rmnet_dellink() 함수 호출 시 발생하는 Use-After-Free 취약점입니다. 엔드포인트가 해시 테이블에서 제거된 후 즉시 메모리가 해제되어, RCU 리더가 해당 메모리에 접근할 때 잘못된 포인터를 참조하여 시스템 충돌이나 오류를 유발할 수 있습니다.

💡 쉬운 설명

컴퓨터가 사용 중인 데이터를 너무 빨리 지워버려서 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 예상치 못한 동작을 할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net: qualcomm: rmnet: fix endpoint use-after-free in rmnet_dellink() rmnet_dellink() removes the endpoint from the hash table with hlist_del_init_rcu() and then immediately frees it with kfree(). However, RCU readers on the receive path (rmnet_rx_handler -> __rmnet_map_ingress_handler) may still hold a reference to the endpoint and dereference ep->egress_dev after the memory has been freed. The endpoint is a kmalloc-32 object, and the stale read at offset 8 corresponds to the egress_dev pointer. BUG: unable to handle page fault for address: ffffffffde942eef Oops: 0002 [#1] SMP NOPTI CPU: 1 UID: 0 PID: 137 Comm: poc_write Not tainted 7.0.0+ #4 PREEMPTLAZY RIP: 0010:rmnet_vnd_rx_fixup (rmnet_vnd.c:27) Call Trace: <TASK> __rmnet_map_ingress_handler (rmnet_handlers.c:48 rmnet_handlers.c:101) rmnet_rx_handler (rmnet_handlers.c:129 rmnet_handlers.c:235) __netif_receive_skb_core.constprop.0 (net/core/dev.c:6096) __netif_receive_skb_one_core (net/core/dev.c:6208) netif_receive_skb (net/core/dev.c:6467) tun_get_user (drivers/net/tun.c:1955) tun_chr_write_iter (drivers/net/tun.c:2003) vfs_write (fs/read_write.c:688) ksys_write (fs/read_write.c:740) </TASK> Add an rcu_head field to struct rmnet_endpoint and replace kfree() with kfree_rcu() so the endpoint memory remains valid through the RCU grace period. Also remove the rmnet_vnd_dellink() call and inline only the nr_rmnet_devs decrement, since rmnet_vnd_dellink() would set ep->egress_dev to NULL during the grace period, creating a data race with lockless readers.

📍 영향받는 시스템

Qualcomm RMnet 드라이버를 사용하는 Linux 커널 버전 (7.0.0+ 기반)

⚔️ 공격 벡터

네트워크 패킷 수신 경로를 통한 메모리 참조 오류 유도 (Local/Remote)

🛡️ 대응 방법

커널을 업데이트하여 rmnet_endpoint 구조체에 rcu_head를 추가하고 kfree() 대신 kfree_rcu()를 사용하도록 패치 적용

🔧 검증 코드

출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인

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

💻 영향받는 소프트웨어

NVIDIA GPU Display Driver for Linux