Rowhammer 공격 설명
3585 단어 vulnerability취약성
소개
rowhammer 공격이라고 하는 메모리의 값을 무리 재기록해 버리는 수법에 대해 조사해 보았습니다.
취약성 내용
전제 지식
DRAM의 원리와 CPU cache에 대해 알아야합니다. 도움이 될 것 같은 자료를 열거해 두므로 읽어 잡아 주세요.
메모리에 관한 화제(1)-cache
【wikipedia】Dynamic Random Access Memory
DRAM이란?
이 그림이 중요합니다. 「랭크」와 「뱅크」의 관계에 대해서는 말씀드립니다.
지금도 들을 수 없는 메모리의 기초지식 FP~BEDO DRAM편
【PDF】DDR 메모리 입문
Ryzen에서 화제가 된 메모리의 "Rank"는 무엇입니까?
「랭크」의 설명입니다
rowhammer
DRAM과 CPU cache에 대해 이해할 수 있었다고 해서, 본제에 들어갑니다.
보라색 행이 값을 다시 쓰고 싶은 메모리 셀의 행, victim row입니다.
그 위아래에 노란색 행이 있습니다.
이 노란색 행에 격렬하게 값을 쓰면 노이즈가 많이 발생하고 victim row의 메모리 셀 커패시터의 전하가 영향을 받고 결과 값이 다시 쓰여집니다. 이것이 rowhammer입니다.
노이즈 맡기기 때문에 victim row의 어느 메모리 셀이 영향을 받는지, 값이 1이 되는지 0이 되는지는 제어할 수 없습니다.
(전하가 빠지는 방향이 주가 된다고 생각하기 때문에 값은 0이 되기 쉽다고 생각합니다만, 1이 되는 경우도 있는 것 같습니다. 그래서 1차 자료에서는 bit flip 라고 하는 표현을 사용하고 있습니다)
PoC는 이하. CPU cache를 타고 있으면 DRAM까지 닿지 않기 때문에 clflush로 CPU cache를 플래시 해, 쫓아내고 있습니다.
code1a:
mov(X)、%eax //アドレスXから読み込み
mov(Y)、%ebx //アドレスYから読み込み
clflush(X)//アドレスXのキャッシュをフラッシュする
clflush(Y)//アドレスYのキャッシュをフラッシュする
jmp code1a
이 공격을 성공하려면
1. DDR3, DDR4에 ECC 없음 버전
2. DRAM의 구성을 알고 있는 것
3. 새로 고침이 발생하기 전에 공격
필요합니다.
1은, rowhammer가 노이즈 맡기기 때문에 미세 가공의 진화에 의한 곳이 크다고 합니다. 미세 가공에 의해 노이즈에 약해지니까요. "DDR은 DDR2 SDRAM 모듈에 거의 또는 전혀 영향을 미치지 않습니다. 많은 DDR3 및 DDR4 SDRAM 모듈에는 영향을 미칩니다."또 ECC로 에러 정정하는 것은 효과가 높다고 합니다.
2는 소프트웨어로 액세스할 수 있는 주소는 논리 주소입니다만, rowhammer의 원리로부터 해서 물리 주소로 변경해, 한편 같은 뱅크내에 있는 상하행의 물리 주소를 특정할 필요가 있습니다.
리눅스라면$sudo decode-dimms
에서 조사할 수 있는 것 같습니다. (macOS에서는 decode-dimms는 없었습니다. 시스템 리포트에서도 모릅니다)
3은, 리프레시가 행해지면 victim row의 전하가 충전되어 건강하게 되어 버리므로 다시 한다. 그렇군요.
감상
재미있는 공격이있는 것입니다.
참고
Rowhammer 문제 사적 요약
【Project Zero】Exploiting the DRAM rowhammer bug to gain kernel privileges
wikipedia
JVNVU # 92147586 통합 GPU에 대한 WebGL을 이용한 사이드 채널 공격 및 Rowhammer 공격
히스토리
2018/8/12 초판
Reference
이 문제에 관하여(Rowhammer 공격 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/IK_PE/items/59b6b6125999b18a56f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
전제 지식
DRAM의 원리와 CPU cache에 대해 알아야합니다. 도움이 될 것 같은 자료를 열거해 두므로 읽어 잡아 주세요.
메모리에 관한 화제(1)-cache
【wikipedia】Dynamic Random Access Memory
DRAM이란?
이 그림이 중요합니다. 「랭크」와 「뱅크」의 관계에 대해서는 말씀드립니다.
지금도 들을 수 없는 메모리의 기초지식 FP~BEDO DRAM편
【PDF】DDR 메모리 입문
Ryzen에서 화제가 된 메모리의 "Rank"는 무엇입니까?
「랭크」의 설명입니다
rowhammer
DRAM과 CPU cache에 대해 이해할 수 있었다고 해서, 본제에 들어갑니다.
보라색 행이 값을 다시 쓰고 싶은 메모리 셀의 행, victim row입니다.
그 위아래에 노란색 행이 있습니다.
이 노란색 행에 격렬하게 값을 쓰면 노이즈가 많이 발생하고 victim row의 메모리 셀 커패시터의 전하가 영향을 받고 결과 값이 다시 쓰여집니다. 이것이 rowhammer입니다.
노이즈 맡기기 때문에 victim row의 어느 메모리 셀이 영향을 받는지, 값이 1이 되는지 0이 되는지는 제어할 수 없습니다.
(전하가 빠지는 방향이 주가 된다고 생각하기 때문에 값은 0이 되기 쉽다고 생각합니다만, 1이 되는 경우도 있는 것 같습니다. 그래서 1차 자료에서는 bit flip 라고 하는 표현을 사용하고 있습니다)
PoC는 이하. CPU cache를 타고 있으면 DRAM까지 닿지 않기 때문에 clflush로 CPU cache를 플래시 해, 쫓아내고 있습니다.
code1a:
mov(X)、%eax //アドレスXから読み込み
mov(Y)、%ebx //アドレスYから読み込み
clflush(X)//アドレスXのキャッシュをフラッシュする
clflush(Y)//アドレスYのキャッシュをフラッシュする
jmp code1a
이 공격을 성공하려면
1. DDR3, DDR4에 ECC 없음 버전
2. DRAM의 구성을 알고 있는 것
3. 새로 고침이 발생하기 전에 공격
필요합니다.
1은, rowhammer가 노이즈 맡기기 때문에 미세 가공의 진화에 의한 곳이 크다고 합니다. 미세 가공에 의해 노이즈에 약해지니까요. "DDR은 DDR2 SDRAM 모듈에 거의 또는 전혀 영향을 미치지 않습니다. 많은 DDR3 및 DDR4 SDRAM 모듈에는 영향을 미칩니다."또 ECC로 에러 정정하는 것은 효과가 높다고 합니다.
2는 소프트웨어로 액세스할 수 있는 주소는 논리 주소입니다만, rowhammer의 원리로부터 해서 물리 주소로 변경해, 한편 같은 뱅크내에 있는 상하행의 물리 주소를 특정할 필요가 있습니다.
리눅스라면
$sudo decode-dimms
에서 조사할 수 있는 것 같습니다. (macOS에서는 decode-dimms는 없었습니다. 시스템 리포트에서도 모릅니다)3은, 리프레시가 행해지면 victim row의 전하가 충전되어 건강하게 되어 버리므로 다시 한다. 그렇군요.
감상
재미있는 공격이있는 것입니다.
참고
Rowhammer 문제 사적 요약
【Project Zero】Exploiting the DRAM rowhammer bug to gain kernel privileges
wikipedia
JVNVU # 92147586 통합 GPU에 대한 WebGL을 이용한 사이드 채널 공격 및 Rowhammer 공격
히스토리
2018/8/12 초판
Reference
이 문제에 관하여(Rowhammer 공격 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/IK_PE/items/59b6b6125999b18a56f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Rowhammer 문제 사적 요약
【Project Zero】Exploiting the DRAM rowhammer bug to gain kernel privileges
wikipedia
JVNVU # 92147586 통합 GPU에 대한 WebGL을 이용한 사이드 채널 공격 및 Rowhammer 공격
히스토리
2018/8/12 초판
Reference
이 문제에 관하여(Rowhammer 공격 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/IK_PE/items/59b6b6125999b18a56f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Rowhammer 공격 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/IK_PE/items/59b6b6125999b18a56f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)