🇰🇷 한글 설명
Linux 커널의 IFB(Intermediate Functional Block) 드라이버에서 ethtool 통계 정보를 보고할 때 할당된 메모리 범위를 초과하여 읽는 취약점이 발견되었습니다. RX 큐 개수가 TX 큐 개수보다 많은 비대칭 설정 시, ethtool이 실제 할당된 범위를 벗어난 슬랩(slab) 데이터를 참조하여 메모리 경계 외 읽기(out-of-bounds read)가 발생합니다.
💡 쉬운 설명
네트워크 통계 정보를 확인하는 과정에서 컴퓨터 메모리의 허용된 범위를 넘어서 잘못된 데이터를 읽어오는 오류입니다. 이로 인해 시스템 정보가 유출되거나 프로그램이 비정상적으로 종료될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ifb: report ethtool stats over num_tx_queues
ifb_dev_init() allocates dp->tx_private to dev->num_tx_queues
entries via kzalloc_objs(*txp, dev->num_tx_queues). Both IFB
per-queue RX and TX stats live in those entries: ifb_xmit() updates
txp->rx_stats using the skb queue mapping, ifb_ri_tasklet() updates
txp->tx_stats, and ifb_stats64() aggregates both over
dev->num_tx_queues.
The ethtool stats callbacks instead size and walk the per-queue
stats with dev->real_num_rx_queues and dev->real_num_tx_queues. With
an asymmetric device where the RX queue count exceeds the TX queue
count, for example:
ip link add name ifb10 numtxqueues 1 numrxqueues 8 type ifb
ethtool -S ifb10
ifb_get_ethtool_stats() indexes past the tx_private allocation and
copies adjacent slab data through ETHTOOL_GSTATS.
Use dev->num_tx_queues consistently for the stats strings, the
stats count, and the stats data walks. This reports one RX stats
group and one TX stats group for each backing ifb_q_private entry,
which is the queue set IFB can actually populate.
Reproduced under UML+KASAN at v7.1-rc2:
BUG: KASAN: slab-out-of-bounds in ifb_fill_stats_data+0x3c/0xae
Read of size 8 at addr 0000000062dbd228 by task ethtool/36
ifb_fill_stats_data+0x3c/0xae
ifb_get_ethtool_stats+0xc0/0x129
__dev_ethtool+0x1ca5/0x363c
dev_ethtool+0x123/0x1b3
dev_ioctl+0x56c/0x744
sock_do_ioctl+0x15f/0x1b2
sock_ioctl+0x4d5/0x50a
sys_ioctl+0xd8b/0xde9
With the patch applied, the same UML+KASAN repro is silent and
ethtool -S ifb10 reports only the stats backed by the single
allocated tx_private entry.
📍 영향받는 시스템
Linux kernel (v7.1-rc2 및 관련 IFB 드라이버 사용 버전)
⚔️ 공격 벡터
비대칭 큐 설정을 가진 IFB 장치에서 ethtool 명령어를 실행하여 메모리 경계 외 데이터를 읽음
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 ethtool 통계 처리 로직을 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인합니다.