🇰🇷 한글 설명
Linux 커널의 kprobes 모듈에서 kill_kprobe() 함수가 프로브 활성화 여부를 잘못 검사하는 문제입니다. KPROBE_FLAG_GONE 플래그를 먼저 설정하여 disarm_kprobe_ftrace() 호출 조건이 항상 거짓이 되었고, 활성화된 프로브가 비활성화되지 않아 NULL 포인터 역참조 문제가 남아 있었습니다. 활성화 여부 검사를 플래그 설정 이전으로 옮겨 수정되었습니다.
💡 쉬운 설명
리눅스 커널이 디버깅 도구(kprobes)를 제거할 때 일부 상태를 잘못 확인하는 결함입니다. 이로 인해 시스템이 불안정해지거나 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
kprobes: Fix check for probe enabled in kill_kprobe()
In kill_kprobe(), the check whether disarm_kprobe_ftrace() needs to be
called always fails. This is because before that we set the
KPROBE_FLAG_GONE flag for kprobe so that "!kprobe_disabled(p)" is always
false.
The disarm_kprobe_ftrace() call introduced by commit:
0cb2f1372baa ("kprobes: Fix NULL pointer dereference at kprobe_ftrace_handler")
to fix the NULL pointer reference problem. When the probe is enabled, if
we do not disarm it, this problem still exists.
Fix it by putting the probe enabled check before setting the
KPROBE_FLAG_GONE flag.
📍 영향받는 시스템
수정 이전의 Linux 커널 (kprobes 기능 포함 버전, 수정 커밋 적용 전 빌드)
⚔️ 공격 벡터
로컬 사용자가 kprobes 기능을 사용해 프로브를 등록·제거하는 과정에서 발생하는 커널 NULL 포인터 역참조를 유발하여 서비스 거부(시스템 충돌)를 일으킬 수 있습니다.
🛡️ 대응 방법
배포판 벤더가 제공하는 최신 커널 보안 업데이트를 적용하고 재부팅하십시오.
🔧 검증 코드
출력된 커널 버전이 배포판의 수정된 보안 업데이트 버전(또는 상류 수정 커밋이 포함된 버전) 이상인지 벤더 보안 공지와 비교하여 확인합니다.