원래 뉴스입니다. 거의 모든 프로세서에 적용 가능한 자바스크립트 공격
ASLR⊕Cache 또는 AnC라고 명명된 공격법입니다. 보고 흥미가 동해서 잠깐 읽어봤습니다만 참고로 보안전문가도 아니고 하드웨어 전문가도 아닙니다(그래서 허접주의.. 질문 못받아요.. 지적 받아요..)
자바스크립트를 좋아해서 읽어봤을 뿐인데 다 읽고보니 사실 자바스크립트는 그렇게 중심적인 내용은 아니군요.
일단 ASLR은 해당 본문에도 나와있다시피 어플리케이션 코드/데이터의 가상 주소를 랜덤화 시켜서 크래킹을 어렵게 합니다.
<가상 주소와 물리 주소간의 관계. 출처: 영문 위키피디아>
가상 주소를 만드는 것이 끝이 아니라 실제로 어플리케이션 레벨에서 사용을 하려면 가상주소를 단서로 해서 물리 주소의 데이터에 접근할 수 있어야 하겠죠. ASLR 덕분에 가상주소가 랜덤화되어서 쉽게 찾을 수 없을테니까요.
이를 위해서 가상주소와 물리주소간 관계를 매핑해서 페이지 테이블을 만들고 CPU의 MMU(Memory Management Unit)가 페이지 테이블을 TLB(Translation Lookaside Buffer)라는 캐시에 저장합니다. 그리고 가상주소가 주어지면 물리주소로 연결 시켜주는 것 또한 MMU의 역할입니다.
여기까지가 현대 CPU에서 퍼포먼스를 향상시키는 방법인데 문제는 이 캐시영역이 javascript같은 인증되지 않은 어플리케이션에서도 접근이 가능하다는 것입니다. 게다가 페이지 테이블은 프로세스마다 하나씩 가지지만 캐시영역은 공유자원이기도 하고요.
그러면 이제 어떻게 랜덤화된 가상주소를 추적하느냐? 완전히 새로운 공격방법은 아닙니다. 이미 2005년도 논문(Cache Attacks and Countermeasures: the Case of AES)에서 (그 이전에도 있었는지는 모르겠습니다.) EVICT + Time measurement attack이라는 공격방법에 대해 설명하고 있습니다.
이미 말씀드렸지만 TLB 캐시 영역이라는게 공유자원이라 어느 한곳에서만 뚫려도 해당 시스템 전체 메모리를 추적할 수 있기 때문에 여러 경로를 통해 여기에 접근하려는 시도가 있었고 이번에는 그게 자바스크립트였을 뿐인거죠. 버퍼 오버플로우나 Brute force 공격법이 굉장히 고전적인 방법이지만 아직도 빈틈만 보이면 많이 사용되는 스테디셀러인것 처럼요
잠깐 새어나갔지만 EVICT + Time Attack을 간단히 설명하자면 이렇습니다.
<출처: Can randomized mapping secure instruction caches from side-channel attacks? >
기본적으로 MMU가 캐시에 접근(page walk)하는 시간차이를 통해서 위치를 찾아냅니다. 공격자가 메모리를 덮어씌우면 타겟 프로세스가 캐시에 접근할때 이미 캐시 데이터는 다른 곳으로 옮겨졌기 때문에 MMU의 처리시간이 길어지고 그곳에 타겟 메모리가 할당되었다는 것을 알 수 있죠. 그래서 Eviction(퇴거, 쫓아냄) + Time(시간재기) 공격법이라고 합니다. 상단의 시각자료는 상당히 단순화 시켜서 보여주고 있지만 사실 페이지 테이블은 다층구조로 이루어져 있어서 물리 메모리 주소를 찾아가기 이전까지 몇번의 가상주소를 거쳐야 하고 EVICT + Time도 여러번 시도되어야 합니다.
문제는 자바스크립트에 내장된 타이머 메서드는 그렇게 정확하지 않다는 겁니다. 의도한 건지는 모르겠으나 브라우저 벤더들이 그렇게 만들었다는군요. 항상 자바스크립트 타이머가 정밀하지 못해서 불만이었는데 이런 고충이...
그래서 VUSec은 더 정밀한 타이머를 직접 만들어서 Eviction + Time 공격을 시도했고 취약점을 발견했다는 결론입니다.
<참조>
- https://www.vusec.net/projects/anc/
- Dag Arne Osvik , A. Shamir and E. Tromer, Cache Attacks and Countermeasures: the Case of AES, 2005.
- S. van Schaik, K. Razavi, B. Gras, H. Bos, C. Giuffrida, Reverse Engineering Hardware Page Table Caches Using Side-Channel Attacks on the MMU, VU Amsterdam, 2017.
- Liu Fangfei, Hao Wu, Ruby B. Lee. "Can randomized mapping secure instruction caches from side-channel attacks?" Conference: Hardware and Architectural Support for Security and Privacy,
- 영문 위키피디아 Page_table
- 페이지 테이블에 대한 한국어 해설. 많이 배웠습니다.