🇰🇷 한글 설명
Linux 커널의 qdisc_tree_reduce_backlog 함수에서 트래픽 제어 계층 구조를 잘못 처리하여 Use-After-Free(UAF) 취약점이 발생합니다. DRR 등의 활성 클래스 목록을 유지하는 qdisc에서 댕글링 포인터로 인한 메모리 접근 오류를 유발할 수 있습니다.
💡 쉬운 설명
Linux 커널의 네트워크 관리 코드가 이미 삭제된 메모리를 접근하는 버그입니다. 로컬 공격자가 특수한 네트워크 명령으로 시스템 충돌이나 권한 상승을 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: stop qdisc_tree_reduce_backlog on TC_H_ROOT
In qdisc_tree_reduce_backlog, Qdiscs with major handle ffff: are assumed
to be either root or ingress. This assumption is bogus since it's valid
to create egress qdiscs with major handle ffff:
Budimir Markovic found that for qdiscs like DRR that maintain an active
class list, it will cause a UAF with a dangling class pointer.
In 066a3b5b2346, the concern was to avoid iterating over the ingress
qdisc since its parent is itself. The proper fix is to stop when parent
TC_H_ROOT is reached because the only way to retrieve ingress is when a
hierarchy which does not contain a ffff: major handle call into
qdisc_lookup with TC_H_MAJ(TC_H_ROOT).
In the scenario where major ffff: is an egress qdisc in any of the tree
levels, the updates will also propagate to TC_H_ROOT, which then the
iteration must stop.
net/sched/sch_api.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
📍 영향받는 시스템
Linux kernel 2.6+ (net/sched/sch_api.c 코드 영역)
⚔️ 공격 벡터
로컬 공격자가 tc(traffic control) 명령으로 특정 qdisc 구성을 만들어 메모리 오류 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업그레이드하여 net/sched/sch_api.c 수정사항 반영
🔧 검증 코드
현재 커널 버전을 확인하고, 배포판 보안 공지에서 해당 CVE 패치 적용 버전을 확인한 후 필요시 커널 업그레이드 수행
uname -r && strings /boot/vmlinuz-$(uname -r) | grep -q TC_H_ROOT && echo 'Patched' || echo 'Check needed'