🇰🇷 한글 설명
Linux 커널 USB NCM 가젯 드라이버에서 net_device가 완전히 초기화되기 전에 접근하려고 할 때 NULL 포인터 역참조 오류가 발생합니다. 이 문제는 커밋 56a512a9b410에서 net_device 할당을 미루면서 발생했습니다. gncm_bind() 함수에서 qmult, host_addr, dev_addr을 ncm_opts->net_opts 구조체에 저장하여 나중에 net_device가 완전히 할당될 때 적용하도록 수정되었습니다.
💡 쉬운 설명
USB 네트워크 드라이버가 준비되지 않은 네트워크 장치에 접근하려다 시스템이 다운되는 문제입니다. 설정값을 미리 저장해두었다가 장치가 준비된 후 적용하도록 수정했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: legacy: ncm: Fix NPE in gncm_bind
Commit 56a512a9b410 ("usb: gadget: f_ncm: align net_device lifecycle
with bind/unbind") deferred the allocation of the net_device. This
change leads to a NULL pointer dereference in the legacy NCM driver as
it attempts to access the net_device before it's fully instantiated.
Store the provided qmult, host_addr, and dev_addr into the struct
ncm_opts->net_opts during gncm_bind(). These values will be properly
applied to the net_device when it is allocated and configured later in
the binding process by the NCM function driver.
📍 영향받는 시스템
Linux kernel 5.x+ with USB NCM gadget driver (commit 56a512a9b410 이후 버전)
⚔️ 공격 벡터
USB NCM gadget 바인딩 프로세스 중 특정 설정으로 트리거
🛡️ 대응 방법
최신 커널로 업그레이드 또는 배포판 벤더의 패치가 포함된 커널 업데이트 적용
🔧 검증 코드
Patched가 출력되면 취약점이 패치된 상태이며, 커널 버전이 출력되면 벤더 보안 공지에서 해당 버전이 안전한지 확인하세요.
grep -qr "ncm_opts->net_opts" /usr/src/linux* 2>/dev/null && echo "Patched" || echo "Verify kernel version: $(uname -r)"