- TRR 완화가 적용된 AMD Zen 2·Zen 3 DDR4 시스템에서도 Rowhammer 비트 플립이 발생해, AMD 플랫폼 역시 실질적인 공격 표면이 될 수 있음
- 연구팀은 AMD에 맞춘 DRAMA 기법으로 비밀 DRAM 주소 함수를 역공학했고, 시스템 주소 재매핑 때문에 물리 주소 오프셋 처리가 필요함을 확인함
- ZenHammer fuzzer는 Samsung, Micron, SK Hynix를 포함한 10개 DDR4 장치 중 Zen 2에서 7개, Zen 3에서 6개에서 비트 플립을 유발했으며, Zen 3 장치는 Intel Coffee Lake보다 더 취약한 결과를 보임
- 기존 페이지 테이블, RSA-2048 공개키 손상,
sudoers.so공격은 각각 7/6/4개 장치에서 구성 가능했고, 악용 가능한 비트 플립을 찾는 평균 시간은 164/267/209초였음 - Zen 4의 DDR5 평가에서는 10개 중 1개 장치에서 약 42,000개 비트 플립이 발생했지만, 나머지 9개에서는 실패해 DDR5에는 추가 패턴 연구가 필요함
AMD Zen에서도 발생한 Rowhammer 비트 플립
- ZenHammer는 TRR 완화가 적용된 DDR4 장치에서 AMD Zen 2와 Zen 3 시스템의 Rowhammer 비트 플립을 유발함
- AMD 시스템도 Intel 시스템과 마찬가지로 Rowhammer 취약성을 가질 수 있음이 확인됨
- AMD의 x86 데스크톱 CPU 시장 점유율이 약 36% 라는 점에서 공격 표면이 작지 않음
- DRAM 장치는 이미 배포된 뒤 쉽게 수정하기 어렵고, 이전 연구들은 Rowhammer 공격이 여러 환경에서 실용적일 수 있음을 보였음
AMD DRAM 주소 함수 역공학과 해머링 최적화
- AMD 시스템에 맞게 DRAMA 기법을 적용해 비밀 DRAM 주소 함수를 역공학함
- 더 안정적인 결과를 얻기 위해 타이밍 루틴을 변경함
- 시스템 주소 재매핑 때문에 DRAM 주소 함수를 복구하기 전에 물리 주소 오프셋을 적용해야 했고, 이를 통해 주소 함수를 완전히 복구함
- 복구한 주소 함수만 사용하는 방식으로는 비트 플립 수가 제한적이었음
- Zen 2에서는 10개 장치 중 5개에서만 비트 플립이 확인됨
- Zen 3에서는 10개 장치 중 0개에서 비트 플립이 확인됨
리프레시 동기화와 명령 시퀀스
- 이전 연구인 SMASH와 Blacksmith처럼 리프레시 동기화가 비트 플립 유발에 중요한 요소였음
- AMD에서는 반복되지 않는 행을 대상으로 연속 타이밍 측정을 수행하는 방식이 정밀하고 신뢰성 있는 리프레시 동기화에 효과적이었음
- AMD Zen+/3 시스템에서는 비균일 Rowhammer 패턴의 활성화율이 Intel Coffee Lake보다 크게 낮았음
- 최적 해머링 명령 시퀀스는 일반 로드
MOV와CLFLUSHOPT를 사용해 aggressor를 캐시에서 플러시하고, aggressor 접근 직후 플러시하는 “scatter” 스타일이었음 - Zen 2와 달리 Zen 3에서는 플러시 뒤 명시적 fence가 필요하지 않았음
- fence 유형과 fence 스케줄링 정책도 결과에 영향을 줬고, 연구팀은 6가지 패턴 인식·캐시 회피 정책을 제안해 장치별로 6시간씩 테스트함
- Zen 2의 대부분 장치에서는
SP_none이 최적이었음 - Zen 3의 대부분 경우에는
SP_pair가 더 적합했음
- Zen 2의 대부분 장치에서는
DDR4 평가 결과와 악용 가능성
- 평가는 Samsung, Micron, SK Hynix를 포함한 10개 DDR4 DRAM 장치를 대상으로 진행됨
- ZenHammer fuzzer는 각 fence 유형인
mfence,sfence와 각 fence 스케줄링 정책 조합으로 3시간씩 실행됨 - 각 실행 뒤에는 발견된 모든 패턴으로 4MiB 범위에서 minisweep을 수행해 최적 패턴을 정하고, 최적 정책의 최적 패턴을 256MB 연속 메모리 영역에 sweep함
- 그 결과 DDR4 DRAM 장치 10개 중 Zen 2에서 7개, Zen 3에서 6개에서 비트 플립이 발생함
- 비트 플립의 악용 가능성은 기존 연구의 세 가지 공격으로 평가됨
- 페이지 테이블 엔트리의 page frame number를 공격해 공격자 제어 페이지 테이블 페이지로 피벗하는 공격
- SSH 호스트 인증에 쓰이는 관련 개인키를 복구할 수 있게 하는 RSA-2048 공개키 공격
- root 권한 획득을 가능하게 하는
sudoers.so라이브러리의 비밀번호 검증 로직 공격
- 기존 공격은 각각 7/6/4개 장치에서 구성 가능했고, 악용 가능한 비트 플립을 찾는 평균 시간은 164/267/209초였음
DDR5 평가, 공개 코드, 발표 일정
- AMD Zen 4에서 DDR5 DRAM 함수도 역공학하고 10개 DDR5 장치를 평가함
- ZenHammer는 10개 중 1개 DDR5 장치에서 약 42,000개 비트 플립을 유발함
- 이는 일반 상용 시스템에서 DDR5 비트 플립을 공개적으로 보고한 첫 사례임
- 나머지 9개 DDR5 장치에서는 비트 플립이 발생하지 않아, DDR5 장치에는 더 효과적인 패턴을 찾기 위한 추가 연구가 필요함
- 전체 세부 내용은 2024년 8월 USENIX Security 2024에 발표될 논문에 포함됨
- ZenHammer fuzzer 코드는 GitHub에서 제공되며, AMD Zen 2/3/4 CPU에서 DRAM 장치의 비트 플립 여부를 평가하는 데 사용할 수 있음
- Rowhammer는 알려진 업계 전반의 문제라 일반적인 공개 절차가 필요하지 않다고 판단했지만, AMD에는 2024년 2월 26일 알렸고 AMD 요청에 따라 2024년 3월 25일까지 공개하지 않았음
- 이 페이지는 실수로 2024년 3월 21일 잠시 온라인에 공개됐음
FAQ의 실무적 제한 사항
- AMD 시스템이 이전에 적게 다뤄진 이유는 원래 Rowhammer 연구에서 Intel 시스템의 비트 플립 수가 훨씬 많았고, 후속 연구도 주로 Intel에 집중했으며, Intel CPU 마이크로아키텍처 정보가 AMD보다 더 많이 알려져 있었기 때문임
- 10개 DDR4 장치 중 Zen 2에서는 3개, Zen 3에서는 4개에서 비트 플립이 발생하지 않았지만, Intel Coffee Lake에서도 이 장치들의 비트 플립 수가 적었기 때문에 fuzzer를 더 조정하면 비트 플립이 드러날 수 있다고 봄
- 평가 장치가 10개로 제한된 이유는 연구실의 AMD Zen 2/3 장비 수가 제한적이고 일부 실험 시간이 길었기 때문이며, 무작위 하위 집합에는 3대 DRAM 공급업체 장치가 모두 포함됨
- JEDEC이 아직 문제를 고치지 못한 이유에 대해, Rowhammer 해결은 어렵지만 불가능하지 않으며 이전 연구 ProTRR와 REGA에서 이를 보였다고 설명함
- DDR3에 대한 이전 연구는 ECC가 Rowhammer를 막지 못함을 보였고, 현재 DDR4 장치의 비트 플립 수가 더 많기 때문에 ECC는 완전한 보호가 아니라 악용을 더 어렵게 만드는 수준으로 판단됨
- 리프레시율을 두 배로 올리는 방식은 성능 오버헤드와 전력 소비 증가가 있으며, Mutlu et al.과 Frigo et al. 등의 이전 연구에서 완전한 보호를 제공하지 못하는 약한 해법으로 나타남