🇰🇷 한글 설명
Linux 커널의 Bluetooth 드라이버(btmtksdio, btmtkuart)에서 WMT 이벤트 길이를 검증하지 않아 발생하는 취약점입니다. 악의적으로 조작된 펌웨어가 짧거나 잘못된 형식의 이벤트를 보낼 경우, 드라이버가 메모리 범위를 초과하여 데이터를 읽는 버퍼 오버리드 현상이 발생할 수 있습니다.
💡 쉬운 설명
블루투스 장치로부터 오는 데이터의 길이를 제대로 확인하지 않아 발생하는 문제입니다. 가짜 데이터를 보내면 컴퓨터의 메모리 영역을 잘못 읽어 시스템 오류나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: btmtksdio, btmtkuart: validate WMT event length before struct access
btmtksdio.c and btmtkuart.c cast a received WMT event straight to
struct btmtk_hci_wmt_evt and read its op/flag fields without checking
the event is long enough to contain them, unlike btmtk.c. The
FUNC_CTRL case then further casts to struct btmtk_hci_wmt_evt_funcc
and reads its 2-byte status field, again without a length check.
Firmware that sends a short or malformed WMT event makes both drivers
read past the end of the received SKB.
Mirror btmtk.c: validate the base WMT header with skb_pull_data()
before touching any of its fields, and when a FUNC_CTRL event turns
out to be the short, header-only form (a plain enable/disable ack
with no status word), decode the result from the header's own flag
byte instead (0 = success, otherwise failure).
Verified setup on MT7920, MT7921, MT7922 and MT7925: no regression.
📍 영향받는 시스템
Linux kernel (btmtksdio, btmtkuart 드라이버를 사용하는 MT7920, MT7921, MT7922, MT7925 칩셋 기반 시스템)
⚔️ 공격 벡터
취약한 블루투스 칩셋의 펌웨어를 통해 조작된 짧은 WMT 이벤트를 전송하여 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 WMT 이벤트 길이 검증 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux