35C3 — Inside the AMD Microcode ROM

Auf dem 35. Cha­os Com­mu­ni­ca­ti­on Con­gress, der vom 27. bis zum 30. Dezem­ber 2018 in Leip­zig statt­fin­det, haben Ben­ja­min Kol­len­da und Phil­ipp Kop­pe einen Vor­trag zum The­ma “Insi­de the AMD Micro­code ROM — (Ab)Using AMD Micro­code for fun and secu­ri­ty” gehalten.

Ihnen ist es gelun­gen, per Rever­se Engi­nee­ring Tei­le der Seman­tik des Micro­codes älte­rer AMD-CPUs (bis zum K10) zu ent­schlüs­seln und Pro­gram­me zu schrei­ben, um eige­nen Micro­code in eine CPU zu übertragen.

 

Micro­code runs in most modern CPUs and trans­la­tes the outer ins­truc­tion set (e.g. x86) into a simp­ler form (usual­ly a RISC archi­tec­tu­re). It is updata­ble to fix bugs in the sili­con (see Meltdown/Spectre), but the­se updates are encrypt­ed and signed, so no one knows how micro­code works on con­ven­tio­nal CPUs. We suc­cessful­ly rever­se engi­nee­red part of the micro­de seman­ti­cs of AMD CPUs and are able to wri­te our own pro­grams. We also reco­ver­ed the map­ping bet­ween the phy­si­cal rea­dout (elec­tron micro­scope) and the “vir­tu­al” addres­ses used by micro­code its­elf. In this talk we pre­sent back­ground on micro­code, our fin­dings, our open source frame­work to wri­te cus­tom micro­code and our cus­tom defen­si­ve mea­su­res imple­men­ted in microcode.

Der auf Eng­lisch gehal­te­ne Vor­trag kann auf der Sei­te des CCCs auch mit einer deut­schen Über­set­zung ange­schaut werden. 

Down­load: