🇰🇷 한글 설명
Linux 커널의 rtl8723bs 드라이버 내 WMM_param_handler() 함수에서 경계 검사 미흡으로 인한 Out-of-Bounds(OOB) Read 취약점이 발견되었습니다. 공격자가 조작된 길이의 WMM 정보 요소(IE)를 포함한 프레임을 전송할 경우, 시스템이 허용된 범위를 벗어난 메모리를 읽어 정보가 유출될 수 있습니다.
💡 쉬운 설명
무선 랜 드라이버가 들어온 데이터의 길이를 제대로 확인하지 않아, 실제 데이터보다 더 많은 양을 읽으려고 시도하는 문제입니다. 이를 통해 해커가 시스템의 민감한 메모리 정보를 훔쳐볼 수 있는 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
staging: rtl8723bs: fix OOB read in WMM_param_handler()
WMM_param_handler() copies a fixed-size WMM parameter element out of a
received information element without checking that the element is long
enough, causing an out-of-bounds read for a short WMM IE.
The handler reads sizeof(struct WMM_para_element) (18) bytes at
pIE->data + 6, so it requires pIE->length to be at least 24
(WLAN_WMM_LEN), but it never validates the length. Two of its three
callers reach it after matching only the WMM OUI: OnAssocRsp() in
rtw_mlme_ext.c matches a 6-byte OUI, and join_cmd_hdl() matches a
4-byte OUI, before calling the handler. A vendor-specific IE carrying
the WMM OUI but a length between 6 and 23, placed in an association
response or in the IE blob handed to join_cmd_hdl(), passes the OUI
check and then makes the memcmp() and memcpy() at pIE->data + 6 read
past the end of the element. OnAssocRsp() parses a frame received from
the AP, so this is reachable from a remote peer.
The remaining caller in rtw_wlan_util.c already guards the handler with
"pIE->length == WLAN_WMM_LEN". Move the equivalent check into the
handler itself so every caller is covered; the sibling IE handlers in
the same parsing loop (HT_caps_handler(), HT_info_handler(),
ERP_IE_handler()) likewise bound their accesses by pIE->length.
📍 영향받는 시스템
Linux kernel (staging: rtl8723bs driver 포함 버전)
⚔️ 공격 벡터
원격의 공격자가 조작된 WMM 정보 요소를 포함한 무선 프레임을 전송하여 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 WMM_param_handler()의 길이 검증 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인