🇰🇷 한글 설명
Linux 커널의 USB 스토리지 드라이버(isd200)에서 ATA 디바이스의 HEADS 또는 SECTORS 값이 0일 경우 나누기 연산에서 0으로 나누는 오류가 발생하여 시스템이 충돌할 수 있습니다. 악의적이거나 결함 있는 USB 디바이스 에뮬레이션을 통해 트리거될 수 있으며, 패치는 초기화 단계에서 이 값들을 검증하여 0인 경우 장치 바인딩을 거부합니다.
💡 쉬운 설명
특정 USB 장치가 잘못된 값을 보내면 리눅스 커널이 계산 오류로 충돌할 수 있습니다. 커널을 업데이트하면 리눅스가 이러한 장치를 거부하도록 수정됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
USB: usb-storage: Prevent divide-by-0 error in isd200_ata_command
The isd200 sub-driver in usb-storage uses the HEADS and SECTORS values
in the ATA ID information to calculate cylinder and head values when
creating a CDB for READ or WRITE commands. The calculation involves
division and modulus operations, which will cause a crash if either of
these values is 0. While this never happens with a genuine device, it
could happen with a flawed or subversive emulation, as reported by the
syzbot fuzzer.
Protect against this possibility by refusing to bind to the device if
either the ATA_ID_HEADS or ATA_ID_SECTORS value in the device's ID
information is 0. This requires isd200_Initialization() to return a
negative error code when initialization fails; currently it always
returns 0 (even when there is an error).
📍 영향받는 시스템
Linux kernel usb-storage isd200 driver를 포함한 모든 버전 (패치 이전)
⚔️ 공격 벡터
악의적으로 조작된 USB 저장 장치 또는 에뮬레이션 디바이스를 시스템에 연결하여 트리거
🛡️ 대응 방법
Linux 커널을 CVE-2024-27059 패치가 적용된 버전 이상으로 업데이트
🔧 검증 코드
커널 버전을 확인하고, 보안 공지사항(linux-cve.mitre.org, nvd.nist.gov)에서 해당 버전의 CVE-2024-27059 패치 상태를 확인합니다.
dmesg | grep -E 'isd200|usb.*storage' | tail -5 || uname -r