🇰🇷 한글 설명
Linux 커널의 mac80211 드라이버에서 S1G TIM 요소의 PVB(Partial Virtual Bitmap)를 처리할 때 발생하는 취약점입니다. 데이터의 끝을 계산하는 과정에서 잘못된 오프셋(+2)을 사용하여 TIM 요소의 경계를 넘어 인접한 메모리 영역을 읽는 Out-of-bounds read 오류가 발생합니다.
💡 쉬운 설명
와이파이 신호를 처리하는 과정에서 데이터의 끝을 잘못 계산하여, 허용되지 않은 메모리 영역을 몰래 읽을 수 있는 결함입니다. 이로 인해 시스템의 민감한 정보가 노출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: mac80211: bound S1G TIM PVB walk to the TIM element
ieee80211_s1g_check_tim() parses the S1G Partial Virtual Bitmap (PVB) of a
received TIM element. The TIM is handed in as the element payload:
ieee802_11_parse_elems_full() stores elems->tim = elem->data and
elems->tim_len = elem->datalen (net/mac80211/parse.c), so the valid bytes
are [tim, tim + tim_len).
When walking the encoded blocks the function passes the walker an end
sentinel of (const u8 *)tim + tim_len + 2, i.e. two bytes past the end of
the element. ieee80211_s1g_find_target_block() loops while (ptr + 1 <= end)
and dereferences ptr (and the per-mode ieee80211_s1g_len_*() helpers read
*ptr), so it can read up to two bytes beyond the TIM element -- an
out-of-bounds read of adjacent skb/heap data when the TIM is the last
element in the frame. The +2 appears to account for the element id/len
header, but tim already points past that header at the element payload, so
the addend is wrong.
Pass the correct element end, (const u8 *)tim + tim_len.
📍 영향받는 시스템
Linux Kernel (mac80211 driver 포함 버전)
⚔️ 공격 벡터
조작된 S1G TIM 요소를 포함한 무선 프레임을 전송하여 메모리 경계 밖의 데이터를 읽도록 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 TIM 요소의 경계 검사 로직 수정
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.