xoreaxeaxeax/skitter-creek-bath-salts
Unlocking _everything_ on the CPU with DRAM scrambling
해결하는 문제
이 프로젝트는 메모리 컨트롤러의 주소 변환을 조작함으로써 특정 CPU의 하드웨어 레벨 메모리 보호를 우회하는 방법을 제공합니다. 이를 통해 운영체제 커널조차도 일반적으로 보이지 않는 플랫폼 보안 프로세서(PSP), 시스템 관리 모드(SMM), CPU 마이크로코드와 같은 보호된 DRAM 영역에 접근할 수 있습니다.
작동 방식
이 도구는 MCT/DCT 계층(메모리 계층의 하위 레이어)을 수정하여 DRAM 컨트롤러의 변환 레지스터 내의 비트를 뒤집습니다. 이로 인해 물리적 주소 매핑이 '스파게티화'되거나 혼란스럽게 되어, 표준 물리적 주소를 보호하는 보안 장벽을 트리거하지 않고도 보호된 메모리 셀에 도달할 수 있는 별칭을 생성합니다.
정확한 스캐러블 매트릭스는 종종 비공개이거나 모델에 따라 다를 수 있으므로, 이 프로젝트는 Z3 SMT 솔버를 사용하여 변환 매트릭스를 재구성합니다. 메모리에 센티넬 값을 배치하고 스캐러블 후 그 값이 어디에 다시 나타나는지 관찰함으로써, 일관된 뷰 주소를 스파게티화된 뷰 별칭으로 변환하는 선형 매핑(GF(2) 선형 대수)을 해결하기 위한 데이터 포인트를 수집합니다.
대상 사용자
AMD Family 16h CPU를 다루는 CPU 아키텍처, 하드웨어 취약점, 펌웨어 보안에 관심이 있는 보안 연구자 및 로우레벨 시스템 엔지니어.
주요 특징
- 하드웨어 장벽 우회: 보안 프리미티브가 적용되는 레벨보다 아래에서 작동하여 SMRAM 및 PSP 개인 메모리와 같은 메모리 영역에 접근 가능.
- 선형 대수 접근법: GF(2) 선형 대수와 Z3를 사용하여 메모리 스캐러블 변환을 수학적으로 도출.
- 로우레벨 조작: clflush, mfence, lfence와 같은 정밀한 어셈블리 레벨 타이밍 및 캐시 제어를 활용하여 시스템 충돌 없이 메모리 매핑을 스캐러블하고 복원.
- 광범위한 적용성: AMD Family 16h에서 테스트되었지만, 주소 변환 변환의 기본 개념은 ARM 및 RISC-V와 같은 다른 아키텍처에도 적용 가능.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트