제목: Reverse Engineering of Intel Microcode Update Structure
저자: Zhiguo Yang; Qingbao Li; Ping Zhang; Zhifeng Chen
학술지: IEEE Access, vol. 8, pp. 169676-169687
발행 연도: 2020
DOI: 10.1109/ACCESS.2020.3024243
url: https://ieeexplore.ieee.org/document/9197630
============================================
1. Introduction
-
성능, 효율성 높이려 CPU 내부에 마이크로코드 도입.
- ROM -> RAM
- 실제 보안 패치 사례 - 스펙터, 멜트다운
- 단점(한계): 그러나 RAM의 휘발성 탓에 마이크로코드 업데이트는 영구적X 프로세서 리셋마다 re-load 필요. (mi- update 매커니즘 자체가 오류로 등재되기도)
2. 데이터 분석 병행 + 사용한 알고리즘
마이크로코드 업데이트 샘플 저장소
-
샘플 걸러내고 형식 통일하는 과정
-
big-endian 방식 구버전. 현재는 little-endian
-
순서. 추출 -> 포맷 변환 -> 중복 제거 -> 이름 변경 -> 체크섬
SJNW-MA 분석 기법 : 통계와 알고리즘을 결합한 독창적인 반자동 분석법.
아래 세 단계 순서.
- SJ.자카드 지수 저장, 이에 기반해 행렬 계산. 자카드 지수 행렬은 그래프의 인접 행렬, 샘플은 node로 간주함. (샘플 > 쉬잉글 알고리즘 > 자카드 지수 계산 >>> 행렬 계산)
- NW. 생물정보학에서 쓰이는 알고리즘. DFS 알고리즘으로 자카드 지수 행렬 순회하는 동안 니들만-운쉬로 edge 있는 node 2개의 최적 매칭 시퀀스 결정. 이후 여러 공통 데이터 블록으로 분류하여 candidate features로.
- MA. 위에서 분류한 candidate features에 대해서 manual-review 수행. for 슬라이싱, 중복 제거, 평가 >>> 샘플 분류에 가장 효과적이고 단순화된 기준을 세우는 것.(1) SJ (Similarity Analysis based on Jaccard Index)
- (목적) 파일들끼리 얼마나 비슷한지 거시적으로 파악하여 그룹화.
- K- shingling: 바이너리 파일을 통째로 비교하는 대신, 데이터를 4바이트 단위의 ㅈ작은 조각(Shingle)로 잘게 쪼갠다.
- 자카드 지수: 두 파일 A, B가 있을 때, (A와 B의 교집합) / (A와 B의 합집합) 공식으로 유사도를 계산함. 0이면 완전히 다르고, 1이면 완전히 똑같다고 판정.
- (결과) 이 과정을 통해 유사한 파일끼리 뭉친 heatmap을 얻어내고, 결과적으로 분석 대상을 좁힐 수 있다.(2) NW (Needleman-Wunsch Algorithm)
- (본래 목적) 유사하다고 판명된 파일 쌍에서 구체적으로 어떤 데이터 블록이 공통되는지 찾아냄.
- 원래 DNA나 단백질 서열을 정렬할 때 쓰는 알고리즘. 연구진은 마이크로코드 바이너리를 DNA서열처럼 취급하여 이 알고리즘을 사용.
- (작동 원리) 두 파일의 비트열을 나란히 놓고 비교하여, 연속적으로 일치하는 구간을 자동으로 찾아냄. 헤더, 데이터 본문, 서명 같은 핵심 구조의 후보가 됨.(3) MA(Manual-Assisted Analysis)
- (목적) 알고리즘이 찾은 후보 중 진짜 의미 있는 정보를 골라냄
- how? 전문가가 개입하여 다음 작업들 수행 -> 쓰레기 값 제거(보안 분석을 방해하려 제조사가 일부러 넣은 Garbage data나 padding을 걸러냄), 구조 확정(남은 블록들을 통해 최종적으로 헤더, 암호화된 데이터, 전자 서명 등의 위치와 크기를 확정)
3. 과정-결과
구조적 분류
-
Category 1 & 2 (구형): 펜티엄 프로 등 아주 오래된 CPU. 리버스 엔지니어링을 방해하기 위한 더미(Dummy) 데이터가 많이 섞여 있으며, 현재는 거의 쓰이지 않음.
-
Category 3 (주류, 2006년~현재): 현재 대부분의 인텔 CPU가 사용하는 표준 구조. 데이터 영역 앞부분에 692바이트의 접두사(Prefix) 구조가 존재하며, 여기에 업데이트 버전, 날짜, 로더 정보 등이 담겨 있음. RSA 전자서명을 통해 파일의 위변조를 검증한다.
-
Category 4 (최신~, Ice Lake): 최신 아키텍처인 아이스레이크(Ice Lake)용 업데이트에서 발견된 새로운 구조. Category 3와 비슷하지만 보안이 대폭 강화됨.
보안 매커니즘의 규명
- 3072비트 RSA 키 발견 (Category 4)
- 기존에는 2048비트 수준의 키를 썼으나, 최신 업데이트(Category 4)에서는 보안 강도가 훨씬 높은 3072비트 RSA 모듈러스를 사용한다는 사실을 세계 최초로 확인.
- RSA 지수(Exponent) 값은 파일에 명시되어 있지 않았지만, 연구진이 시뮬레이션을 통해 65537 (0x10001)임을 알아내고 서명 검증에 성공.
- 24개의 RSA 공개키 추출
- 여러 업데이트 파일에 공통적으로 쓰이는 24개의 RSA 공개키를 추출. 이는 기존 연구보다 12개나 더 많은 수치.
- 암호화 방식
- 모든 업데이트는 암호화되어 있으며, Encryption-then-MAC(암호화를 먼저 하고 그 결과값에 인증 코드를 붙이는 방식)을 사용하는 것으로 확인됨
- 무결성 검증을 위한 해시 알고리즘은 구형의 SHA-1에서 신형의 SHA-2, SHA-3로 진화했음을 확인함.
4. 한계 및 의의
- 제조사의 폐쇄성으로 접근이 어려웠던 hw 펌웨어의 보안 구조를 데이터 과학적 기법으로 규명함.
- 특히 생물정보학 알고리즘을 바이너리 분석에 융합하는 시도를 함으로써, 기존의 수동 분석보다 훨씬 효율적이고 정밀한 결과를 도출함.