TL;DR

Researcher bảo mật Mark Ermolov (Positive Technologies) vừa đăng một snippet Archsim mô phỏng microcode của instruction rdmsr trên CPU Cannon Lake (CNL) — và đặt giả thuyết rằng cấu trúc dữ liệu nội bộ tên CREGPLA, vốn được nạp qua uop MSR2CR, chứa flag xác định mỗi MSR có hợp lệ hay không. Đây là dấu hiệu cho thấy nhóm reverse-engineering Intel microcode đang đẩy ranh giới từ dòng Atom (Goldmont/Goldmont Plus) sang dòng Big Core — một bước nhảy lớn về độ phức tạp uarch.

Điều mới ở đây là gì

Suốt từ 2021, nhóm Ermolov, Maxim GoryachyDmitry Sklyarov đã dump xong microcode Atom Goldmont và phát hành công cụ uCodeDisasm. Tất cả case-study lớn về patch microcode (gồm CustomProcessingUnit ở WOOT 2023) đều dừng ở Goldmont — một dòng Atom small-core đơn giản.

Tweet mới của Ermolov đưa target sang Cannon Lake — Big Core 10nm năm 2018, chính là kiến trúc Palm Cove kế thừa từ Skylake và là client Intel đầu tiên có AVX-512. Snippet mô phỏng cho thấy researcher đã đủ hiểu uop format của Big Core để chạy rdmsr qua Archsim — một simulator microcode — thay vì phải chui qua JTAG vật lý mỗi lần.

Phát hiện cụ thể là về CREGPLA: cấu trúc dữ liệu được hardcode trong silicon, mô tả từng MSR (Model-Specific Register). Khi CPU nhận rdmsr, microcode dùng uop MSR2CR để đọc descriptor tương ứng. Ermolov đang giả thuyết rằng một bit trong descriptor này quyết định MSR có "valid" hay không — tức kiểm tra trước khi cho phép truy cập.

Vì sao điều này quan trọng

MSR là cánh cổng giữa thế giới x86 mà phần mềm thấy và thế giới microcode mà chỉ Intel biết. Mỗi MSR có thể: chứa flag bảo mật (SMM, SGX, JTAG); chuyển sang chế độ debug; hoặc trigger update microcode. Một bug ở tầng này ảnh hưởng tới mọi process trên CPU, bất kể OS hay hypervisor.

Việc dump CREGPLA descriptor trên Big Core nghĩa là researcher có thể liệt kê toàn bộ MSR — kể cả những MSR không được Intel công bố — kèm metadata: ai gọi được, mode nào (Normal/Fuse/SMM/JTAG/XuCode), procedure microcode nào chạy khi đọc/ghi, và dữ liệu thực sự ở đâu trong silicon. Đó là tấm bản đồ kho báu cho cả attacker lẫn auditor độc lập.

Sự thật kỹ thuật

Để hiểu tweet này, cần ngữ cảnh ngắn về cấu trúc microcode Intel:

  • Microcode Sequencer (MS) chứa 2 vùng: MSROM (read-only) và MSRAM (writable, dùng cho microcode update). Dữ liệu lưu dưới dạng Microcode Triads + Sequence Words.
  • CRBUS (Control Register Bus) là bus nội bộ trong core, kết nối Instruction Fetch Unit, Microcode Sequencer, Execution Core, Page Miss Handler. Mỗi unit expose state qua các CREG (Control Registers) — vd CORE_CR_CR0 giữ giá trị architectural CR0, PMH_CR_CR3 giữ page directory.
  • Microcode đọc/ghi CRBUS bằng các uop chuyên biệt: MOVEFROMCREG_DSZ64, MOVETOCREG_DSZ64, MOVETOCREG_BITOPX_DSZ64.
  • rdmsr/wrmsrmicrocoded macro-instruction: chúng đi qua Microcode Sequencer chứ không phải simple decoder, vì cần validate mode + route tới đúng tài nguyên.
  • Mỗi MSR descriptor (mà CREGPLA là một biến thể trên CNL) chứa: MSR address, applicable modes, check procedure, read/write procedure, microarchitectural data address (CREG, URAM, IO uop, hoặc custom composite), và fuse bit index trong OTP.

So sánh: Goldmont đã xong, Cannon Lake là chương mới

Thuộc tínhGoldmont (Atom)Cannon Lake (Big Core)
Loại coreSmall / low-powerBig Core (Palm Cove, 10nm)
Năm release20162018 (1 SKU duy nhất)
AVX-512KhôngCó — client Intel đầu tiên
Status REMicrocode đã dump, disassembler publicĐang giải mã (Archsim simulation)
MSR descriptorĐã liệt kê đầy đủ qua MSR2CRĐang khảo sát CREGPLA
Patch primitivesCustomProcessingUnit hỗ trợ end-to-endChưa public

Khoảng cách phức tạp giữa Goldmont và Cannon Lake không nhỏ: Big Core có thêm execution port, thêm uop cho AVX-512, và Palm Cove còn share uarch với Skylake/Kaby Lake/Coffee Lake — nghĩa là nếu CREGPLA được mô tả đầy đủ trên CNL, kết quả có thể kế thừa cho cả một dòng họ CPU desktop/mobile của Intel.

Use case: ai quan tâm tới việc này

  • Security auditor & reverse engineer: phát hiện MSR ẩn dùng cho SGX/SMM/JTAG là vector tấn công và defense thực tế. Ví dụ MSR 0x1DF (ICECTLPMR) điều khiển Probe Mode redirection từng được Ermolov công bố trước đây.
  • Microcode patcher: framework như CustomProcessingUnit đã chứng minh có thể viết constant-time div (438 cycles vs 694 cycles software, nhanh hơn 1.58×) hoặc software breakpoint nhanh hơn 1000 lần. Mở rộng sang Big Core nghĩa là những kỹ thuật này áp dụng được cho CPU production.
  • Defender doanh nghiệp: hiểu CPU layer dưới x86 giúp đánh giá rủi ro firmware/hypervisor. Microcode bug không thể vá bằng OS patch.
  • Người làm nghiên cứu Spectre/Meltdown: mỗi descriptor mới mở rộng surface phân tích cho speculative execution attacks.

Giới hạn & những điều chưa rõ

  • Tweet là work-in-progress, không phải paper. Giả thuyết "valid bit" trong CREGPLA chưa được verify trên nhiều mẫu chip.
  • Archsim chưa public code. Không thể độc lập kiểm chứng simulation chính xác bao nhiêu so với silicon thật.
  • Chưa rõ nhóm đã Red-Unlock được Cannon Lake hay đang extrapolate primitives từ Goldmont. Skylake/Kaby Lake mới chỉ unlock được Management Engine, chưa phải core.
  • Cannon Lake có 1 SKU duy nhất — Core i3-8121U (2C/4T, 15W, max 3.2 GHz). iGPU Gen 10 disable hoàn toàn vì lifespan ngắn trong test. Mẫu chip cực hiếm.
  • Intel ký RSA + mã RC4 cho microcode update; descriptor trong ROM thì không cứu được bằng signing.

Điều gì sẽ tới

Nếu Ermolov xác nhận được CREGPLA và publish dump descriptor cho Cannon Lake, đó sẽ là lần đầu tiên cộng đồng có bản đồ MSR đầy đủ cho một Big Core hậu-Skylake. Bước tiếp theo logic là port disassembler và CustomProcessingUnit framework sang CNL — và xa hơn là Coffee Lake/Comet Lake (cùng family). Một paper chính thức ở USENIX/WOOT/Offensivecon là kịch bản hợp lý cho 2026–2027.

Trong lúc chờ, tweet này nhắc một điều: phần lớn "đáy" của CPU bạn đang dùng vẫn là blackbox — và cộng đồng nhỏ vài người đang miệt mài soi từng bit một.

Nguồn: Mark Ermolov on X · uCodeDisasm · CustomProcessingUnit (WOOT 2023) · Chips and Cheese — Cannon Lake.