CVE-2024-55916 in Linux정보

요약

\~에 의해 VulDB • 2026. 05. 28.

리눅스 커널에서 다음 취약점이 해결되었습니다:

드라이버: hv: util: 아직 초기화되지 않은 ringbuffer에 대한 접근 방지

KVP(또는 VSS) 데몬이 VMBus 채널의 ringbuffer가 완전히 초기화되기 전에 시작되면, 아래에서 보이는 패닉이 발생할 수 있습니다:

hv_utils: HyperV Utility Driver 등록 중 hv_vmbus: 드라이버 hv_utils 등록 중 ... BUG: kernel NULL pointer dereference, address: 0000000000000000 CPU: 44 UID: 0 PID: 2552 Comm: hv_kvp_daemon Tainted: G E 6.11.0-rc3+ #1 RIP: 0010:hv_pkt_iter_first+0x12/0xd0 Call Trace: ... vmbus_recvpacket hv_kvp_onchannelcallback vmbus_on_event tasklet_action_common tasklet_action handle_softirqs irq_exit_rcu sysvec_hyperv_stimer0 asm_sysvec_hyperv_stimer0 ... kvp_register_done hvt_op_read vfs_read ksys_read __x64_sys_read

이는 KVP/VSS 채널 콜백이 채널이 완전히 열리기 전에 호출될 수 있기 때문에 발생합니다: 1) hv_kvp_init() -> hvutil_transport_init()가 /dev/vmbus/hv_kvp를 생성하는 즉시, kvp 데몬은 장치 파일을 즉시 열 수 있으며, 파일에 메시지 KVP_OP_REGISTER1을 작성하여 드라이버에 자신을 등록할 수 있습니다(이는 kvp_on_msg() -> kvp_handle_handshake()에서 처리됨). 또한 드라이버의 응답을 위해 파일을 읽을 수 있으며, 이는 hvt_op_read()에서 처리되고, 이는 hvt->on_read(), 즉 kvp_register_done()를 호출합니다.

2) kvp_register_done()의 문제는 채널이 완전히 열리기 전에 채널 콜백이 호출될 수 있다는 점이며, 채널 콜백이 실행을 시작할 때 util_probe() -> vmbus_open()이 아직 ringbuffer를 초기화하지 않았을 수 있으므로, 콜백이 NULL pointer dereference 패닉에 부딪힐 수 있습니다.

패닉을 일관되게 재현하려면 __vmbus_open() 내 첫 번째 hv_ringbuffer_init() 직전에 KVP에 "ssleep(10)"을 추가한 다음, 드라이버 hv_utils를 언로드하고 다시 로드하여 10초 이내에 데몬을 수동으로 실행할 수 있습니다.

util_probe()의 단계를 재배열하여 KVP 또는 VSS 데몬이 사용하는 char dev 엔트리가 vmbus_open()이 완료된 후에만 생성되도록 함으로써 패닉을 수정합니다. 이 재배열은 race condition이 발생하는 것을 방지합니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

책임이 있는

Linux

예약하다

2025. 01. 09.

모더레이션

수락

항목

VDB-291242

EPSS

0.00220

출처

Might our Artificial Intelligence support you?

Check our Alexa App!