Skip to content

기글하드웨어기글하드웨어

인터넷 / 소프트웨어 : 윈도우즈, 리눅스, 기타 운영체제, 각종 어플리케이션, 프로그램, 소프트웨어, 인터넷, 인터넷 서비스에 대한 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form

vusec-logo_large-768x172.png

 

 

원래 뉴스입니다. 거의 모든 프로세서에 적용 가능한 자바스크립트 공격

 

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을 간단히 설명하자면 이렇습니다.

 

스크린샷 2017-02-20 15.16.21.png

 

스크린샷 2017-02-20 15.16.46.png

<출처: Can randomized mapping secure instruction caches from side-channel attacks? >

 

기본적으로 MMU가 캐시에 접근(page walk)하는 시간차이를 통해서 위치를 찾아냅니다. 공격자가 메모리를 덮어씌우면 타겟 프로세스가 캐시에 접근할때 이미 캐시 데이터는 다른 곳으로 옮겨졌기 때문에 MMU의 처리시간이 길어지고 그곳에 타겟 메모리가 할당되었다는 것을 알 수 있죠. 그래서 Eviction(퇴거, 쫓아냄) + Time(시간재기) 공격법이라고 합니다. 상단의 시각자료는 상당히 단순화 시켜서 보여주고 있지만 사실 페이지 테이블은 다층구조로 이루어져 있어서 물리 메모리 주소를 찾아가기 이전까지 몇번의 가상주소를 거쳐야 하고 EVICT + Time도 여러번 시도되어야 합니다.

 

문제는 자바스크립트에 내장된 타이머 메서드는 그렇게 정확하지 않다는 겁니다. 의도한 건지는 모르겠으나 브라우저 벤더들이 그렇게 만들었다는군요. 항상 자바스크립트 타이머가 정밀하지 못해서 불만이었는데 이런 고충이...

 

그래서 VUSec은 더 정밀한 타이머를 직접 만들어서 Eviction + Time 공격을 시도했고 취약점을 발견했다는 결론입니다.

 

 

<참조>



  • profile
    늘푸른해리      히후미 귀여워요 히후미 2017.02.20 18:44
    정말 대단한 취약점 공격 방법이네요. 저걸 생각하고 실행한다는게..
  • ?
    winner 2017.02.21 08:00
    이론적으로는 cache timing attack 이라고 매우 전통적인 기법입니다.
  • profile
    KHS 2017.02.20 20:27
    캐시는 누구나 읽고 쓰기가 가능한 곳이였나보군요.
  • ?
    winner 2017.02.21 07:59
    아니, 그건 CPU 가 자동적으로 접근 가능한 것이지 software 에 의해서 조절가능하지 않습니다.
  • ?
    하로루8 2017.02.21 20:43
    학교에서 자바스크립트 타이머 매소드가 정확하지않다고 새로만들었던 적이 기억나네요 ㅎㅎ

    그런다음 비교실험

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. 등록된 글이 없습니다.
목록
Board Pagination Prev 1 ... 56 57 58 59 60 61 62 63 64 65 Next
/ 65

최근 코멘트 30개
툴라
07:37
360Ghz
07:27
소스케
07:15
GENESIS
06:52
MUGEN
06:52
포인트 팡팡!
06:50
GENESIS
06:49
보문산타이거
05:06
보문산타이거
05:04
슬렌네터
04:49
라데니안
03:40
포인트 팡팡!
03:16
Lynen
03:16
유카
03:08
린네
02:29
린네
02:24
이수용
02:22
카에데
02:21
별밤전원주택
02:15
린네
02:14
별밤전원주택
02:13
카에데
02:10
nsys
02:09
빈도
01:58
빈도
01:58
마초코
01:41
이계인
01:40
이계인
01:38
세라프
01:37
냥뇽녕냥
01:36

더함
한미마이크로닉스
MSI 코리아
AMD

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소