
VUSec와 Scuola Superiore Sant'Anna 소속 연구진이 새로운 CPU 취약점 공격 기법 "Branch Target Reuse(BTR)"를 공개했습니다. 이 공격은 스펙터(Spectre) v2 계열의 변종으로, 웹브라우저·언어 런타임·리눅스 커널에 쓰이는 JIT(코드를 실행 직전에 즉석 컴파일하는 기술) 엔진을 노립니다. 연구진은 최신 방어 기법이 적용된 완전 패치 상태의 인텔 시스템에서도 이 공격으로 몇 분 만에 루트 비밀번호 해시를 빼낼 수 있음을 실제로 증명했습니다. 리눅스 커널은 이미 CVE-2026-64507, CVE-2026-64508로 취약점을 등록하고 패치를 병합했으며, Firefox와 GraalVM 개발사도 각자 대응책을 검토·적용 중입니다. 아직 실제 악용 사례는 확인되지 않았지만, 널리 쓰이는 브라우저와 커널에 영향을 미치는 만큼 기업 보안 담당자는 관련 패치 현황을 파악해둘 필요가 있습니다.
연구진이 CPU의 분기 예측(branch prediction) 기능을 악용해 JIT 엔진에서 메모리 내 민감 정보를 유출하는 새로운 스펙터 v2 변종 공격 'BTR(Branch Target Reuse)'을 공개했다.
Firefox의 SpiderMonkey, GraalVM, 리눅스 커널의 cBPF JIT 등이 영향을 받으며, 패치된 인텔 시스템에서도 수 분 내 루트 비밀번호 해시를 탈취할 수 있는 것으로 시연됐다.
CPU가 코드 자체 수정(self-modifying code) 후에도 예전 분기 예측 정보를 완전히 무효화하지 않아, JIT 엔진이 코드 캐시를 재사용할 때 오래된 분기 타깃이 다시 쓰이며 공격자가 실행 흐름을 가로챌 수 있다.
리눅스 커널은 CVE-2026-64507, CVE-2026-64508로 등록하고 패치를 이미 병합했으며, GraalVM은 JIT 코드 캐시 위치를 무작위화하고 Mozilla는 IBPB 기반 완화책 대신 사이트 격리(site isolation) 도입을 우선 추진 중이다.
브라우저·JVM 런타임·리눅스 커널을 사용하는 조직은 관련 벤더의 보안 업데이트 배포 여부를 확인하고 최신 패치를 적용해야 한다.
본문
Ravie Lakshmanan 2026년 9월 29일 취약점 / 하드웨어 보안
VUSec와 Scuola Superiore Sant'Anna 소속 학계 연구진 그룹이 여러 CPU 제조사에 걸쳐 웹브라우저, 언어 런타임, 운영체제 커널에 존재하는 JIT(Just-In-Time) 엔진에 영향을 미치는 새로운 Spectre CPU 취약점 변종의 세부 내용을 공개했다.
이 새로운 Spectre-v2 변종은 **Branch Target Reuse (BTR)**라는 이름이 붙었다.
"핵심적인 통찰은, 최신 CPU들이 자체 수정(self-modification) 이후 아키텍처적 코드 일관성은 복원하지만, 오래된 간접 분기 예측 항목(즉, 분기 타깃)을 반드시 무효화하지는 않는다는 점이다"라고 연구원 Sander Wiebing, Yuhui Zhu, Alessandro Biondi, Cristiano Giuffrida는 함께 발표한 논문에서 밝혔다.
"JIT 엔진에서는 이런 오래된 타깃이 원래 코드보다 더 오래 남아 있다가, 코드 캐시가 다시 채워질 때 재사용될 수 있으며, 이는 일시적인(transient) '해제 후 실행(execute-after-free)' 프리미티브를 만들어낸다. 이를 통해 공격자는 일시적 실행 흐름을 오래된 오프셋의 새로 생성된 코드로 가로챌 수 있으며, 소프트웨어 방어책을 우회하거나 정렬되지 않은 가젯(gadget)에 도달할 수 있다."
BTR은 Mozilla Firefox의 JIT 엔진인 SpiderMonkey, GraalVM, 그리고 리눅스 커널의 cBPF JIT를 대상으로 평가되었으며, 이들 모두 영향을 받는 것으로 확인되었다. 다만 "악용 가능성의 특성과 정보 유출 속도는 뚜렷하게 다르다"고 밝혔다.
개념 증명(PoC)으로, 리눅스 커널을 대상으로 한 두 가지 엔드투엔드 공격 기법이 고안되었으며, 이는 기본 보호 기능이 활성화된 완전히 패치된 인텔 시스템에서 몇 분 만에 루트 비밀번호 해시를 유출하고 복구하는 데 사용될 수 있다.
Spectre는 2017년에 처음 발견된 CPU 보안 취약점 부류를 가리키며, 최신 프로세서가 미리 명령어를 예측하고 실행하는 성능 최적화 기법인 추측 실행(speculative execution)을 악용한다.
공격자는 이 허점을 이용해 CPU가 민감한 데이터에 접근하는 추측 연산을 수행하도록 속인 뒤, 캐시 타이밍 사이드 채널을 통해 해당 데이터를 추론할 수 있다.
Spectre v2는 Spectre 공격의 특정 유형 중 하나로, 최신 프로세서의 간접 분기 예측(indirect branch prediction)을 악용해 동일한 목표를 달성한다. 구체적으로는 CPU의 분기 예측 메커니즘을 오염시켜 피해 프로그램이 간접 분기를 실행하도록 만들고, 이로 인해 CPU가 분기를 잘못 예측해 공격자가 제어하는 코드나 가젯을 추측 실행하게 만든다.
잘못된 예측의 결과는 폐기되지만, 공격자는 캐시 상태 변화를 이용하고 캐시 변화를 측정함으로써 피해자의 추측 실행이 무엇에 접근했는지 추론할 수 있다.
"BTR은 JIT 엔진을 대상으로 하며, 자체 수정 코드(Self-Modifying Code, SMC)와 간접 분기 예측 간의 상호작용에서 비롯된다"고 연구진은 밝혔으며, "JIT 엔진이 처음으로 SMC로 인해 유발되는 악용 가능한 일시적 실행(transient-execution) 기회를 노출한다는 것"이라고 덧붙였다.
이 공격은 공격자가 JIT 엔진 내에서 비권한(unprivileged) 코드를 실행할 수 있으며, 호스트 환경으로부터 민감한 데이터를 유출하려 한다고 가정한다. 전체 행동 순서는 다음과 같다 -
- 공격자는 JIT 엔진을 유인해 트레이닝 청크(training chunk)를 할당하게 만들고, 피해 분기가 해당 청크로 점프하도록 강제해 현재 진입점을 참조하는 BTB(branch target buffer) 항목을 삽입한다.
- 공격자는 트레이닝 청크의 할당 해제를 강제하고, 동일한 주소를 부분적으로 재사용하는 타깃 청크의 할당을 유도한다.
- 공격자가 간접 분기를 다시 트리거하면, CPU는 이제 오래된 BTB 항목을 사용해 오래된 트레이닝 청크 진입점으로 추측적으로 점프한다.
- 최종 결과는 제어 흐름 탈취와 비밀 데이터 유출이다.
"아키텍처적으로 유효하지 않은 진입점으로 제어 흐름을 리디렉션함으로써, 공격자는 Spectre 방어 완화책을 우회하거나 정렬되지 않은 명령어를 실행할 수 있으며, 궁극적으로 비밀 데이터를 유출할 수 있다"고 연구진은 설명했다.
다만 BTR이 성립하기 위한 핵심 조건은, JIT 엔진이 트레이닝 청크를 해제한 이후에도 오래된 BTB 항목이 무효화되거나 교체되지 않아야 하며, 분기 예측기가 예측에 이 오래된 BTB 항목을 선택해야 한다는 점이다.
책임 있는 공개(responsible disclosure) 절차를 거쳐, BTR에 대한 완화책이 발표되어 리눅스 커널에 병합되었다(CVE-2026-64507 및 CVE-2026-64508).
"GraalVM은 대신 JIT 코드 캐시 위치를 무작위화함으로써 영역 재사용을 저해한다"고 연구진은 밝혔다. "Mozilla는 IBPB(Indirect Branch Predictor Barrier) 기반 완화책을 검토했지만, 현재는 사이트 격리(site isolation)의 완성과 배포를 우선시하고 있다."
이번 공개는 MIT CSAIL 연구원 Daniël Trujillo와 Mengjia Yan이 Spectre v2 방어책을 우회해 인텔 및 AMD 기반 리눅스 시스템에서 임의의 커널 메모리를 유출할 수 있는 추측 실행 공격 기법 'Interrupt Injection'을 공개한 지 약 두 달 만에 나왔다.
관련 투런 솔루션
이 뉴스의 취약점·위협, 투런 솔루션으로 대응하세요.






