CVE-2026-98767 in Linux
요약
\~에 의해 VulDB • 2026. 10. 20.
리눅스 커널에서 다음 취약점이 해결되었습니다:
usb: dwc3: gadget: 유효하지 않은 이벤트 버퍼 카운트로 인한 IRQ 스톰 수정
dwc3_check_event_buf()가 GEVNTCOUNT 값을 읽을 때 해당 값이 이벤트 버퍼 길이를 초과하는 경우, 커밋 63ccd26cd1f6("usb: dwc3: gadget: event count does not exceed event buffer length 확인")은 IRQ_NONE를 반환하며 GEVNTCOUNT에 다시 쓰지 않습니다. DWC3 인터럽트는 레벨 트리거 방식(level-triggered)이므로, 지워지지 않은 IRQ 소스는 라인 상태를 유지하여tight한 IRQ 스톰을 유발합니다. 이로 인해 99,900개의 미처리 인터럽트가 누적되고 spurious.c:184에서 BUG가 발생하며 커널 패닉으로 이어집니다.
결과적인 콜스택은 다음과 같습니다: __report_bad_irq+0xac/0xc8 note_interrupt+0x340/0x468 handle_irq_event+0xac/0xc0 handle_fasteoi_irq+0x120/0x228 gic_handle_irq+0x68/0x108 ... kernel BUG at kernel/irq/spurious.c:184
재현을 위해 GEVNTCOUNT 레지스터에 이벤트 버퍼 길이를 초과하는 위조된 값을 직접 씁니다:
devmem <DWC3_BASE + 0xc40c> 4 0x1004
위조된 카운트를 GEVNTCOUNT에 다시 써서 IRQ 소스를 지우고, dwc3_event_buffers_setup()의 기존 이벤트 클리어 패턴과 일관되게 에러 복구를 스케줄링하여 컨트롤러를 재초기화합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.