🇰🇷 한글 설명
Linux 커널의 bpf 구현에서 signal_generate 및 signal_deliver 트레이스포인트의 siginfo 인자가 포인터로 잘못 처리되는 취약점이 발견되었습니다. 특정 상황에서 이 인자가 포인터가 아닌 스칼라 값(0 또는 1)으로 전달될 때, tp_btf 프로그램이 이를 포인터로 역참조하여 커널 패닉을 유발할 수 있습니다.
💡 쉬운 설명
커널의 특정 신호 처리 과정에서 숫자를 주소값으로 착각하여 잘못된 메모리에 접근하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 재부팅되는 커널 패닉 현상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Mark signal tracepoint siginfo arguments as scalar
The signal_generate and signal_deliver tracepoints declare their info
argument as a struct kernel_siginfo pointer. btf_ctx_access() therefore
treats it as a trusted pointer for tp_btf programs.
Signal delivery also uses SEND_SIG_NOINFO and SEND_SIG_PRIV as special
values for this argument. Those values are zero and one respectively,
and are not pointers. A tp_btf program can currently dereference either
value and fault the kernel. In particular, signal_generate can run from
timer interrupt context, turning the fault into a kernel panic.
Record both tracepoints in raw_tp_null_args[] and mark argument one as
a non-pointer. This preserves scalar access to the cookie while rejecting
direct and helper-mediated pointer use. Merely marking it nullable would
not suffice because SEND_SIG_PRIV is nonzero.
📍 영향받는 시스템
Linux Kernel (bpf/tp_btf 관련 기능이 활성화된 버전)
⚔️ 공격 벡터
tp_btf 프로그램을 통해 잘못된 메모리 주소를 역참조하도록 유도하여 커널 패닉 유발
🛡️ 대응 방법
해당 취약점이 해결된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 보안 업데이트 버전인지 확인