레이지 FP 상태 복원

Lazy FP state restore

레이지 FPU 상태 누출(CVE-)2018-3665)는 Lazy FP State[1] [2][3]Restore 또는 LazyFP라고도 불리며 Intel Core CPU에 [1][4]영향을 주는 보안 취약성입니다.이 취약성은 영향을 받는 CPU에 존재하는 추측 실행 기술의 결함 및 특정 운영 체제가 부동 소수점 단위(FPU)[2]에서 컨텍스트 전환을 처리하는 방법의 조합으로 인해 발생합니다.로컬 프로세스는 이 취약성을 이용하여 다른 프로세스에 속하는 FPU 레지스터의 내용을 누출할 수 있습니다.이 취약성은 2018년 1월에 공개된 Spectre Meltdown 취약성과 관련이 있습니다.

2018년 6월 13일, 인텔이 Amazon,[1][a] Cyberus Technology, SYSGO의 종업원에 의해서 발견해 발표했습니다.

FPU 레지스터는 부동소수점 산술에 사용되는 것 외에 많은 인텔 [3]CPU에 있는 AES 명령 세트를 사용할 때 암호화 데이터를 저장하는 것 등 다른 용도로도 사용됩니다.즉, 이 취약성으로 인해 주요 자료가 [3]손상될 수 있습니다.

메커니즘

부동소수점 및 SIMD 레지스터는 크고 시스템의 모든 작업(또는 스레드)에서 사용되는 것은 아닙니다.콘텍스트 전환을 고속화하기 위해 대부분의 일반적인 마이크로프로세서는 저속 상태 전환을 지원합니다.콘텍스트 전환 중에 완전한 상태를 저장하는 것이 아니라, 운영체제는 전환 태스크에 FPU가 필요하지 않도록 단순히 "사용할 수 없음"으로 표시할 수 있습니다.OS가 올바르게 추측하고 있는 경우는, 시간이 절약됩니다.추측이 틀릴 경우 첫 번째 FPU 또는 SIMD 명령에 의해 운영체제에 트랩이 발생하고 운영체제는 이전 태스크에 상태를 저장하고 현재 태스크의 올바른 상태를 로드할 수 있습니다.

순서가 다른 CPU에서는 "FPU not available" 상태가 즉시 검출되지 않습니다(실제로, 복수의 장애 원인이 되는 명령이 동시에 실행되어 프로세서가 순서 없는 실행의 착각을 유지하기 위해서 최초로 발생한 장애를 처리할 필요가 있기 때문에, 거의 즉시 검출할 수 없습니다).에 대한 정보는 순서대로 폐기할 때까지 사용할 수 없습니다).프로세서는 이전 태스크의 레지스터 내용 및 다음 몇 가지 명령을 사용하여 명령을 추측적으로 실행하며 나중에야 FPU 사용 불가 상태를 검출합니다.모든 아키텍처 상태가 장애 명령의 선두로 되돌아가지만 메모리 부하에서 FPU 상태의 일부를 주소로 사용하여 프로세서의 캐시에 로드를 트리거할 수 있습니다.부정 이용은 모든 Spectre 패밀리의 취약성과 동일한 패턴을 따릅니다.캐시 상태는 아키텍처 상태가 아니기 때문에(캐시는 정확성이 아닌 속도에만 영향을 미침), 캐시 로드는 취소되지 않으며 이전 태스크의 레지스터 상태의 일부를 포함한 주소는 나중에 다른 액세스에 걸리는 시간을 측정하여 검출할 수 있습니다.Mory 주소

실제로 운영 체제트랩을 트리거하지 않고 이 오류를 악용할 수 있습니다.FPU 액세스를 강제적인 브랜치 오정의 그늘에 두면(예를 들어 retpoline을 사용), 프로세서는 여전히 코드를 추측적으로 실행하지만, 잘못 예측된 브랜치로 되감아 실제로 운영체제 트랩을 실행하지는 않습니다.이를 통해 공격을 신속하게 반복하여 전체 FPU 및 SIMD 레지스터 상태를 빠르게 읽을 수 있습니다.

경감

프로세스 [6]컨텍스트를 전환할 때 항상 FPU 상태를 복원함으로써 운영 체제 및 하이퍼바이저 수준에서 취약성을 완화할 수 있습니다.이러한 수정에서는 펌웨어 업그레이드가 필요하지 않습니다.일부 운영체제는 FPU 레지스터를 디폴트로 쉽게 복원하지 않고 영향을 받는 하드웨어 플랫폼에서 이러한 운영체제를 보호하고 있습니다.기본적인 하드웨어 문제가 [6]존재하더라도 마찬가지입니다.커널 3.7 이상을 사용하는 Linux 운영체제에서는 커널이 FPU 레지스터를 강제로 복원하도록 강제할 수 있습니다.eagerfpu=on 커널 [3]파라미터또한 Linux 디스트리뷰션,[7] OpenBSD,[8] Xen[4]많은 시스템 소프트웨어 벤더 및 프로젝트에서는 이 취약성을 해결하기 위한 패치를 릴리스했습니다.

메모들

  1. ^ OpenBSD 프로젝트는 [5]이 취약성을 독립적으로 발견했다고 주장합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c d "Lazy FP state restore". Intel. 2018-06-13. Retrieved 2018-06-18.
  2. ^ a b Stecklina, Julian; Prescher, Thomas (2018-06-19). "LazyFP: Leaking FPU Register State using Microarchitectural Side-Channels". arXiv:1806.07480 [cs.OS].
  3. ^ a b c d Prescher, Thomas; Stecklina, Julian; Galowicz, Jacek. "Intel LazyFP vulnerability: Exploiting lazy FPU state switching". Cyberus Technology. Retrieved 2018-06-18.
  4. ^ a b "Xen Security Advisory CVE-2018-3665 / XSA-267, version 3". 2018-06-13. Retrieved 2018-06-18.
  5. ^ de Raadt, Theo (2018-06-14). "Inflamation by Bryan Cantrill". openbsd-tech (Mailing list). Retrieved 2018-06-18 – via marc.info.
  6. ^ a b "Lazy FPU Save/Restore (CVE-2018-3665)". RedHat. 2018-06-14. Retrieved 2018-06-18.
  7. ^ "CVE-2018-3665". Debian. Retrieved 2018-06-17.
  8. ^ "OpenBSD 6.3 Errata". OpenBSD. Retrieved 2018-06-18.

외부 링크