🇰🇷 한글 설명
Linux 커널의 x86/tdx 아키텍처에서 TDX_HYPERCALL 매크로 사용 시 RSI 레지스터를 초기화하지 않는 취약점이 발견되었습니다. 이로 인해 신뢰할 수 없는 VMM이 제공한 값이 투기적 실행(Speculative Execution) 과정에서 노출될 위험이 있습니다.
💡 쉬운 설명
컴퓨터의 보안 영역에서 데이터를 주고받을 때, 사용하지 않는 데이터 통로(RSI 레지스터)를 깨끗이 비우지 않아 발생한 문제입니다. 이 틈을 타서 공격자가 시스템의 민감한 정보를 훔쳐볼 수 있는 가능성이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
x86/tdx: Zero out the missing RSI in TDX_HYPERCALL macro
In the TDX_HYPERCALL asm, after the TDCALL instruction returns from the
untrusted VMM, the registers that the TDX guest shares to the VMM need
to be cleared to avoid speculative execution of VMM-provided values.
RSI is specified in the bitmap of those registers, but it is missing
when zeroing out those registers in the current TDX_HYPERCALL.
It was there when it was originally added in commit 752d13305c78
("x86/tdx: Expand __tdx_hypercall() to handle more arguments"), but was
later removed in commit 1e70c680375a ("x86/tdx: Do not corrupt
frame-pointer in __tdx_hypercall()"), which was correct because %rsi is
later restored in the "pop %rsi". However a later commit 7a3a401874be
("x86/tdx: Drop flags from __tdx_hypercall()") removed that "pop %rsi"
but forgot to add the "xor %rsi, %rsi" back.
Fix by adding it back.
📍 영향받는 시스템
Intel TDX를 지원하는 Linux 커널 (x86_64 아키텍처)
⚔️ 공격 벡터
신뢰할 수 없는 VMM(Virtual Machine Monitor)을 통한 투기적 실행 공격
🛡️ 대응 방법
TDX_HYPERCALL 매크로에서 RSI 레지스터를 0으로 초기화하는 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 보안 패치 버전인지 확인