🔍 CVE-2025-21704

7.8
CVSS Score
HIGH
2025-02-22
2026-10-15 02:17
✅ 완료

🇰🇷 한글 설명

Linux kernel의 USB CDC-ACM 드라이버에서 제어 전송 버퍼 크기 검증을 수행하지 않아 메모리 손상 (buffer overflow)이 발생할 수 있습니다. 조각화된 알림 재조립 과정에서 expected_size 값이 올바르게 계산되지 않으면 메모리 영역 밖에서 데이터를 읽게 되어 시스템 크래시나 권한 상승으로 이어질 수 있습니다.

💡 쉬운 설명

Linux에서 USB 모뎀을 관리하는 드라이버 결함으로, 악의적인 USB 디바이스를 연결하면 시스템 메모리를 손상시킬 수 있습니다. ModemManager 같은 프로그램이 USB 포트를 자동 감지하면 공격이 더욱 용이해집니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: usb: cdc-acm: Check control transfer buffer size before access If the first fragment is shorter than struct usb_cdc_notification, we can't calculate an expected_size. Log an error and discard the notification instead of reading lengths from memory outside the received data, which can lead to memory corruption when the expected_size decreases between fragments, causing `expected_size - acm->nb_index` to wrap. This issue has been present since the beginning of git history; however, it only leads to memory corruption since commit ea2583529cd1 ("cdc-acm: reassemble fragmented notifications"). A mitigating factor is that acm_ctrl_irq() can only execute after userspace has opened /dev/ttyACM*; but if ModemManager is running, ModemManager will do that automatically depending on the USB device's vendor/product IDs and its other interfaces.

📍 영향받는 시스템

Linux kernel 모든 버전 (commit ea2583529cd1 이후 메모리 손상 발생 가능, ModemManager 구동 환경에서 위험도 증가)

⚔️ 공격 벡터

악의적인 USB CDC-ACM 디바이스 연결 후 조각화된 제어 전송(fragmented notification)을 통해 buffer overflow 트리거

🛡️ 대응 방법

Linux kernel을 최신 버전으로 업데이트하고, 신뢰할 수 없는 USB 장치 연결 금지 및 자동 USB 감지 비활성화

🔧 검증 코드

커널 버전을 확인한 후 cdc-acm.c에서 버퍼 크기 검증 코드 존재 여부로 패치 적용 상태를 판단합니다. 패치가 없으면 'Patch status unknown' 출력됩니다.

Shell / Script
uname -r && grep -A2 'Check control transfer buffer size' /usr/src/linux-*/drivers/usb/class/cdc-acm.c 2>/dev/null || echo 'Patch status unknown'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Git Linux Kernel