[논문 리뷰] Reverse Engineering x86 Processor Microcode
이 논문은 AMD K8 및 K10 x86 프로세서의 마이크로코드 및 업데이트 메커니즘을 역공학하여, CPU 지원 프로그램 분석을 가능하게 하거나 원격 코드 실행 및 암호 해독 공격을 수행할 수 있는 악성 마이크로코드 트로이 목마를 배포할 수 있는 커스터마이즈된 마이크로코드 업데이트를 개발할 수 있음을 입증한다. 주요 기여는 상용 제품(COTS) 프로세서에서 마이크로코드 의미론과 업데이트 절차에 대한 첫 번째 상세 분석을 제공하며, 이는 심각한 보안 영향을 드러내고 방어적 및 공격적 수준의 하드웨어 기반 악용 가능성을 제시한다.
Microcode is an abstraction layer on top of the physical components of a CPU and present in most general-purpose CPUs today. In addition to facilitate complex and vast instruction sets, it also provides an update mechanism that allows CPUs to be patched in-place without requiring any special hardware. While it is well-known that CPUs are regularly updated with this mechanism, very little is known about its inner workings given that microcode and the update mechanism are proprietary and have not been throughly analyzed yet. In this paper, we reverse engineer the microcode semantics and inner workings of its update mechanism of conventional COTS CPUs on the example of AMD's K8 and K10 microarchitectures. Furthermore, we demonstrate how to develop custom microcode updates. We describe the microcode semantics and additionally present a set of microprograms that demonstrate the possibilities offered by this technology. To this end, our microprograms range from CPU-assisted instrumentation to microcoded Trojans that can even be reached from within a web browser and enable remote code execution and cryptographic implementation attacks.
연구 동기 및 목표
- AMD K8 및 K10 x86 프로세서의 마이크로코드 의미론과 업데이트 메커니즘을 역공학하여, 이는 이전에 문서화되지 않았고 독점적인 자료임.
- 상용 제품(COTS) 프로세서에 커스터마이즈된 마이크로코드 업데이트를 개발하고 배포할 수 있는 가능성을 입증하기 위해.
- 마이크로코드 업데이트의 보안 영향을 탐색하기 위해, 영구적이고 낮은 수준의 백도어 및 하드웨어 기반 공격의 가능성 포함.
- 동적 프로그램 분석, 바이너리 인스트루멘테이션, 성능 최적화와 같은 구축적 목적을 위한 마이크로코드의 사용을 조사하기 위해.
제안 방법
- 부팅 중 BIOS/UEFI를 통해 로드된 마이크로코드 패치를 분석하여 AMD K8 및 K10 프로세서의 마이크로코드 업데이트 메커니즘을 역공학함.
- 펌웨어 이미지에서 마이크로코드 데이터를 추출하고 디어셈블러 및 고유 도구를 사용하여 마이크로명령어 형식과 제어 흐름을 역공학함.
- 방어적 및 악성 기능을 모두 입증하기 위해 마이크로프로그램 세트를 개발함. 이는 CPU 지원 프로그램 분석 및 마이크로코드 트로이 목마를 통한 원격 코드 실행을 포함.
- 마이크로코드 업데이트 프로세스를 매핑함. 이는 패치 RAM의 역할, 마이크로코드 업데이트 헤더의 구조, 무결성 확인을 위한 암호화 서명의 사용 포함.
- 테스트 시스템에 마이크로코드 업데이트를 삽입하고 명령어 수준에서의 동작 변화를 관찰함으로써 커스터마이즈된 마이크로코드 업데이트의 기능을 검증함.
- 마이크로코드 업데이트 메커니즘의 보안 모델을 평가하여, 검증 가능한 신뢰 기반점이 부족하고 문서화되지 않은 독점적 메커니즘에 의존한다는 약점을 식별함.
실험 결과
연구 질문
- RQ1AMD K8 및 K10 프로세서의 마이크로코드 실제 구조와 의미론은 무엇이며, 런타임에서 어떻게 업데이트되는가?
주요 결과
- AMD K8 및 K10 프로세서의 마이크로코드 업데이트 메커니즘은 각 리셋 후에 다시 로드가 필요한 비영구적 패치 RAM에 기반하여, 펌웨어 영속성 없이도 업데이트가 지속되지 않음.
- 마이크로코드 업데이트는 암호화 알고리즘을 사용하여 서명되지만, 공개된 검증 메커니즘이 없어 사용자가 업데이트의 무결성 또는 진위성을 검증할 수 없음.
- 커스터마이즈된 마이크로코드 업데이트는 프로세서에 삽입 가능하며, CPU 지원 프로그램 분석 및 하드웨어 수준의 코드 삽입과 같은 새로운 동작을 가능하게 함.
- 악성 마이크로코드 업데이트는 운영 체제 및 애플리케이션 수준의 격리 조건을 우회할 수 있으며, 웹 브라우저 내부에서 원격 코드 실행 및 암호 키 복구를 가능하게 함.
- 이 논문은 물리적 접근이 가능한 환경에서 BIOS/UEFI에 저장된 마이크로코드 트로이 목마가 재시작 후에도 지속될 수 있으며, 감지되지 않을 수 있음을 입증함.
- 마이크로코드 업데이트에 대한 공개 문서화 및 검증 가능한 신뢰 기반점의 부재는 현대 CPU의 보안 모델을 약화시키며, 공급망 및 제조 후 공격에 노출된 시스템을 초래함.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.