관리 메뉴

PC Geek's

CPU 마이크로코드 업데이트(microcode update, microcode patch)가 뭘까 본문

컴퓨터 부품별/CPU

CPU 마이크로코드 업데이트(microcode update, microcode patch)가 뭘까

메인보드 칩셋도 그렇고, 가끔 CPU에 버그나 해킹 취약점이 있다는 발표가 나고 소동이 일어나면 마이크로코드 업데이트(microcode update)라는 것을 한다는 발표가 뒤따른다. 뭐, 업데이트겠지하고 생각하면 그걸로 끝이지만, CPU도 펌웨어 업데이트처럼 뭘 기록할 수 있나? 이런 생각이 들어 신기하기도 하다. 그래서 좀 찾아본 내용이다.


구글 검색


구글 검색: CPU 마이크로코드 업데이트



검색결과 중 몇 가지.


Reverse Engineering x86 Processor Microcode

Philipp Koppe, Benjamin Kollenda, Marc Fyrbiak, Christian Kison, Robert Gawlik,

Christof Paar, and Thorsten Holz, Ruhr-University Bochum

https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/koppe

https://www.syssec.rub.de/media/emma/veroeffentlichungen/2017/08/16/usenix17-microcode.pdf

Once erroneous CPU behavior is discovered, manufacturers publish a microcode update, which is loaded through the BIOS/UEFI or operating system during the boot process. Due to the volatility of the patch RAM, microcode updates are not persistent and have to be reloaded after each processor reset. On the basis of microcode updates, processor manufacturers obtain flexibility and reduce costs of correcting erroneous behavior. Note that both Intel and AMD deploy a microcode update mechanism since Pentium Pro (P6) in 1995 [15, 30] and K7 in 1999 [2, 15], respectively. Unfortunately, CPU vendors keep information about microcode secret. Publicly available documentation and patents merely state vague claims about how real-world microcode might actually look like, but provide little other insight.


일단 CPU의 비정상 동작을 확인하면, 제조사들은 마이크로코드 업데이트를 발표하는데, 이것은 BIOS/UEFI를 통해서 또는 운영체제(OS)를 통해서 시스템 부팅 과정에 올라간다. 램은 휘발성이므로 마이크로코드 업데이트도 프로세서(CPU)를 리셋할 때마다(=컴퓨터를 리셋할/껐다 켤 때마다) 매번 하게 된다. 마이크로코드 업데이트가 있어서, 프로세서 제조사들은 오동작을 교정할 때 유연성을 확보하고 비용을 줄인다. 인텔은 1995년 펜티엄 프로때, AMD는 1999년 K7 이래 마이크로코드 업데이트를 해왔다. (이용자와 개발자에게는)불행하게도, CPU제조사들은 마이크로코드에 관한 정보는 비밀에 부치고 있다. 공개된 문서와 특허는 단순히 마이크로코드가 실제로 어떤 것인 지를 모호하게 서술했을 뿐이고, 제대로 파고들 때는 별로 도움이 안 된다.

그러고는 이 사람들은 보다 접근하기 쉽다는 이유로 AMD K8/K10을 만지작거렸다고 합니다. 인텔은 95년에, AMD는 2011년부터 마이크로코드를 암호화하기 시작했다고. 논문의 뒷 이야기는 그거.


- BIOS와 OS가 부팅과정에 마이크로코드 업데이트를 위한 특별한 명령을 활성화할 수 있음.
- 지금 세대 CPU는 Model Specific Registers (MSR)이라는 것이 있어서, 이것을 읽고 쓰는 것을 통해 CPU가 메모리의 특정 영역 내용을 칩 안의 특별한 영역으로 읽어들여 원래 가지고 있던 마이크로코드를 대신하게 할 수 있다. CPU 안에는 디폴트 마이크로코드가 담겨 있는 롬과, 그 내용을 오버라이드해 고칠 수 있는 램이 있는데, 부팅할 때 특정 절차를 통해 CPU가 여기에 넣을 내용을 찾으면 이 램에 업데이트가 들어가는 것. 당연히 해킹되면 큰일나므로 극비다.
- 인텔과 AMD모두 공개하지는 않지만 그런 메카니즘을 가지고 있고, 그걸 이용해 업데이트를 제공한다.

등등. 잘못 읽은 내용이 있을 수 있습니다. 그리고 위 글에 언급된 참고 링크


Security Analysis of x86 Processor Microcode - Daming D. Chen, Gail-Joon Ahn


이 글과 같은 분류글목록으로 / 최신글목록 이동
0 Comments
댓글쓰기 폼