---
title: "AMD Zen CPU 마이크로코드를 직접 해킹하는 도구와 인사이트 (39C3 발표)"
published: 2026-01-01T23:23:44.000Z
canonical: https://jeff.news/article/314
---
# AMD Zen CPU 마이크로코드를 직접 해킹하는 도구와 인사이트 (39C3 발표)

39C3에서 EntrySign 취약점을 활용한 AMD Zen 1~5 CPU 커스텀 마이크로코드 로드 방법과 오픈소스 도구(AngryTools)가 공개됨. 전자현미경으로 ROM을 추출하고 마이크로코드 인코딩을 분석한 결과도 포함.

## AMD Zen CPU 마이크로코드를 직접 해킹하는 시대가 왔음

- 39C3에서 Benjamin Kollenda가 발표한 세션인데, 올해 초 공개된 **EntrySign** 취약점을 활용해서 AMD Zen 1~5 CPU에 커스텀 마이크로코드를 로드하는 방법과 도구를 소개함
- EntrySign은 마이크로코드 업데이트의 서명 검증 약점을 이용한 건데, AMD가 일부 CPU에는 패치를 배포했지만 아직 패치 안 된 시스템에서는 여전히 분석이 가능함

## 마이크로코드가 뭐길래

- 현대 CPU는 x86_64 같은 복잡한 명령어를 내부적으로 더 단순한 명령어 세트로 변환해서 실행함. 단순한 명령어는 빠른 경로(fast path) 디코더가 처리하는데, `wrmsr`이나 `rdrand` 같은 복잡한 명령어는 **마이크로코드 디코더**가 처리함
- 이 마이크로코드 디코더는 사실상 작은 실행 엔진처럼 동작하는데, 조건 분기(conditional branch)와 콜/리턴까지 지원함. 이 모든 게 하나의 x86 명령어 실행 중에 내부적으로 벌어지는 일임
- AMD는 K8(2003년) 이후로 마이크로코드 업데이트를 통해 CPU 버그를 수정해왔는데, 이번에 그 업데이트 메커니즘 자체를 역으로 활용한 거임

## 전자현미경으로 ROM을 뜯었음

- 연구팀이 **전자현미경**으로 Zen 1 CPU의 물리적 ROM을 추출해서 하드코딩된 마이크로코드를 읽어냄. 마이크로코드 인코딩을 이해한 뒤 디스어셈블해서 명령어 구현 방식을 분석함
- XXTEA 복호화 알고리즘의 제어 흐름도 추적했다고 하는데, 아직 이해 못한 부분도 많다고 솔직하게 밝힘

## 오픈소스 도구 세트: AngryTools

- [AngryUEFI](https://github.com/AngryUEFI)라는 이름으로 GitHub에 전부 공개함. 핵심 구성은 두 가지:
  - **AngryUEFI**: RAM에서 실행되는 UEFI 앱. OS 없이 마이크로코드 테스트 가능하고, 잘못된 마이크로코드로 인한 폴트도 대부분 복구함
  - **AngryCAT**: 클라이언트 PC에서 Python으로 테스트를 작성하면 TCP로 테스트 시스템에 전송하는 프레임워크
- 테스트 플로우: 마이크로코드 업데이트를 타겟 CPU 코어에 로드 → x64 명령어 버퍼 실행 → 결과를 TCP로 회수. OS 없이 돌리니까 노이즈가 적고, 중요한 명령어가 깨져도 데이터 손상 걱정이 없음

- [ZenUtils](https://github.com/AngryUEFI/ZenUtils)라는 Python 도구도 공개했는데, 어셈블리/디스어셈블리 + 매크로 어셈블러를 지원함. 현재 Zen 1/2 아키텍처 스펙 기반이고 다른 Zen 아키텍처는 제한적 지원

## 마이크로코드로 뭘 만들 수 있나

- 데모로 보여준 예시가 재밌음: 하나의 x64 명령어 안에서 동작하는 **C 스타일 strlen 구현**, 그리고 마이크로코드로만 구현한 **Subleq VM** (에소테릭 언어 VM을 CPU 마이크로코드 레벨에서 돌린 거임)
- 메모리 로드/스토어, 산술 연산, 조건 분기 같은 마이크로코드 프로그래밍의 기본기를 이 예시들로 보여줌

> [!TIP]
> 패치 안 된 AMD Zen CPU가 있다면 직접 마이크로코드를 작성해서 테스트해볼 수 있음. AngryTools는 GitHub에 전부 공개되어 있고, 기여도 환영한다고 함

## 핵심 포인트

- EntrySign 취약점으로 AMD Zen 1~5에 커스텀 마이크로코드 로드 가능
- 전자현미경으로 Zen 1 CPU의 물리적 ROM 추출 및 디스어셈블
- AngryUEFI/AngryCAT/ZenUtils 오픈소스 도구 GitHub 공개
- 마이크로코드로 strlen 구현, Subleq VM 등 데모 시연

## 인사이트

CPU 마이크로코드라는 블랙박스 영역이 오픈소스 도구로 열리고 있음. 보안 연구자뿐 아니라 CPU 아키텍처에 관심 있는 개발자에게도 흥미로운 진입점.
