🔍 CVE-2026-98773

0.0
CVSS Score
UNKNOWN
2026-10-18
2026-10-21 13:21
✅ 완료

🇰🇷 한글 설명

Linux 커널의 USB cdc-acm 드라이버에서 장치가 연결 해제될 때 URB(USB Request Block) 재시작 과정을 건너뛰지 않아 발생하는 취약점입니다. 장치 해제 과정에서 이미 해제된 DMA 메모리에 접근하게 되어 Use-After-Free(UAF) 오류가 발생할 수 있습니다.

💡 쉬운 설명

USB 장치를 컴퓨터에서 뽑을 때, 컴퓨터가 이미 사라진 장치의 메모리 영역을 다시 사용하려고 시도하면서 발생하는 오류입니다. 이로 인해 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: USB: cdc-acm: skip URB restart in port_shutdown if disconnected acm_port_shutdown() is called from the tty-port machinery whenever the last user closes the port. acm_disconnect() sets acm->disconnected and calls tty_port_tty_vhangup(), which eventually triggers port_shutdown(). At that point acm_disconnect() has already called acm_poison_urbs() and is about to free the control and read URBs. However, acm_port_shutdown() unconditionally calls acm_unpoison_urbs() and, when the ALWAYS_POLL_CTRL quirk is set, immediately re-submits the ctrlurb and all read URBs. If the concurrent acm_disconnect() then frees those URBs and their DMA buffers while they are in-flight, the result is a use-after-free in acm_ctrl_irq() or acm_read_bulk_callback() accessing the freed DMA memory. Fix by checking acm->disconnected after draining the delayed anchor and returning early: if we are in a disconnect path the URBs must remain poisoned and must not be resubmitted. The early return is placed after the delayed-anchor drain loop because that loop only cancels write-side accounting (wb->use = false and autopm counter) and does not touch the hardware path.

📍 영향받는 시스템

Linux kernel (cdc-acm driver)

⚔️ 공격 벡터

특수하게 조작된 USB 장치를 연결 및 해제하는 과정을 반복하여 메모리 오류 유도

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel