🔍 CVE-2026-98888

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-23 12:18
✅ 완료

🇰🇷 한글 설명

Linux 커널 arm64 아키텍처의 kprobes 구현에서, 한 kprobe가 단일 스텝 실행 중일 때 다른 kprobe가 재진입하면 이를 복구 불가능한 상황으로 처리하던 문제를 수정했습니다. 또한 중첩 재진입 시 외부 kprobe의 인터럽트(DAIF) 상태가 덮어쓰여 인터럽트가 영구적으로 비활성화될 수 있던 문제를 struct prev_kprobe에 saved_irqflag 필드를 추가해 해결했습니다.

💡 쉬운 설명

커널의 디버깅 기능(kprobes)이 특정 상황에서 잘못 중단되거나 인터럽트 상태가 꼬이던 문제를 고친 패치입니다. 이로 인해 시스템이 멈추거나 인터럽트가 계속 꺼진 상태로 남는 현상을 막을 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: arm64: kprobes: Allow reentering kprobes while single-stepping A kprobe can be hit while another kprobe is in KPROBE_HIT_SS state. This can happen when tracing or perf code runs from the debug exception path while the first kprobe is preparing or executing its out-of-line single-step instruction. Currently arm64 treats a kprobe hit in KPROBE_HIT_SS as unrecoverable, the same as a hit in KPROBE_REENTER. This is too strict. A hit in KPROBE_HIT_SS is still a one-level reentry and can be handled by saving the current kprobe state and setting up single-step for the new probe, just like reentry from KPROBE_HIT_ACTIVE or KPROBE_HIT_SSDONE. The truly unrecoverable case is hitting another kprobe while already in KPROBE_REENTER, because the reentry save area has already been consumed. Move KPROBE_HIT_SS to the recoverable reentry cases and leave KPROBE_REENTER as the unrecoverable nested reentry case. This change also requires saving saved_irqflag in struct prev_kprobe. When a nested kprobe calls kprobes_save_local_irqflag(), it overwrites kcb->saved_irqflag with the currently masked DAIF value, losing the outer kprobe's original DAIF state. Without this fix, when the outer kprobe's single-step finishes, kprobes_restore_local_irqflag() applies the wrong DAIF mask and leaves interrupts permanently disabled. Extend struct prev_kprobe with a saved_irqflag field and save/restore it alongside kp and status. This ensures the outer kprobe's original interrupt state is preserved across reentry. This mirrors the x86 fix in commit 6a5022a56ac3 ("kprobes/x86: Allow to handle reentered kprobe on single-stepping").

📍 영향받는 시스템

arm64 아키텍처에서 kprobes를 사용하는 Linux 커널 (패치 적용 전 버전)

⚔️ 공격 벡터

공개 정보상 직접적인 원격 공격 경로는 명시되지 않으며, kprobe/perf 추적 코드가 디버그 예외 경로에서 중첩 실행될 때 발생하는 커널 안정성 결함입니다.

🛡️ 대응 방법

Linux 커널 배포사의 최신 보안/안정화 업데이트를 적용하여 해당 커밋이 포함된 커널로 재부팅합니다.

🔧 검증 코드

커널 버전을 확인해 최신 패치 배포판 버전인지 비교하고, CONFIG_KPROBES=y 및 arm64 설정이 활성화되어 있는지 확인하며, 해당 기능이 없으면 영향을 받지 않습니다.

Shell / Script
uname -r && grep -E 'CONFIG_KPROBES|CONFIG_ARM64' /boot/config-$(uname -r) 2>/dev/null

💻 영향받는 소프트웨어

Linux Kernel