🇰🇷 한글 설명
Linux 커널의 ixgbe 드라이버에서 XDP Tx 큐에 대해 XPS(Transmit Packet Steering)를 구성하려 할 때 발생하는 취약점입니다. CPU 코어 수가 64개 이상인 시스템에서 E610 어댑터 사용 시, 할당된 큐 범위를 초과하는 인덱스에 접근하여 KASAN slab-out-of-bounds 오류와 커널 경고를 유발합니다.
💡 쉬운 설명
네트워크 카드가 처리할 수 있는 통로보다 더 많은 통로를 설정하려고 시도하다가 시스템 메모리 영역을 잘못 건드리는 문제입니다. 이로 인해 시스템에 경고가 발생하거나 커널 오류가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ixgbe: do not configure xps for XDP queues
netif_set_xps_queue() should not be called for an XDP Tx queue, since such
queues are not netdev-exposed. On systems with number of CPUs >=64, on E610
adapter, netdev is configured with maximum number queue pairs being 63
(due to MSI-X assignment), but configuring XDP results in 64 XDP queues.
So, during XDP program load, when netif_set_xps_queue() is called for the
last XDP queue, we get a WARNING with a call trace and KASAN report
afterwards (if enabled).
[ 2012.699800] WARNING: net/core/dev.c:2854 at __netif_set_xps_queue+0x116a/0x1e40, CPU#36: xdpsock/103668
[...]
[ 2012.700029] RIP: 0010:__netif_set_xps_queue+0x116a/0x1e40
[ 2012.700035] Code: b6 34 06 48 89 f8 83 e0 07 83 c0 01 40 38 f0 7c 09 40 84 f6 0f 85 03 0a 00 00 0f b7 44 24 40 66 43 89 44 6a 18 e9 01 fb ff ff <0f> 0b e9 f2 ee ff ff 44 8b 44 24 44 45 85 c0 74 50 4d 85 e4 0f 84
[ 2012.700040] RSP: 0018:ffff8882369aeb28 EFLAGS: 00010246
[ 2012.700046] RAX: 0000000000000000 RBX: 000000000000003f RCX: 0000000000000000
[ 2012.700050] RDX: 1ffff1111da3d891 RSI: ffff888120e34250 RDI: ffff8888ed1ec488
[ 2012.700054] RBP: ffff888913281560 R08: 0000000000000000 R09: ffff8888ed1ec000
[ 2012.700058] R10: ffff8888a2e83180 R11: 0000000000000000 R12: 0000000000007fa8
[ 2012.700061] R13: 000000000000003f R14: ffff888120e34854 R15: ffff8889132817c8
[ 2012.700065] FS: 00007fc8ea9ff740(0000) GS:ffff88884cefe000(0000) knlGS:0000000000000000
[ 2012.700069] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2012.700073] CR2: 00007f81c8000020 CR3: 00000002299f8006 CR4: 00000000007726f0
[ 2012.700077] PKRU: 55555554
[ 2012.700080] Call Trace:
[ 2012.700084] <TASK>
[ 2012.700087] ? ktime_get+0x61/0x150
[ 2012.700097] ? usleep_range_state+0x133/0x1b0
[ 2012.700108] ? __pfx_usleep_range_state+0x10/0x10
[ 2012.700114] netif_set_xps_queue+0x31/0x50
[ 2012.700119] ixgbe_configure_tx_ring+0x472/0x920 [ixgbe]
[...]
[ 2012.700486] ixgbe_xdp+0x38f/0x750 [ixgbe]
[...]
[ 2012.701094] BUG: KASAN: slab-out-of-bounds in __netif_set_xps_queue+0x1ac5/0x1e40
[ 2012.701100] Write of size 4 at addr ffff88888d43cff8 by task xdpsock/103668
Skip XPS configuration for XDP Tx queues.
📍 영향받는 시스템
Linux kernel using ixgbe driver with E610 adapter on systems with >=64 CPUs
⚔️ 공격 벡터
XDP 프로그램을 로드하여 특정 조건(고성능 CPU 및 특정 네트워크 어댑터)을 충족할 때 커널 오류 유발
🛡️ 대응 방법
ixgbe 드라이버의 XPS 구성 로직이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
명령어 실행 결과에 'KASAN: slab-out-of-bounds' 또는 'netif_set_xps_queue' 관련 WARNING 로그가 포함되어 있다면 취약한 상태입니다.
dmesg | grep -E 'ixgbe|KASAN|__netif_set_xps_queue'