🔍 CVE-2021-47226

7.1
CVSS Score
HIGH
2024-05-21
2026-08-04 10:16
✅ 완료

🇰🇷 한글 설명

Linux 커널의 x86 FPU 처리 과정에서 XRSTOR 명령이 실패하더라도 레지스터 상태가 변경될 수 있는 취약점입니다. 이로 인해 이전 작업의 FPU 상태가 다음 실행되는 프로세스의 레지스터에 남게 되어 데이터가 유출될 수 있습니다.

💡 쉬운 설명

컴퓨터가 계산을 위해 사용하는 임시 저장 공간(FPU)을 정리하는 과정에서 오류가 발생할 때, 이전 사용자의 데이터가 지워지지 않고 남을 수 있는 문제입니다. 이로 인해 다른 프로그램이 이전 사용자의 민감한 정보를 엿볼 수 있는 위험이 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: x86/fpu: Invalidate FPU state after a failed XRSTOR from a user buffer Both Intel and AMD consider it to be architecturally valid for XRSTOR to fail with #PF but nonetheless change the register state. The actual conditions under which this might occur are unclear [1], but it seems plausible that this might be triggered if one sibling thread unmaps a page and invalidates the shared TLB while another sibling thread is executing XRSTOR on the page in question. __fpu__restore_sig() can execute XRSTOR while the hardware registers are preserved on behalf of a different victim task (using the fpu_fpregs_owner_ctx mechanism), and, in theory, XRSTOR could fail but modify the registers. If this happens, then there is a window in which __fpu__restore_sig() could schedule out and the victim task could schedule back in without reloading its own FPU registers. This would result in part of the FPU state that __fpu__restore_sig() was attempting to load leaking into the victim task's user-visible state. Invalidate preserved FPU registers on XRSTOR failure to prevent this situation from corrupting any state. [1] Frequent readers of the errata lists might imagine "complex microarchitectural conditions".

📍 영향받는 시스템

Linux kernel (x86 architecture)

⚔️ 공격 벡터

멀티스레드 환경에서 특정 메모리 매핑 조건(TLB 무효화 등)을 이용해 XRSTOR 실패를 유도하여 레지스터 상태를 오염시킴

🛡️ 대응 방법

XRSTOR 실패 시 FPU 레지스터를 강제로 무효화하도록 커널을 최신 버전으로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 패치된 이후의 버전인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel