🇰🇷 한글 설명
Linux 커널의 net/sched: ets 구성 요소에서 quantum 값이 적절히 제한되지 않아 발생하는 취약점입니다. 공격자가 조작된 크기 테이블을 사용하여 qdisc_pkt_len을 매우 크게 만들면, 특정 조건에서 무한 루프가 발생하여 시스템 자원을 고갈시킬 수 있습니다.
💡 쉬운 설명
네트워크 데이터 처리 규칙을 설정하는 과정에서 잘못된 값을 입력하면 컴퓨터가 무한히 계산을 반복하게 만드는 버그입니다. 이로 인해 시스템이 멈추거나 느려지는 현상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: ets: clamp quantum in parse and fallback paths
ets_qdisc_change() falls back to psched_mtu() with no floor for bands
without an explicit quantum. With a crafted size table qdisc_pkt_len
reaches ~2 GiB, so a zero psched_mtu on a headerless device makes the
deficit-refill loop spin under the qdisc lock.
Move the floor into ets_quantum_parse() so explicitly configured quanta
are also clamped to [256, 1<<20], not just the fallback path.
Conditions to recreate the bug:
CONFIG_NET_SCH_ETS=y. Requires CAP_NET_ADMIN (namespace-local via
unshare -Urn suffices).
tc qdisc add dev dummy0 root ets bands 3 strict 2 quanta 1 1
📍 영향받는 시스템
CONFIG_NET_SCH_ETS 옵션이 활성화된 Linux 커널
⚔️ 공격 벡터
CAP_NET_ADMIN 권한을 가진 사용자가 조작된 tc qdisc 설정을 통해 공격 수행
🛡️ 대응 방법
ets_quantum_parse() 함수를 통해 quantum 값을 [256, 1<<20] 범위로 제한하도록 커널 패치 적용
🔧 검증 코드
명령어 결과에 CONFIG_NET_SCH_ETS=y가 포함되어 있으면 해당 취약점에 노출될 가능성이 있는 환경입니다.
zgrep CONFIG_NET_SCH_ETS /proc/config.gz 2>/dev/null || grep CONFIG_NET_SCH_ETS /boot/config-$(uname -r)