🇰🇷 한글 설명
Linux 커널의 p54 무선 랜 드라이버에서 RX 프레임 길이를 검증하지 않아 발생하는 취약점입니다. 악의적인 USB 장치가 조작된 프레임을 전송할 경우, 메모리 경계를 넘어 데이터를 읽어 들여 인접한 힙(heap) 영역의 정보를 유출할 수 있습니다.
💡 쉬운 설명
컴퓨터에 연결된 가짜 USB 장치가 실제 데이터보다 더 많은 데이터를 보내달라고 속여서, 컴퓨터 내부의 비밀 정보를 몰래 읽어가는 보안 결함입니다. 이로 인해 시스템의 중요한 메모리 내용이 외부로 유출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: p54: validate RX frame length in p54_rx_eeprom_readback()
p54_rx_eeprom_readback() copies the requested EEPROM slice out of a
device-supplied readback frame without checking that the skb actually holds
that many bytes. Commit da1b9a55ff11 ("wifi: p54: prevent buffer-overflow in
p54_rx_eeprom_readback()") closed the destination overflow by copying a
fixed priv->eeprom_slice_size (and rejecting a mismatched advertised len),
but the source side is still unbounded: nothing verifies the frame is long
enough to supply that many bytes.
A malicious USB device can send a short frame whose advertised len matches
priv->eeprom_slice_size while the payload is truncated. The equality check
passes and memcpy() reads past the end of the skb, leaking adjacent heap:
BUG: KASAN: slab-out-of-bounds in p54_rx (drivers/net/wireless/intersil/p54/txrx.c:507)
Read of size 1016 at addr ffff88800f077114 by task swapper/0/0
Call Trace:
<IRQ>
...
__asan_memcpy (mm/kasan/shadow.c:105)
p54_rx (drivers/net/wireless/intersil/p54/txrx.c:507)
p54u_rx_cb (drivers/net/wireless/intersil/p54/p54usb.c:163)
__usb_hcd_giveback_urb (drivers/usb/core/hcd.c:1657)
dummy_timer (drivers/usb/gadget/udc/dummy_hcd.c:2005)
...
</IRQ>
The buggy address belongs to the object at ffff88800f0770c0
which belongs to the cache skbuff_small_head of size 704
The buggy address is located 84 bytes inside of
allocated 704-byte region [ffff88800f0770c0, ffff88800f077380)
Check that the slice fits in the skb before copying.
📍 영향받는 시스템
Linux kernel (p54 wireless driver module)
⚔️ 공격 벡터
악의적으로 조작된 짧은 프레임을 전송하는 USB 장치를 통한 로컬 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 p54_rx_eeprom_readback() 함수의 길이 검증 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전(da1b9a55ff11 커밋 이후)인지 확인합니다.