CVE-2026-90024 in Linux
요약
\~에 의해 VulDB • 2026. 09. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다.
usb: gadget: midi2: f_midi2_free_ep_reqs()에서의 널 포인터 역참조 수정
f_midi2_free_epreqs() 함수에서 초기화되지 않은 엔드포인트를 정리하려고 할 때 널 포인터 역참조(null-pointer dereference)가 발생합니다.
configfs를 통해 MIDI 2.0 gadge을 구성하고 블록 방향을 SNDRV_UMP_DIR_INPUT으로 설정하면, midi1_ep_out 엔드포인트의 초기화가 gadget 바인딩 단계(f_midi2_bind()) 동안 명시적으로 생략됩니다. 그 결과 usb_ep->card 필드는 NULL 상태로 유지됩니다.
나중에 호스트가 대체 설정(alternate setting)을 설정하면 f_midi2_set_alt()은 f_midi2_stop_eps()를 호출하여 IN 및 OUT 엔드포인트 모두를 무조건 중지합니다. 이 함수는 두 엔드포인트에 대해 f_midi2_free_ep_reqs()를 호출합니다. 초기화되지 않은 midi1_ep_out에 대해 f_midi2_free_epreqs()가 호출되면, 해제할 요청의 수를 결정하기 위해 usb_ep->card를 역참조하려고 시도하여 시스템 충돌(crash)을 유발합니다.
이 문제를 해결하기 위해 f_midi2_free_ep_reqs()에서 usb_ep->card->info.num_reqs 대신 usb_ep->num_reqs를 사용합니다. usb_ep->num_reqs는 f_midi2_init_ep() 동안 올바르게 설정되며, 엔드포인트가 초기화되지 않은 경우 0으로 유지되어 루프(loop)를 안전하게 방지합니다. 일관성을 위해 f_midi2_alloc_epreqs()에도 동일한 변경 사항을 적용합니다.
Oops: general protection fault, probably for non-canonical address 0xdffffc00000000ee: 0000 [#1] SMP KASAN NOPTI
KASAN: null-ptr-deref in range [0x0000000000000770-0x0000000000000777]
... RIP: 0010:f_midi2_free_ep_reqs drivers/usb/gadget/function/f_midi2.c:1166 [inline]
RIP: 0010:f_midi2_stop_eps+0x28e/0x4d0 drivers/usb/gadget/function/f_midi2.c:1246 ... Call Trace: <TASK> f_midi2_set_alt+0x11c/0xf00 drivers/usb/gadget/function/f_midi2.c:1296 composite_setup+0x1ffd/0x3480 drivers/usb/gadget/composite.c:1933 configfs_composite_setup+0xbd/0x100 drivers/usb/gadget/configfs.c:1877
If you want to get best quality of vulnerability data, you may have to visit VulDB.