사이버 보안

Cloudflare, 원격 Spectre 공격을 재평가하고 초당 12비트 데이터 유출 공개

내부 재평가 결과, Spectre 유형의 원격 공격이 프로덕션 환경에서 Worker 격리 영역 간 데이터를 초당 최대 12비트의 속도와 99%를 넘는 정확도로 유출할 수 있었던 것으로 나타났다. Cloudflare는 DyPrIs 개선, V8 Sandbox 통합, Memory Protection Keys에 기반한 프로세스 내 격리를 통해 공격이 이미 해결됐다고 밝혔다.

2026-08-19
4 분 읽기
11 조회수
فريق تحرير certi.news
Cloudflare, 원격 Spectre 공격을 재평가하고 초당 12비트 데이터 유출 공개

Cloudflare는 2024년과 2025년 초에 수행한 Cloudflare Workers 플랫폼의 원격 Spectre 공격 재평가 결과를 공개했다. 연구팀은 프로덕션 환경에서 작동하는 개념 증명을 구축했으며, 연구자들이 제어하는 공격자 Worker에서 피해자 Worker의 데이터를 초당 최대 12비트의 속도와 99%를 넘는 정확도로 유출하는 데 성공했다.

회사는 제시된 공격이 Cloudflare Workers Runtime 팀이 취한 조치를 통해 프로덕션 시스템에서 해결됐으며, 지난 3년 동안 실제 악용이 있었다는 징후를 발견하지 못했다고 밝혔다. 결과는 Albert Pedersen, Haocheng Xiao, Sam Ainsworth, Nigel Topham, Martin Schwarzl이 공동 집필한 논문으로 공개됐다.

이 연구가 중요한 이유

Workers는 엣지에서 신뢰할 수 없는 JavaScript를 실행하며, 수만 명의 테넌트가 V8 격리를 통해 하나의 운영체제 프로세스를 공유할 수 있다. 각 Worker에는 별도의 JavaScript 힙이 있어 시작 시간을 단축하고 다수의 테넌트를 호스팅하는 효율을 높이지만, 프로세스 내 임의 읽기 취약점이 테넌트 간 데이터 유출의 문을 열 수 있다는 의미이기도 하다.

Spectre 공격은 프로세서의 추측 실행을 악용한다. 프로세서가 소프트웨어 분기의 결과를 예측하고 확인 전에 명령어를 실행하면 결과는 나중에 취소될 수 있지만, 캐시를 비롯한 프로세서의 미세 아키텍처 상태에는 미세한 흔적이 남는다. 공격자는 메모리 접근 시간의 차이를 악용해 읽어서는 안 되는 데이터에서 비트를 추론할 수 있다.

Cloudflare는 2021년에 악성으로 보이는 스크립트를 별도 프로세스 안에 격리하기 위한 Dynamic Process Isolation, 즉 DyPrIs라는 프로덕션 방어 기능을 출시했다. 그러나 재평가에서는 공격이 격리를 우회할 수 있을 만큼 오랫동안 효과를 유지하도록 만든 실행 메커니즘의 제약이 발견됐다.

공격은 Workers의 제약을 어떻게 극복했나?

플랫폼은 로컬 타이머를 제한하고 공유 메모리와 멀티스레딩을 허용하지 않으므로 SharedArrayBuffer에 의존하는 기존 측정 기법을 사용할 수 없다. 대신 연구자들은 WebSocket 연결을 통한 원격 타이머를 사용하고, L1 캐시의 tree-based PLRU 교체 정책을 이용해 캐시 이벤트에서 발생하는 신호를 증폭했다.

또한 연구팀은 두 종류의 Spectre gadget을 설계했다. 첫 번째는 힙의 압축 포인터를 유출하는 데 사용됐으며, 여기에는 격리 영역의 힙 베이스 주소도 포함됐다. 두 번째는 추측적 타입 혼동을 이용해 64비트 너비의 원시 포인터에 접근했으며, 이를 통해 유출을 공격자가 선택한 주소에서 읽는 방식으로 전환할 수 있었다. 연구 당시에는 V8 Sandbox가 아직 Workers에 적용되지 않았고, TypedArray는 백킹 스토어에 대한 원시 포인터를 보유하는 사례 중 하나였다.

재현 가능한 측정을 보장하기 위해 연구자들은 캐시 용량을 초과하는 대규모 객체 집합을 만들고, 각 라운드에서 특정 메모리 라인에 대한 정확한 축출 집합을 찾는 대신 무작위 위치를 선택했다. 또한 Durable Objects를 사용해 장시간 실행 컨텍스트를 유지했으며, WebSocket 메시지를 통해 처리 및 요청 시간 제한을 재설정할 수 있었다. 실행 배치 사이에 주기적인 일시 중지 구간을 두어 격리 영역을 5시간에서 20시간 이상 활성 상태로 유지할 수 있었다.

공격자와 피해자 사이의 인접성을 확보하기 위해 공격자 Worker는 fetch를 통해 피해자 Worker를 호출했고, 그 결과 대부분의 경우 동일한 엣지 서버에서 두 Worker가 같은 프로세스로 실행됐다. 이 방식은 엣지 데이터센터의 부하가 낮은 시간대를 활용해 측정 안정성을 높이는 것도 가능하게 했다.

Cloudflare의 방어 기능에는 실제로 무엇이 바뀌었나?

Cloudflare는 단일 조치에 의존하지 않고 여러 가지 변경을 도입했다. V8 Sandbox가 보호 계층의 일부가 됐으며, JavaScript 힙의 상당 부분에서 64비트 원시 포인터의 존재를 줄이는 것을 목표로 한다. 이로 인해 연구에서 사용된 일부 추측적 타입 혼동 도구를 재사용하기가 어려워지지만, V8 Sandbox가 Spectre 공격에 대한 완전한 해결책은 아니다. 메모리 경계를 벗어난 접근을 가능하게 하는 다른 도구나 형태가 등장할 수 있기 때문이다.

2025년 9월, 회사는 Memory Protection Keys, 즉 MPK에 기반한 프로세스 내 격리를 공개했다. 이 기술은 메모리를 보호 영역으로 나누고 낮은 비용으로 접근 권한을 전환함으로써 각 격리 영역의 힙을 하드웨어가 강제하는 장벽 뒤에 둔다. 이를 통해 공격이 의존했던 격리 영역 간 힙의 직접 읽기를 막을 수 있지만, Spectre의 모든 위험을 제거하지는 않는다. 보호 영역의 수가 제한적이며, 시스템이 보호 키 상태를 정밀하게 관리해야 하기 때문이다.

Cloudflare는 장시간 실행되는 작업과 입출력이 많은 부하를 처리하도록 DyPrIs 메커니즘도 개선했다. WebSocket 연결이나 Durable Object가 호출을 몇 시간 동안 열어둘 수 있는 상황에서는 호출이 끝날 때까지 기다렸다가 스크립트를 격리하는 것만으로는 충분하지 않다. 회사는 네트워크 트래픽을 동반한 움직임을 일반적인 잡음으로 간주하는 대신, 계산 집약적인 부분 주변에서 타이머와 유사한 작업이 반복될 때 원격 타이밍 동작을 탐지 신호에 추가하는 방안도 검토하고 있다.

결과의 한계

테스트는 Cloudflare와 연구자들이 제어하는 Workers를 대상으로 수행됐으며, 실제 테넌트가 침해됐다는 증거는 아니다. 또한 회사의 설명에 따르면 가장 높은 유출 속도는 정확도를 희생한 결과였고, 지난 3년 동안 실제 악용의 징후는 관찰되지 않았다. 따라서 결과는 이전 격리 모델에서 실행 가능한 공격 능력이 존재했음을 보여주며, 프로세스 격리, 하드웨어가 강제하는 메모리 보호, 지속적인 행동 탐지를 결합하는 것이 중요하다는 점을 드러낸다.

뉴스 출처
Cloudflare Blog
원문 보기 ↗
ف
작성자

فريق تحرير certi.news

같은 카테고리

추천 기사

모든 뉴스 보기