🇰🇷 한글 설명
Linux 커널의 net/sched:taprio 모듈에서 스케줄 전환 시 advance_sched() 함수 내 use-after-free 취약점이 발견되었습니다. 스케줄이 변경될 때 기존 운영 스케줄이 RCU를 통해 해제되지만, 'next' 포인터가 여전히 해제된 메모리를 가리키고 있어 문제가 발생합니다.
💡 쉬운 설명
컴퓨터가 작업 순서를 바꿀 때, 이미 삭제된 메모리 정보를 다시 사용하려고 시도하면서 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: taprio: fix use-after-free in advance_sched() on schedule switch
In advance_sched(), when should_change_schedules() returns true,
switch_schedules() is called to promote the admin schedule to oper.
switch_schedules() queues the old oper schedule for RCU freeing via
call_rcu(), but 'next' still points into an entry of the old oper
schedule. The subsequent 'next->end_time = end_time' and
rcu_assign_pointer(q->current_entry, next) are use-after-free.
Fix this by selecting 'next' from the new oper schedule immediately
after switch_schedules(), and using its pre-calculated end_time.
setup_first_end_time() sets the first entry's end_time to
base_time + interval when the schedule is installed, so the value
is already correct.
The deleted 'end_time = sched_base_time(admin)' assignment was also
harmful independently: it would overwrite the new first entry's
pre-calculated end_time with just base_time.
📍 영향받는 시스템
Linux kernel (taprio 스케줄러를 사용하는 시스템)
⚔️ 공격 벡터
로컬 권한을 가진 공격자가 특정 네트워크 스케줄링 설정을 조작하여 메모리 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인