🔍 CVE-2025-38392

5.5
CVSS Score
MEDIUM
2025-07-25
2026-11-05 21:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 idpf 드라이버에서 제어 큐 락이 뮤텍스로 구현되어 있어, VIRTCHNL2_CAP_MACFILTER가 활성화된 상태에서 원자적 컨텍스트 내 sleep이 발생하는 문제가 있습니다. 이를 스핀락으로 변경하고, DMA 메모리를 물리적으로 연속된 영역으로 요청하도록 수정하여 해결했습니다.

💡 쉬운 설명

네트워크 카드 드라이버가 잠금 처리를 잘못 사용해 모듈 로드 시 커널 경고와 불안정이 발생할 수 있습니다. 잠금 방식을 바꾸고 메모리 할당을 수정하는 방식으로 고쳐졌습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: idpf: convert control queue mutex to a spinlock With VIRTCHNL2_CAP_MACFILTER enabled, the following warning is generated on module load: [ 324.701677] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:578 [ 324.701684] in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 1582, name: NetworkManager [ 324.701689] preempt_count: 201, expected: 0 [ 324.701693] RCU nest depth: 0, expected: 0 [ 324.701697] 2 locks held by NetworkManager/1582: [ 324.701702] #0: ffffffff9f7be770 (rtnl_mutex){....}-{3:3}, at: rtnl_newlink+0x791/0x21e0 [ 324.701730] #1: ff1100216c380368 (_xmit_ETHER){....}-{2:2}, at: __dev_open+0x3f0/0x870 [ 324.701749] Preemption disabled at: [ 324.701752] [<ffffffff9cd23b9d>] __dev_open+0x3dd/0x870 [ 324.701765] CPU: 30 UID: 0 PID: 1582 Comm: NetworkManager Not tainted 6.15.0-rc5+ #2 PREEMPT(voluntary) [ 324.701771] Hardware name: Intel Corporation M50FCP2SBSTD/M50FCP2SBSTD, BIOS SE5C741.86B.01.01.0001.2211140926 11/14/2022 [ 324.701774] Call Trace: [ 324.701777] <TASK> [ 324.701779] dump_stack_lvl+0x5d/0x80 [ 324.701788] ? __dev_open+0x3dd/0x870 [ 324.701793] __might_resched.cold+0x1ef/0x23d <..> [ 324.701818] __mutex_lock+0x113/0x1b80 <..> [ 324.701917] idpf_ctlq_clean_sq+0xad/0x4b0 [idpf] [ 324.701935] ? kasan_save_track+0x14/0x30 [ 324.701941] idpf_mb_clean+0x143/0x380 [idpf] <..> [ 324.701991] idpf_send_mb_msg+0x111/0x720 [idpf] [ 324.702009] idpf_vc_xn_exec+0x4cc/0x990 [idpf] [ 324.702021] ? rcu_is_watching+0x12/0xc0 [ 324.702035] idpf_add_del_mac_filters+0x3ed/0xb50 [idpf] <..> [ 324.702122] __hw_addr_sync_dev+0x1cf/0x300 [ 324.702126] ? find_held_lock+0x32/0x90 [ 324.702134] idpf_set_rx_mode+0x317/0x390 [idpf] [ 324.702152] __dev_open+0x3f8/0x870 [ 324.702159] ? __pfx___dev_open+0x10/0x10 [ 324.702174] __dev_change_flags+0x443/0x650 <..> [ 324.702208] netif_change_flags+0x80/0x160 [ 324.702218] do_setlink.isra.0+0x16a0/0x3960 <..> [ 324.702349] rtnl_newlink+0x12fd/0x21e0 The sequence is as follows: rtnl_newlink()-> __dev_change_flags()-> __dev_open()-> dev_set_rx_mode() - > # disables BH and grabs "dev->addr_list_lock" idpf_set_rx_mode() -> # proceed only if VIRTCHNL2_CAP_MACFILTER is ON __dev_uc_sync() -> idpf_add_mac_filter -> idpf_add_del_mac_filters -> idpf_send_mb_msg() -> idpf_mb_clean() -> idpf_ctlq_clean_sq() # mutex_lock(cq_lock) Fix by converting cq_lock to a spinlock. All operations under the new lock are safe except freeing the DMA memory, which may use vunmap(). Fix by requesting a contiguous physical memory for the DMA mapping.

📍 영향받는 시스템

Intel IDPF(Infrastructure Data Path Function) 드라이버를 사용하는 Linux 커널 6.15-rc 이후 버전 계열 시스템

⚔️ 공격 벡터

로컬 또는 드라이버 설정 조건에서 발생하는 커널 버그로, 원격 공격 경로는 명확히 알려지지 않았습니다.

🛡️ 대응 방법

패치된 Linux 커널(해당 수정이 포함된 안정 버전)로 업데이트하고 재부팅하세요.

🔧 검증 코드

커널 버전과 idpf 모듈 정보를 확인하고, 배포판 보안 권고 또는 커널 changelog에서 이 CVE 수정이 포함된 버전인지 대조하세요. 모듈이 없으면 idpf 드라이버를 사용하지 않는 시스템입니다.

Shell / Script
uname -r && (modinfo idpf 2>/dev/null | grep -E '^(version|srcversion|vermagic)')

📊 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