🇰🇷 한글 설명
Linux 커널의 HFSC 스케줄러에서 특정 조건(HFSC_RSC 플래그 사용 및 NETEM 결합) 시 클래스가 eltree에 중복 삽입되는 취약점입니다. 이로 인해 무한 루프가 발생하거나 Use-After-Free(UAF) 취약점이 발생하여 시스템 안정성을 해칠 수 있습니다.
💡 쉬운 설명
네트워크 데이터 처리 순서를 정하는 규칙에 오류가 있어, 데이터가 처리되는 과정에서 컴퓨터가 무한 루프에 빠지거나 메모리 오류를 일으킬 수 있습니다. 공격자가 이를 악용하면 시스템을 멈추게 하거나 보안을 무너뜨릴 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net_sched: hfsc: Address reentrant enqueue adding class to eltree twice
Savino says:
"We are writing to report that this recent patch
(141d34391abbb315d68556b7c67ad97885407547) [1]
can be bypassed, and a UAF can still occur when HFSC is utilized with
NETEM.
The patch only checks the cl->cl_nactive field to determine whether
it is the first insertion or not [2], but this field is only
incremented by init_vf [3].
By using HFSC_RSC (which uses init_ed) [4], it is possible to bypass the
check and insert the class twice in the eltree.
Under normal conditions, this would lead to an infinite loop in
hfsc_dequeue for the reasons we already explained in this report [5].
However, if TBF is added as root qdisc and it is configured with a
very low rate,
it can be utilized to prevent packets from being dequeued.
This behavior can be exploited to perform subsequent insertions in the
HFSC eltree and cause a UAF."
To fix both the UAF and the infinite loop, with netem as an hfsc child,
check explicitly in hfsc_enqueue whether the class is already in the eltree
whenever the HFSC_RSC flag is set.
[1] https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=141d34391abbb315d68556b7c67ad97885407547
[2] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L1572
[3] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L677
[4] https://elixir.bootlin.com/linux/v6.15-rc5/source/net/sched/sch_hfsc.c#L1574
[5] https://lore.kernel.org/netdev/8DuRWwfqjoRDLDmBMlIfbrsZg9Gx50DHJc1ilxsEBNe2D6NMoigR_eIRIG0LOjMc3r10nUUZtArXx4oZBIdUfZQrwjcQhdinnMis_0G7VEk=@willsroot.io/T/#u
📍 영향받는 시스템
Linux Kernel (HFSC 및 NETEM 스케줄러를 사용하는 환경)
⚔️ 공격 벡터
HFSC_RSC 플래그를 사용하는 HFSC와 NETEM/TBF를 조합하여 eltree에 클래스를 중복 삽입함으로써 UAF 유도
🛡️ 대응 방법
HFSC_RSC 플래그가 설정된 경우 hfsc_enqueue 과정에서 클래스가 이미 eltree에 존재하는지 명시적으로 확인하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치가 적용되었는지 확인합니다.