🇰🇷 한글 설명
리눅스 커널의 bpf 및 cpumap 구성 요소에서 ptr_ring 정리 시 skb(socket buffer)를 적절히 처리하지 못해 발생하는 취약점입니다. xdp_redirect_cpu 실행 시 skb 모드와 stress 모드가 동시에 활성화되면 잘못된 메모리 유형 사용으로 인한 경고 및 시스템 불안정이 발생할 수 있습니다.
💡 쉬운 설명
리눅스 운영체제의 네트워크 데이터를 처리하는 과정에서 메모리를 정리할 때, 특정 데이터 형식을 잘못 다루어 시스템에 오류를 일으킬 수 있는 문제입니다. 이로 인해 시스템이 예기치 않게 멈추거나 경고 메시지가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf, cpumap: Handle skb as well when clean up ptr_ring
The following warning was reported when running xdp_redirect_cpu with
both skb-mode and stress-mode enabled:
------------[ cut here ]------------
Incorrect XDP memory type (-2128176192) usage
WARNING: CPU: 7 PID: 1442 at net/core/xdp.c:405
Modules linked in:
CPU: 7 PID: 1442 Comm: kworker/7:0 Tainted: G 6.5.0-rc2+ #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)
Workqueue: events __cpu_map_entry_free
RIP: 0010:__xdp_return+0x1e4/0x4a0
......
Call Trace:
<TASK>
? show_regs+0x65/0x70
? __warn+0xa5/0x240
? __xdp_return+0x1e4/0x4a0
......
xdp_return_frame+0x4d/0x150
__cpu_map_entry_free+0xf9/0x230
process_one_work+0x6b0/0xb80
worker_thread+0x96/0x720
kthread+0x1a5/0x1f0
ret_from_fork+0x3a/0x70
ret_from_fork_asm+0x1b/0x30
</TASK>
The reason for the warning is twofold. One is due to the kthread
cpu_map_kthread_run() is stopped prematurely. Another one is
__cpu_map_ring_cleanup() doesn't handle skb mode and treats skbs in
ptr_ring as XDP frames.
Prematurely-stopped kthread will be fixed by the preceding patch and
ptr_ring will be empty when __cpu_map_ring_cleanup() is called. But
as the comments in __cpu_map_ring_cleanup() said, handling and freeing
skbs in ptr_ring as well to "catch any broken behaviour gracefully".
📍 영향받는 시스템
Linux kernel (특히 xdp_redirect_cpu 및 cpumap을 사용하는 환경)
⚔️ 공격 벡터
특정 네트워크 패킷 처리 조건(skb-mode 및 stress-mode 동시 활성화)을 유도하여 커널 경고 및 메모리 관리 오류 유발
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 ptr_ring 정리 로직을 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.