🇰🇷 한글 설명
Linux 커널의 do_dup2() 함수에서 파일 디스크립터 배열 접근이 CPU의 투기적 실행으로부터 보호되지 않아 발생하는 취약점입니다. 이는 Spectre 계열의 부채널 공격으로 민감한 메모리 데이터를 유출할 수 있습니다.
💡 쉬운 설명
CPU가 예측을 잘못해서 실행해서는 안 되는 코드를 미리 실행하는 과정에서 메모리 정보가 노출될 수 있습니다. 이를 이용해 공격자가 시스템의 민감한 정보를 탈취할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
protect the fetch of ->fd[fd] in do_dup2() from mispredictions
both callers have verified that fd is not greater than ->max_fds;
however, misprediction might end up with
tofree = fdt->fd[fd];
being speculatively executed. That's wrong for the same reasons
why it's wrong in close_fd()/file_close_fd_locked(); the same
solution applies - array_index_nospec(fd, fdt->max_fds) could differ
from fd only in case of speculative execution on mispredicted path.
📍 영향받는 시스템
Linux 커널 전 버전 (특히 do_dup2() 함수를 사용하는 파일 디스크립터 복제 작업 시)
⚔️ 공격 벡터
로컬 공격자가 타이밍 공격과 부채널 분석을 통해 커널 메모리 정보를 유출
🛡️ 대응 방법
커널 패치 적용 (array_index_nospec() 함수로 투기적 실행 방지)
🔧 검증 코드
커널 버전 확인 및 Spectre 완화 메커니즘(PTI, IBRS) 활성화 상태를 확인하여 패치 여부 검증
uname -r | grep -E '6\.[0-9]+\.[0-9]+'; cat /sys/kernel/debug/x86/pti_enabled 2>/dev/null || echo 'Check kernel version and Spectre mitigations'