CPU의 투기적 실행을 악용하는 “Spectre v2”에 대한 기존 조치를 우회하는 새로운 공격 기법 “TONTOU”를, 매사추세츠 공과대학교(MIT) 컴퓨터 과학 및 인공지능 연구소(CSAIL)의 연구자들이 발표했습니다. 연구팀은 TONTOU를 사용하여 Linux의 커널 메모리를 읽어내고, 비밀번호 해시가 저장되는 “/etc/shadow”의 내용을 획득할 수 있음을 실증했습니다.
TONTOU: On the Exploitability of Time-of-Neutralization to Time-of-Use Windows (PDF 파일) https://people.csail.mit.edu/mengjia/data/2026.USENIX.TONTOU.pdf
Spectre는 CPU가 처리를 가속화하기 위해 수행하는 “투기적 실행”을 악용하는 공격입니다. CPU는 분기 방향이나 실행 경로를 예측하여 미리 명령을 실행하지만, 예측이 틀어져 처리 결과가 폐기되더라도 캐시에 흔적이 남아 있을 수 있습니다. 공격자는 남은 흔적을 분석하여 원래 접근할 수 없는 정보를 추측할 수 있습니다.
Spectre의 한 종류인 Spectre variant 2(Spectre v2)에서는 CPU가 분기 방향을 예측하는 메커니즘을 잘못 학습시켜, 비밀 정보를 다루는 처리로 투기적으로 유도합니다. Intel과 AMD는 조치로 분기 예측에 사용되는 내부 상태를 삭제하거나 공격자로부터 격리하는 “무해화(neutralization)”와 같은 메커니즘을 도입했습니다. 아래는 논문이 제시한 무해화 처리의 예입니다. 상단의 “Entry neutralization”는 커널에 진입한 직후에 무해화하는 방식이고, 하단의 “In-place neutralization”는 보호하려는 분기 바로 전에 무해화하는 방식을 나타냅니다. 이 모두가 위험한 예측 정보를 무해화한 후에 분기를 실행함으로써 Spectre v2에 의한 잘못된 투기적 실행을 방지하려는 목적입니다.
그러나 연구팀은 무해화 처리가 끝나고 실제로 분기 예측이 사용되기까지 미세한 시간차가 있다는 점에 주목했습니다. “Time-of-Neutralization to Time-of-Use”의 머리글자를 취한 “TONTOU”는 무해화된 후의 분기 예측기(branch predictor)에 다시 공격자가 원하는 정보를 혼입시키는 기법입니다. 논문의 개념도는 다음과 같습니다. ① 먼저 커널 측에서 분기 예측기가 무해화됩니다. ② 다음으로 공격자가 피해 당사자의 처리를 Training gadget로 유도하고, ③ Training gadget에 의해 분기 예측기가 다시 오염되며, ④ 최종적으로 오염된 예측 상태를 보호 대상의 분기에 사용하고, Disclosure gadget로 투기적 실행을 유도하여 비밀 정보를 유출시킵니다. 즉, 조치로 한 번 cleanup된 분기 예측기를 이용 직전에 다시 오염한다는 의미입니다.
TONTOU에서는 목표 시점에 침투를 발생시키는 “Interrupt Injection”도 활용합니다. 일반 사용자 권한의 프로그램에서 타이머를 설정하고, 커널의 처리 도중 침입을 일으켜 분기 예측기에게 다시 영향을 줄 수 있는 경우도 있습니다. 연구팀은 Intel의 Cascade Lake Refresh와 Arrow Lake, AMD의 Zen 2와 Zen 4에서 TONTOU를 검증했습니다. Intel 환경에서는 일부 분기 예측 기구를 재학습시키는 데 성공했으며, AMD Zen 2에서는 Linux가 채택한 Spectre v2 대응 “Safe RET”를 우회했습니다. 반면 동일한 방법으로 AMD Zen 4에서 확인된 오분기는 없다고 밝혔습니다. 아래 그림은 무해화 후 분기로 이어지는 “post-neutralization window”의 크기를 변화시키고, 공격에 활용 가능한 시점에 침투가 발생할 가능성을 조사한 결과입니다. Zen 2, Zen 4, Cascade Lake Refresh, Arrow Lake에서 정도는 다르지만, 무해화 처리와 분기 사이에 침투를 삽입할 여지가 확인되었습니다.
더욱이 AMD Ryzen 7 4700G를 사용한 실험에서는, Linux 커널 메모리를 평균 매초 5.47 바이트, 평균 91.97%의 정확도로 읽어들이는 데 성공했습니다. “/etc/shadow”의 위치를 찾는 실험에서는 10회 중 5회에 성공했으며, 평균 소요 시간은 18분이었다고 합니다. 이와 관련하여 공격에는 대상 머신에서 일반 사용자 권한의 코드를 실행할 수 있는 것이 전제됩니다. 연구팀은 대책으로, 침입 처리에서 돌아올 때 분기 예측기를 다시 안전한 상태로 만드는 방법을 제시하고 있습니다. AMD 또한 영향 범위를 공표했으며, 논문에서는 Linux 커널 측에서의 수정이 계획되어 있다고 설명하고 있습니다. 연구팀은 TONTOU에 의해, 기존에는 안전하다고 여겨졌던 “Spectre v2 대응 실행 후”에도 공격 대상이 될 수 있다는 것을 보여주었다고 밝혔습니다.
원문 보기 | 출처: Gigazine