🇰🇷 한글 설명
리눅스 커널의 cdc_ncm 드라이버에서 NDP32 데이터 구조 처리 시 경계 검사 오류가 발견되었습니다. ndpoffset를 고려하지 않은 경계 검사로 인해 NTB 끝부분에 NDP32가 위치할 경우 범위를 벗어난 읽기(Out-of-bounds read)가 발생할 수 있습니다.
💡 쉬운 설명
USB 네트워크 장치를 사용할 때 데이터의 끝부분을 확인하는 과정에서 계산 실수가 발생하는 보안 약점입니다. 이로 인해 시스템이 허용되지 않은 메모리 영역을 읽어 들여 정보가 유출되거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: usb: cdc_ncm: add ndpoffset to NDP32 nframes bounds check
The same bounds-check bug fixed for NDP16 in the previous patch also
exists in cdc_ncm_rx_verify_ndp32(). The DPE array size is validated
against the total skb length without accounting for ndpoffset, allowing
out-of-bounds reads when the NDP32 is placed near the end of the NTB.
Add ndpoffset to the nframes bounds check and use struct_size_t() to
express the NDP-plus-DPE-array size more clearly.
Compile-tested only.
📍 영향받는 시스템
ndpoffset 경계 검사 패치가 적용되지 않은 Linux Kernel (cdc_ncm 드라이버 사용 환경)
⚔️ 공격 벡터
조작된 NDP32 패킷을 전송하여 네트워크 드라이버의 메모리 경계 검사를 우회하는 방식
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하거나 cdc_ncm 관련 수정 사항을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.