🇰🇷 한글 설명
Linux 커널의 wilc1000 Wi-Fi 드라이버에서 P2P public action 프레임을 처리할 때 경계 외 읽기(Out-of-bounds read) 취약점이 발견되었습니다. 특정 길이의 프레임이 들어올 경우 헤더 정보를 읽는 과정에서 메모리 범위를 벗어나게 되며, 이로 인해 시스템 크래시가 발생할 수 있습니다.
💡 쉬운 설명
Wi-Fi 장치가 특수하게 조작된 짧은 신호를 받으면, 컴퓨터가 잘못된 메모리 영역을 읽으려다 멈추거나 꺼질 수 있는 문제입니다. 근처에 있는 공격자가 인증 없이도 이 신호를 보내 시스템을 마비시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: wilc1000: fix out-of-bounds read in P2P public action frames
wilc_wfi_p2p_rx() and mgmt_tx() start parsing a frame once
ieee80211_is_public_action() returns true. That helper only verifies the
frame is long enough for the action category field, that is
offsetofend(struct ieee80211_mgmt, u.action.category), 25 bytes. Both
functions then read the P2P public action header up to oui_subtype at
offset 30 and pass "size - ie_offset" to cfg80211_find_vendor_ie(), where
ie_offset is offsetof(struct ieee80211_mgmt, u) + sizeof(*d), i.e. 32.
A public action frame of 25 to 31 bytes passes the check but is shorter
than that 32 byte header, so oui_subtype can be read out of bounds, and
because the length is unsigned, "size - ie_offset" underflows to a value
close to 4 GiB. cfg80211_find_vendor_ie() takes an unsigned int length,
so even the size_t subtraction in mgmt_tx() is truncated to the same
value. It then walks far past the buffer searching for a vendor element
until it reaches unmapped memory.
In the receive path the frame arrives over the air and needs no
association, so a nearby unauthenticated device can crash the host while
it is in P2P listen. Reject frames shorter than the P2P public action
header in both paths before dereferencing it.
📍 영향받는 시스템
Linux kernel (wilc1000 Wi-Fi driver 사용 시스템)
⚔️ 공격 벡터
근처의 비인증 공격자가 조작된 P2P public action 프레임을 전송하여 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux