🇰🇷 한글 설명
Linux 커널의 wilc1000 Wi-Fi 드라이버에서 RX 버퍼의 경계 외 쓰기(OOB-write) 취약점이 발견되었습니다. 장치가 보고하는 수신 크기가 버퍼 크기(96K)를 초과할 수 있어, 조작된 SDIO 장치를 통해 커널 메모리를 오염시킬 수 있습니다.
💡 쉬운 설명
Wi-Fi 장치가 실제 저장 공간보다 더 많은 데이터를 보내려고 할 때, 컴퓨터의 중요한 메모리 영역을 덮어쓸 수 있는 문제입니다. 악의적인 장치를 연결하면 시스템이 망가질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: wilc1000: fix RX buffer OOB-write in wilc_wlan_handle_isr_ext()
wilc_wlan_handle_isr_ext() takes the RX transfer size from the
device-reported interrupt status register (a 15-bit field shifted left by 2,
up to 131068 bytes) and reads that many bytes from the device into
rx_buffer, which is only WILC_RX_BUFF_SIZE (96K) large. The wrap
check only handles the current offset; the size itself is never
compared against the buffer, so a bogus SDIO device can make the driver
OOB-write rx_buffer by up to ~32K with data it controls.
The oversized transfer also leaves rx_buffer_offset past the end of
the buffer, after which the unsigned wrap check stops working and
the overflow can repeat.
Drop any transfer whose size exceeds the RX buffer, acknowledging
the data interrupt and re-arming the RX engine so the bogus frame is
discarded and reception can continue. This also restores the
rx_buffer_offset <= WILC_RX_BUFF_SIZE invariant the wrap check
relies on.
This is not expected to change driver behavior in most cases:
without this check, an oversized transfer would most likely
corrupt neighboring kernel memory instead of completing anyway, and
the drop path performs the same interrupt acknowledgment and RX
engine re-arming as the normal path, so subsequent transfers are
received unaffected.
Discovered by Atuin - Automated Vulnerability Discovery Engine.
📍 영향받는 시스템
Linux kernel (wilc1000 Wi-Fi driver 포함 버전)
⚔️ 공격 벡터
조작된 인터럽트 상태 레지스터 값을 가진 악의적인 SDIO Wi-Fi 장치를 통한 메모리 오버플로우 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 수신 크기 검증 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.