CVE-2026-80854 in Linux
요약
\~에 의해 VulDB • 2026. 09. 04.
리눅스 커널에서 다음 취약점이 해결되었습니다:
usb: gadget: f_tcm: LUN 제거(teardown)가 완료될 때까지 포트 개수를 유지합니다.
tcm_usbg_drop_nexus()는 tpg_port_count가 0에 도달하면 세션 삭제를 허용합니다. 그러나 usbg_port_unlink()는 현재 core_dev_del_lun()이 활성 se_lun 참조의 소멸(drain)을 기다리기 전에 fabric_pre_unlink() 콜백에서 해당 카운트를 감소시킵니다.
마지막 LUN 제거가 네임스페이스(nexus) 제거와 경쟁(race)하면, 후자는 0인 포트 개수를 관찰하고 target_remove_session()를 호출할 수 있습니다. 이로 인해 세션 명령어 맵(sess_cmd_map)이 해제되지만, 비행 중(in-flight)인 struct usbg_cmd(그리고 해당 작업 항목 포함)에 여전히 접근될 수 있습니다.
마지막 LUN의 unlink와 네임스페이스 제거를 겹치게 하면 이 수명 주기 위반(lifetime violation)을 usbg_cmd_work에 대한 DEBUG_OBJECTS "free active" 경고, 그 다음 target-core BUG/Oops로 재현할 수 있습니다.
범용 타겟 코어(unlink path)는 core_dev_del_lun() 완료 후 콜백이 없습니다. 선택적 fabric_post_unlink() 콜백을 추가하고 이를 f_tcm 포트 개수에 사용합니다. 이제 카운트는 활성 LUN 참조의 소멸(draining)이 core_dev_del_lun()에 의해 완전히 끝날 때까지 0이 아닌 상태를 유지하므로, 네임스페이스 제거가 명령어 완료 중에 세션을 해제하는 것을 방지합니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.