CVE-2026-89901 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 17.

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

media: airspy - 연결 해제 시 NULL deref 수정을 위해 vb2_video_unregister_device() 사용

airspy_disconnect()는 v4l2_lock 하에서 s->udev를 초기화하지만, 그 후 airspy_stop_streaming()은 조건 없이 airspy_ctrl_msg() 및 airspy_free_stream_bufs()를 호출합니다. 스트리밍 사용자가 연결 해제 후에 장치를 닫으면 stop_streaming()이 실행되어 NULL인 s->udev를 역참조합니다:

airspy_stop_streaming() airspy_ctrl_msg(s, CMD_RECEIVER_MODE, 0, 0, NULL, 0) usb_sndctrlpipe(s->udev, 0) /* NULL deref */ airspy_free_stream_bufs(s) usb_free_coherent(s->udev, ...) /* NULL deref */

airspy 드라이버는 file_operations에서 vb2_fop_release()를 사용하므로, video_unregister_device(&s->vdev) 대신 vb2_video_unregister_device(&s->vdev)로 교체하고 s->udev 초기화 전에 이를 이동합니다. vb2_video_unregister_device()는 vb2 큐를 해제하며, 스트리밍이 활성 상태인 경우 airspy_stop_streaming()을 동기적으로 실행하므로 URB, 일관된 DMA 스트림 버퍼 및 하드웨어 정지 제어 메시지는 모두 s->udev가 유효한 동안에 실행됩니다.

vb2_video_unregister_device()는 내부적으로 vdev->queue->lock(vb_queue_lock)를 잠그고, stop_streaming()은 v4l2_lock을 잠급니다. 따라서 등록 해제 시퀀스 주변의 이전 mutex_lock(&s->vb_queue_lock) / mutex_lock(&s->v4l2_lock) 쌍은 자체 교착 상태(self-deadlock)를 유발하므로 제거되었습니다. s->udev = NULL 주변에 짧은 v4l2_lock 임계 영역이 남아 있어 파일 설명자를 여전히 보유하는 모든 ioctl 경로에서 일관된 상태를 볼 수 있습니다.

본 문제는 https://sashiko.dev/ 에서 INV-003 시리즈의 자동 검토를 통해 식별되었습니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Linux

예약하다

2026. 09. 11.

모더레이션

수락

항목

VDB-405735

EPSS

0.00000

출처

Interested in the pricing of exploits?

See the underground prices here!