CVE-2026-98766 in Linux
요약
\~에 의해 VulDB • 2026. 10. 20.
Linux 커널에서 다음 취약점이 해결되었습니다:
usb: gadget: aspeed-vhub: 장치 제거 시 wake_work 취소
wake_work은 하위 포트를 대기 상태에서 해제하기 위해 gadge의 .wakeup 콜백에서 활성화되며, ast_vhub_remove()에서는 결코 취소되지 않습니다. 따라서 제거 전 또는 제거 중에 큐에 삽입된 작업 항목이 devm으로 인해 vhub 및 해당 포트가 해제된 후에 실행될 수 있으며, 이는 Use-After-Free 취약점입니다.
작업만 취소하는 것으로는 충분하지 않습니다: usb_gadget_wakeup()은 잠금을 사용하지 않으며 unbind 경로는 wakeup_en을 결코 지우지 않으므로, 다른 CPU에서 진행 중인 원격 웨이크업 요청이 cancel 작업 후 vhub가 해제되기 전에 wake_work을 다시 활성화할 수 있습니다.
ast_vhub_del_dev()는 이미 gadget을 unregister하기 전에 vhub->lock 하에 d->registered를 지웁니다. ast_vhub_udc_wakeup() 내에서 d->registered가 clear된 경우 웨이크업을 거부합니다: check 및 schedule_work()은 unbind와 함께 원자적(atomic)이므로, 플래그가 지워지기 전에 통과한 웨이크업은 del_dev 루프 이후의 cancel_work_sync()에 의해 소거되고, 나중에 도착하는 것은 활성화되지 않고 반환됩니다. 또한 probe 오류 경로에서 ast_vhub_remove()를 재사용하므로 INIT_WORK()을 ast_vhub_probe() 상단으로 이동하여 초기화되지 않은 작업 항목이 취소되는 것을 방지합니다.
본 이슈는 사내 정적 분석 도구를 통해 발견되었습니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.