🔍 CVE-2026-63981

0.0
CVSS Score
UNKNOWN
2026-07-19
2026-07-30 14:51
✅ 완료

🇰🇷 한글 설명

리눅스 커널의 net/sched: act_mirred 모듈에서 blockcast 사용 시 재귀 호출 카운터가 증가하지 않아 발생하는 스택 오버플로우 취약점입니다. 특정 조건에서 패킷이 두 장치 사이를 무한히 반복하며 미러링되어 커널 스택을 고갈시키고 시스템 패닉을 유발할 수 있습니다.

💡 쉬운 설명

네트워크 패킷을 복사하는 기능이 특정 설정에서 무한 루프에 빠져 컴퓨터의 핵심 메모리 영역을 넘쳐나게 만드는 버그입니다. 이로 인해 시스템이 갑자기 멈추거나 재부팅될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net/sched: act_mirred: Fix blockcast recursion bypass leading to stack overflow tcf_mirred_act() checks sched_mirred_nest against MIRRED_NEST_LIMIT (4) to prevent deep recursion. However, when the action uses blockcast (tcfm_blockid != 0), the function returns at the tcf_blockcast() call BEFORE reaching the counter increment. As a result, the recursion counter never advances and the limit check is entirely bypassed. When two devices share a TC egress block with a mirred blockcast rule, a packet egressing on device A is mirrored to device B via blockcast; device B's egress TC re-enters tcf_mirred_act() via blockcast and mirrors back to A, creating an unbounded recursion loop: tcf_mirred_act -> tcf_blockcast -> tcf_mirred_to_dev -> dev_queue_xmit -> sch_handle_egress -> tcf_classify -> tcf_mirred_act -> (repeat) This recursion continues until the kernel stack overflows. The bug is reachable from an unprivileged user via unshare(CLONE_NEWUSER | CLONE_NEWNET): user namespaces grant CAP_NET_ADMIN in the new network namespace, which is sufficient to create dummy devices, attach clsact qdiscs with shared blocks, and install mirred blockcast filters. BUG: TASK stack guard page was hit at ffffc90000b7fff8 Oops: stack guard page: 0000 [#1] SMP KASAN NOPTI CPU: 2 UID: 1000 PID: 169 Comm: poc Not tainted 7.0.0-rc7-next-20260410 RIP: 0010:xas_find+0x17/0x480 Call Trace: xa_find+0x17b/0x1d0 tcf_mirred_act+0x640/0x1060 tcf_action_exec+0x400/0x530 basic_classify+0x128/0x1d0 tcf_classify+0xd83/0x1150 tc_run+0x328/0x620 __dev_queue_xmit+0x797/0x3100 tcf_mirred_to_dev+0x7b1/0xf70 tcf_mirred_act+0x68a/0x1060 [repeating ~30+ times until stack overflow] Kernel panic - not syncing: Fatal exception in interrupt Fix this by incrementing sched_mirred_nest before calling tcf_blockcast() and decrementing it on return, mirroring the non-blockcast path. This ensures subsequent recursive entries see the updated counter and are correctly limited by MIRRED_NEST_LIMIT.

📍 영향받는 시스템

Linux kernel (net/sched: act_mirred 관련 모듈 포함 버전)

⚔️ 공격 벡터

비특권 사용자가 사용자 네임스페이스(unshare)를 통해 네트워크 권한을 획득한 후, 미러링 규칙을 설정하여 무한 재귀를 유도함

🛡️ 대응 방법

tcf_blockcast() 호출 전에 재귀 카운터를 먼저 증가시키도록 커널 패치를 적용해야 함

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전인지 확인하십시오.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel