🇰🇷 한글 설명
Linux 커널의 RISC-V 아키텍처에서 vmap 스택 오버플로 감지 시 발생하는 레이스 컨디션 취약점입니다. 여러 하트(hart)가 동시에 동일한 섀도우 스택을 사용하려고 할 때 충돌이 발생할 수 있으며, 이를 해결하기 위해 원자적 변수를 도입하여 스택 사용 상태를 관리하도록 수정되었습니다.
💡 쉬운 설명
컴퓨터의 핵심 부품인 RISC-V 프로세서에서 여러 작업이 동시에 같은 메모리 공간을 사용하려다 충돌이 일어날 수 있는 문제입니다. 이 충돌로 인해 시스템이 불안정해지거나 예상치 못한 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
riscv: fix race when vmap stack overflow
Currently, when detecting vmap stack overflow, riscv firstly switches
to the so called shadow stack, then use this shadow stack to call the
get_overflow_stack() to get the overflow stack. However, there's
a race here if two or more harts use the same shadow stack at the same
time.
To solve this race, we introduce spin_shadow_stack atomic var, which
will be swap between its own address and 0 in atomic way, when the
var is set, it means the shadow_stack is being used; when the var
is cleared, it means the shadow_stack isn't being used.
[Palmer: Add AQ to the swap, and also some comments.]
📍 영향받는 시스템
RISC-V 아키텍처를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
여러 프로세스(hart)가 동시에 vmap 스택 오버플로를 유발하여 공유 자원에 접근하는 레이스 컨디션 공격
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 버전인지 확인