Spectre 공격의 핵심 메커니즘
리눅스 커널은 Spectre 변형 2 공격으로부터 보호하기 위해 Return Trampoline(Retpoline) 또는 Enhanced IBRS를 사용하여 악의적 행위자가 남긴 분기 대상 버퍼(BTB)의 독성 항목 소비를 방지한다. Return Trampoline은 투기적 실행 경로를 트랩하여 악의적인 가젯 코드로의 점프를 방지한다.
주요 완화 기법의 아키텍처
Indirect Branch Prediction Barrier(IBPB)는 서로 다른 사용자의 프로세스 간 추가적인 격리를 제공하며, Single Thread Indirect Branch Predictors(STIBP)는 동일 코어에서 실행되는 CPU 스레드 간 추가적인 격리를 제공한다. 이들 CPU 기능은 사용 시 성능에 영향을 미칠 수 있으며 경우별로 프로세스 단위 활성화가 가능하다.
실무 배포 시 고려사항
Retpoline 완화 사용 시 하드웨어가 retpoline을 지원해야 하며, 일부 최신 하드웨어는 retpoline 완화를 무시할 수 있다. 또한 모든 로드 가능한 커널 모듈이 retpoline 인식 컴파일러로 컴파일되어야 하며 그렇지 않으면 커널이 여전히 취약할 수 있다. Retpoline 완화는 취약한 CPU에서 기본적으로 활성화되며, 관리자가 커널 명령줄 및 sysfs 제어 파일을 통해 강제로 활성화 또는 비활성화할 수 있다.