🇰🇷 한글 설명
Linux 커널의 RISC-V 아키텍처에서 CFI(Control Flow Integrity)가 활성화된 경우, BPF tailcall 과정에서 커널 스택 오염이 발생하는 취약점입니다. 설정 과정에서 이미 처리된 kcfi 명령어를 tailcall 점프 오프셋에서 중복으로 포함하여 스택 포인터 조정이 누락되는 것이 원인입니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제인 리눅스에서 특정 보안 기능이 켜져 있을 때, 프로그램 실행 경로를 계산하는 과정에서 실수가 발생합니다. 이 실수로 인해 메모리의 중요한 데이터 영역이 망가져 시스템이 불안정해지거나 해킹에 노출될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
riscv, bpf: Fix kernel stack corruption in tailcall with CFI
When CONFIG_CFI_CLANG is enabled, prog->bpf_func already skips the kcfi
instruction during setup. Including it again in the tailcall jump offset
causes it to jump over an extra 4 bytes, skipping the stack pointer
adjustment, which will result in kernel stack corruption.
📍 영향받는 시스템
CONFIG_CFI_CLANG가 활성화된 RISC-V 아키텍처 기반의 Linux 커널
⚔️ 공격 벡터
조작된 BPF(Berkeley Packet Filter) 프로그램을 통해 커널 스택 오염 유도
🛡️ 대응 방법
CFI 관련 패치가 적용된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
커널 버전과 CONFIG_CFI_CLANG 설정이 y로 되어 있는지 확인하여 취약한 환경인지 판단합니다.
uname -a && grep CONFIG_CFI_CLANG /boot/config-$(uname -r) 2>/dev/null