AMD의 스펙터 V2 취약점 완화조치 변경으로 일부 성능하락
작성자 정보
- 작성일
컨텐츠 정보
- 1,254 조회
- 0 추천
- 목록
본문
최근에 Spectre-BHB/BHI 취약점 이 공개되었으며 현재 Intel 및 Arm 프로세서만 영향을 받는 것으로 알려졌으나 해당 연구 과정에서 VUSec의 사람들은 Spectre V2 완화를 위한 AMD의 현재 Retpoline 전략이 적절하지 않다는 것을 발견했습니다.
이로 인해 AMD 프로세서의 동작이 변경되었으며 이미 Linux 커널에 적용되었습니다.
Vrije Universiteit Amsterdam의 VUSec 팀은 BHI/Spectre-BHB 백서 에서 AMD의 현재 LFENCE/JMP 기반 Retpolines의 Spectre V2 소프트웨어 완화 전략이 부적절하다고 언급했습니다.
지금까지 AMD CPU에서 Retpoline을 처리하면서 두 번째 변종 Spectre 취약점을 방어하기 위해 간접 분기를 LFENCE/JMP로 전환했습니다.
AMD의 접근 방식은 간접 분기에서 RET를 초래하는 "일반" Retpolines 코드 시퀀스보다 하드웨어에서 더 나은 성능을 발휘하도록 설계되었습니다.
LFENCE "AMD" Retpoline 접근 방식은 Spectre V2를 완화하기 위한 AMD 프로세서의 기본값이었습니다.
이제 일반적인 Retpoline으로 변경하는 패치가 리눅스 커널 5.17 메인라인에 적용되었고,
그에 대한 성능테스트 결과는 아래와 같습니다.
기존에 비해 Stress-NG에서 54% 성능하락이 일어났고, 그 외에서는 6.4%까지의 성능하락이 일어난다고 합니다.
일부에서는 성능향상이 보이기도 합니다.
위는 라이젠 5900HX을 탑재한 Asus 결과입니다.
여기서는 최대 22%를 보인다고 합니다.
마지막으로 위는 EPYC 72F3 서버 프로세서의 결과입니다.
일부 상승과 하락이 동시에 보이고 있습니다.
분기 기록 주입(BHI)에 대한 VUSec 백서.
AMD CPU는 이번 주 초 발표된 Spectre-BHB/BHI에 취약하지 않지만 AMD의 현재 Retpoline 방식은 이 과정에서 비효율적인 것으로 나타났습니다.
Intel CPU에 대한 BHI 완화를 보낼 때 해당 패치 시리즈의 일부는 이제 AMD에서 기본적으로 일반 Retpolines를 사용하기 위한 AMD의 패치입니다.
화요일에 메인 라인 Linux 5.17에 적용되었으며 기존의 안정적인 Linux 커널 시리즈로 백포팅되는 과정에 있습니다.
AMD는 "AMD 리트폴린은 추측에 취약할 수 있습니다.
LFENCE/JMP 시퀀스를 사용한 잘못된 간접 분기 예측에 대한 추측 실행 창은 잠재적으로 Spectre V2를 사용한 악용을 허용하기에 충분히 클 수 있습니다.
기본적으로 리트폴린, lfence를 사용하지 마십시오. AMD. 대신 일반 리트폴린을 사용하십시오."
따라서 관련 Intel CPU에서 사용하는 것과 동일한 Retpoline 접근 방식이 현재 사용되고 있습니다.
"AMD" Retpoline 동작을 원하는 사용자를 위해 "LFENCE" Retpoline 모드로 이름이 변경되었습니다.
패치된 버전의 Linux 커널은 부팅 시 "spectre_v2=retpoline,lfence" 커널 옵션을 사용하여 이전이지만 안전하지 않은 것으로 간주되는 Retpoline 방법으로 전환하여 일반 Retpoline 경로로 이동하지 않도록 할 수 있습니다.
그러나 기본적으로 AMD/LFENCE 기반 Retpoline 모드에서 일반 Retpolines를 사용하는 현재 Linux(및 아마도 Windows) 전환에서 성능 비용은 얼마입니까?
이 문서는 이러한 초기 벤치마크를 설명하는 것입니다.
최신 Linux 5.17 커널에서 몇 가지 AMD Zen 3 시스템을 부팅했는데 현재 기본값은 일반 Retpolines이고 성능은 시스템을 재부팅하고 "spectre_v2=retpoline,lfence" 스위치를 사용하여 되돌아간 후 벤치마크를 반복하는 것과 비교되었습니다.
이번 주까지 이전 AMD/LFENCE Retpoline 기술을 기본값으로 사용합니다.
관련자료
-
링크
-
첨부