🇰🇷 한글 설명
Linux 커널의 sch_fq 큐잉 디시플린에서 'initial quantum' 값이 INT_MAX를 초과하면 'credit' 변수에서 부호 있는 정수 오버플로우가 발생해 매우 큰 음수 값이 됩니다. 이로 인해 소수의 소켓만으로도 CPU soft-lockup 경고가 발생할 수 있으며, 'initial quantum'을 INT_MAX로 제한하여 수정되었습니다.
💡 쉬운 설명
네트워크 패킷 스케줄러의 설정값이 너무 커지면 내부 계산이 넘쳐서 잘못된 값이 생깁니다. 이 때문에 시스템 CPU가 잠깐씩 멈춘 것처럼 응답하지 않는 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/sched: sch_fq: fix integer overflow of "credit"
if sch_fq is configured with "initial quantum" having values greater than
INT_MAX, the first assignment of "credit" does signed integer overflow to
a very negative value.
In this situation, the syzkaller script provided by Cristoph triggers the
CPU soft-lockup warning even with few sockets. It's not an infinite loop,
but "credit" wasn't probably meant to be minus 2Gb for each new flow.
Capping "initial quantum" to INT_MAX proved to fix the issue.
v2: validation of "initial quantum" is done in fq_policy, instead of open
coding in fq_change() _ suggested by Jakub Kicinski
📍 영향받는 시스템
sch_fq 스케줄러를 사용하는 Linux 커널 (수정 커밋 이전 버전, 주로 5.x/6.x 계열 일부)
⚔️ 공격 벡터
권한이 있는 로컬 사용자가 sch_fq의 initial quantum을 INT_MAX 초과 값으로 설정하여 CPU soft-lockup을 유발할 수 있습니다.
🛡️ 대응 방법
배포판 제공 최신 커널 패키지로 업데이트하거나 해당 커널 수정 커밋을 포함한 버전으로 재부팅합니다.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지에서 해당 CVE 수정 버전과 비교하고, 해당 버전 이상이면 패치가 적용된 것입니다.