Massive Sicherheitslücke in Intel-CPUs (Update: AMD, ARM, Bugfixes)

Seit der Mel­dung am Diens­tag haben sich die Ereig­nis­se zu die­sem The­ma über­schla­gen. Dem Ver­neh­men nach ist die Nach­richt über “den Bug” zu früh an die Öffent­lich­keit gelangt – mut­maß­lich über die offen betrie­be­ne Linux Ker­nel-Ent­wick­lung. Statt­des­sen soll­te es erst am 9.1.2018 eine gemein­sa­me Stel­lung­nah­me von Intel, AMD und ARM geben. Daher woll­ten wir eigent­lich kei­ne auf Spe­ku­la­tio­nen fußen­de Mel­dung mehr dazu schrei­ben bis dahin, jedoch sahen sich die Betei­lig­ten wegen des Bekannt­wer­dens offen­bar dazu gezwun­gen, frü­her aktiv zu wer­den. Daher haben wir hier nun alle wich­ti­gen Fak­ten zusammengetragen.

1. Was ist das für ein Bug?
Bei dem bekannt gewor­de­nen Feh­ler han­delt es sich genau genom­men um zwei, die sogar Namen erhal­ten haben: Melt­down und Spect­re. Von letz­te­rem sind zwei Sze­na­ri­en mög­lich, wes­halb es sich ins­ge­samt um drei sepa­rat zu betrach­ten­de Feh­ler handelt.

  • Vari­ant 1 “Spect­re 1” : bounds check bypass (CVE-2017–5753)
  • Vari­ant 2 “Spect­re 2” : branch tar­get injec­tion (CVE-2017–5715)
  • Vari­ant 3 “Melt­down” : rogue data cache load (CVE-2017–5754)

Inzwi­schen haben die bei­den sogar eine Web­sei­te erhal­ten, auf der Infor­ma­tio­nen gesam­melt werden.

Gemein ist allen drei­en, dass durch leis­tungs­stei­gern­de Fea­tures der CPU – Out-of-Order-Exe­cu­ti­on, Branch Pre­dic­tion und Spe­cu­la­ti­ve-Exe­cu­ti­on – die Tren­nung der Daten zwi­schen Pro­zes­sen und gar Rings nicht mehr 100-pro­zen­tig gewähr­leis­tet ist. Mit trick­rei­chen Ansät­zen ist es mög­lich, Daten eines ande­ren Pro­zes­ses aus­zu­le­sen, was selbst­re­dend ins­be­son­de­re bei Anbie­tern von Cloud-Diens­ten ein GAU ist, wo sich vie­le VMs auf einer Maschi­ne tum­meln, denn der Trick funk­tio­niert über VM-Gren­zen hin­weg. Da in moder­nen Betriebs­sys­te­men Ker­nel-Spei­cher in den User-Space gemappt wird – eben­falls zur Leis­tungs­stei­ge­rung – kann so auch in den höher pri­vi­le­gier­ten Sys­tem­spei­cher­be­reich vor­ge­drun­gen wer­den, um Rech­te zu ergat­tern, Pass­wör­ter aus­zu­le­sen oder Daten zu stehlen.

2. Wer hat die Bugs ent­deckt und wann?
Ein For­scher­team bei Goog­le ist offen­bar bereits im Juni 2017 auf die Pro­ble­me gesto­ßen und hat die Hard­ware- und Betriebs­sys­tem-Her­stel­ler infor­miert. Eine sehr aus­führ­li­che Ana­ly­se ist hier zu fin­den. In Hacker­krei­sen ist das Pro­blem mit den Side-Chan­nel-Atta­cken über Cache und TLB aller­dings schon weit län­ger bekannt, wie eine Ver­öf­fent­li­chung auf der Black Hat USA 2016 zeigt.

3. Wel­che Her­stel­ler sind betroffen?
Intel ist mit sei­nen Pro­zes­so­ren im Grun­de seit der Core-Rei­he von allen drei Feh­lern betrof­fen und im Atom-Seg­ment, seit mit Bay­trail auf OoO-Exe­cu­ti­on umge­stellt wur­de. Inter­es­san­ter­wei­se möch­te Intel jedoch nicht von einem Bug sprechen:

No. This is not a bug or a flaw in Intel pro­ducts. The­se new exploits levera­ge data about the pro­per ope­ra­ti­on of pro­ces­sing tech­ni­ques com­mon to modern com­pu­ting plat­forms, poten­ti­al­ly com­pro­mi­sing secu­ri­ty even though a sys­tem is ope­ra­ting exact­ly as it is desi­gned to. Based on the ana­ly­sis to date, many types of com­pu­ting devices — with many dif­fe­rent ven­dors’ pro­ces­sors and ope­ra­ting sys­tems — are sus­cep­ti­ble to the­se exploits. ”

Laut Intel sind fol­gen­de Pro­duk­te betroffen:

Intel® Core™ i3 pro­ces­sor (45nm and 32nm)
Intel® Core™ i5 pro­ces­sor (45nm and 32nm)
Intel® Core™ i7 pro­ces­sor (45nm and 32nm)
Intel® Core™ M pro­ces­sor fami­ly (45nm and 32nm)
2nd gene­ra­ti­on Intel® Core™ processors
3rd gene­ra­ti­on Intel® Core™ processors
4th gene­ra­ti­on Intel® Core™ processors
5th gene­ra­ti­on Intel® Core™ processors
6th gene­ra­ti­on Intel® Core™ processors
7th gene­ra­ti­on Intel® Core™ processors
8th gene­ra­ti­on Intel® Core™ processors
Intel® Core™ X‑series Pro­ces­sor Fami­ly for Intel® X99 platforms
Intel® Core™ X‑series Pro­ces­sor Fami­ly for Intel® X299 platforms
Intel® Xeon® pro­ces­sor 3400 series
Intel® Xeon® pro­ces­sor 3600 series
Intel® Xeon® pro­ces­sor 5500 series
Intel® Xeon® pro­ces­sor 5600 series
Intel® Xeon® pro­ces­sor 6500 series
Intel® Xeon® pro­ces­sor 7500 series
Intel® Xeon® Pro­ces­sor E3 Family
Intel® Xeon® Pro­ces­sor E3 v2 Family
Intel® Xeon® Pro­ces­sor E3 v3 Family
Intel® Xeon® Pro­ces­sor E3 v4 Family
Intel® Xeon® Pro­ces­sor E3 v5 Family
Intel® Xeon® Pro­ces­sor E3 v6 Family
Intel® Xeon® Pro­ces­sor E5 Family
Intel® Xeon® Pro­ces­sor E5 v2 Family
Intel® Xeon® Pro­ces­sor E5 v3 Family
Intel® Xeon® Pro­ces­sor E5 v4 Family
Intel® Xeon® Pro­ces­sor E7 Family
Intel® Xeon® Pro­ces­sor E7 v2 Family
Intel® Xeon® Pro­ces­sor E7 v3 Family
Intel® Xeon® Pro­ces­sor E7 v4 Family
Intel® Xeon® Pro­ces­sor Sca­lable Family
Intel® Xeon Phi™ Pro­ces­sor 3200, 5200, 7200 Series
Intel® Atom™ Pro­ces­sor C Series
Intel® Atom™ Pro­ces­sor E Series
Intel® Atom™ Pro­ces­sor A Series
Intel® Atom™ Pro­ces­sor x3 Series
Intel® Atom™ Pro­ces­sor Z Series
Intel® Cele­ron® Pro­ces­sor J Series
Intel® Cele­ron® Pro­ces­sor N Series
Intel® Pen­ti­um® Pro­ces­sor J Series
Intel® Pen­ti­um® Pro­ces­sor N Series

Prin­zi­pi­ell sind jedoch alle Her­stel­ler “ver­däch­tig”, die sich der Fea­tures Spe­cu­la­ti­ve Exe­cu­ti­on und Out-of-Order-Exe­cu­ti­on bedie­nen. Die Aus­sa­ge eines Ent­wick­lers vom ers­ten Tag, AMD sei nicht betrof­fen, bezog sich nur auf einen der drei Feh­ler. Inzwi­schen hat AMD in einer offi­zi­el­len Stel­lung­nah­me ein­ge­räumt, dass auch die eige­nen Pro­zes­so­ren teil­wei­se betrof­fen sind, ins­be­son­de­re von Spect­re 1. Bei Goog­le hat man in die­sem Zusam­men­hang einen AMD PRO A8-9600 als betrof­fen iden­ti­fi­ziert, aller­dings nur bei non-Default-Ein­stel­lun­gen (eBPF JIT is on; sie­he Goog­le-Doku­ment). Salopp gespro­chen muss man den Bug durch Ände­rung der Stan­dard­ein­stel­lun­gen mut­wil­lig akti­vie­ren. Bei Spect­re 2 hin­ge­gen läge die Wahr­schein­lich­keit einer Aus­nut­zung bei “nahe Null”, von Melt­down sei man auf­grund der von Intel unter­schied­li­chen Archi­tek­tur gar nicht betroffen.

ARM hat eine aus­führ­li­che Lis­te der betrof­fe­nen Pro­zes­sor-Archi­tek­tu­ren ver­öf­fent­licht. Wie bei Intel sind hier gera­de die neue­ren Ent­wick­lun­gen von allen drei Lücken betrof­fen, die älte­ren nur von den ers­ten beiden.

Auf ARM-Archi­tek­tur fußen­de Pro­zes­so­ren fin­den über­wie­gend in Smart­phones und Tablets Verwendung.

4. Wie geht es weiter?
Micro­soft hat sein Kumu­la­ti­ves Updates für Janu­ar 2018 um eine Woche vor­ge­zo­gen. In KB4056892 (für Win­dows 10) bzw. KB4056897 (für Win­dows 7) und KB4056898 (für Win­dows 8.1) sind bereits ers­te Fixes ent­hal­ten. Aller­dings wer­den sie noch nicht allen Win­dows-Nut­zern ange­bo­ten, da eini­ge Anti­vi­ren-Scan­ner von Dritt­her­stel­lern inkom­pa­ti­bel sind mit dem Ker­nel-Fix. Hier wird das Update erst ein­ge­spielt wenn eine aktua­li­sier­te Ver­si­on des Viren­schut­zes gefun­den wur­de, wes­halb Micro­soft davon abrät, das Update manu­ell ein­zu­spie­len wenn es nicht auto­ma­tisch über das Win­dows-Update ange­bo­ten wurde.

Bei Linux wird der Ker­nel 4.15 offi­zi­ell mit Fixes ver­öf­fent­licht wer­den. Es gibt jedoch auch Back­ports in den Rei­hen 4.14 und 4.4. Bei Apple wird seit macOS 10.13.2 an der Pro­ble­ma­tik gear­bei­tet, für 10.13.3 sind wei­te­re Fixes geplant. Die gro­ßen Cloud-Anbie­ter sind der­zeit dabei, ihre Sys­te­me abzu­si­chern, was aller­dings nicht immer rei­bungs­los zu funk­tio­nie­ren scheint.

Aller­dings gilt das offen­bar der­zeit nur für Melt­down; rela­tiv leicht aus­zu­nut­zen, aber auch rela­tiv leicht auf Ker­nel-Ebe­ne und damit an zen­tra­ler Stel­le zu behe­ben. Spect­re ist anschei­nend hart­nä­cki­ger. Zwar sei eine Aus­nut­zung schwie­ri­ger, jedoch müs­sen hier auch die Pro­gram­me ange­passt wer­den. Letzt­end­lich beho­ben wer­den kön­nen die Lücken hier wohl nur durch Ände­run­gen in künf­ti­ger Hardware.

5. Wie wir­ken sich die Bug­fi­xes auf die Leis­tung aus?
Bei den bis­her ver­öf­fent­lich­ten Fixes, die vor­wie­gend Melt­down adres­sie­ren, ist der Effekt abhän­gig vom Ein­satz. Spie­le in UHD sind so gut wie nicht betrof­fen, da das Sys­tem im GPU-Limit hängt. Bei nied­ri­ge­rer Auf­lö­sung, wo sich die Last hin zu CPU und Platt­form ver­schiebt, kön­nen die Unter­schie­de grö­ßer wer­den. Com­pu­ter­Ba­se und Hard­ware­Lu­xx haben bei Full-HD in nied­ri­gen Pre­sets bis zu 5 % Leis­tungs­ver­lust gemes­sen; auf Intel-Sys­te­men wohl­ge­merkt. Auf AMD-Sys­te­men wird das Kumu­la­ti­ve Update zwar eben­falls ein­ge­spielt, soll sich auf die Leis­tung jedoch nicht auswirken.

Stär­ker betrof­fen sind offen­bar Ser­ver­be­trei­ber, ins­be­son­de­re Daten­ban­ken. Hier kann der Leis­tungs­ver­lust durch die Gegen­maß­nah­men bis zu 25 % betra­gen.

Ori­gi­nal­mel­dung vom 03.01.2018
Bereits in den letz­ten Wochen muss­te Intel Nega­tiv­schlag­zei­len wegen Sicher­heits­lü­cken im Manage­ment Engi­ne Inter­face über sich erge­hen las­sen. Doch gestern hat The Regis­ter eine Wel­le an Nach­rich­ten ange­sto­ßen, die weit über die MEI-Pro­ble­ma­tik hin­aus­rei­chen. In Intel-Pro­zes­so­ren mit Sup­port für x86-64 befin­det sich offen­bar eine gra­vie­ren­de Sicher­heits­lü­cke, die es Angrei­fern erlaubt, auf pro­zess­frem­de Spei­cher­be­rei­che zuzu­grei­fen. Da es sich dem Ver­neh­men nach um einen Hard­ware-Bug han­deln soll, der nicht mit einem Micro­code-Update gefixt wer­den kann, ist die Bedro­hungs­si­tua­ti­on poten­zi­ell erheb­lich, schließ­lich ste­cken in der über­wie­gen­den Mehr­zahl der x86-64-Sys­te­me Intel-Pro­zes­so­ren. Der Bug ist unab­hän­gig vom Betriebs­sys­tem – Win­dows, Linux und MacOS sind betroffen.

 

AMD-Pro­zes­so­ren sind laut Aus­sa­ge eines AMD-Ent­wick­lers nicht betroffen:

AMD pro­ces­sors are not sub­ject to the types of attacks that the ker­nel page table iso­la­ti­on fea­ture pro­tects against. The AMD micro­ar­chi­tec­tu­re does not allow memo­ry refe­ren­ces, inclu­ding spe­cu­la­ti­ve refe­ren­ces, that access hig­her pri­vi­le­ged data when run­ning in a les­ser pri­vi­le­ged mode when that access would result in a page fault.

Indi­rekt betrifft der Bug weit mehr als die PC-Nut­zer mit Intel-Pro­zes­so­ren, schließ­lich ste­cken auch in den meis­ten Cloud-Ser­vern Intel-Pro­zes­so­ren, auf denen Smart­phone-Nut­zer ihre Kon­ten hin­ter­le­gen, eben­so wie in den Cloud-Com­pu­ting-Diens­ten bei Ama­zon, Micro­soft (Azu­re) und ver­gleich­ba­ren Ange­bo­ten. Auch die meis­ten Fir­men­ser­ver dürf­ten von Intel Xeon-Pro­zes­so­ren befeu­ert sein.

Bekannt ist der Bug anschei­nend schon län­ger, da die Linux Ker­nel-Ent­wick­ler eben­so wie die Fast-Ring-Ent­wick­ler bei Micro­soft bereits einen Patch parat haben. Bei Micro­soft ist der Patch anschei­nend seit 19. Dezem­ber im Fast-Ring ab Ver­si­on 17035 aktiv. Bei Linux ist der (K)PTI-Fix ab Linux-Ker­nel 4.14.11 aktiv, aller­dings wird der Fix hier auch bei AMD-Pro­zes­so­ren akti­viert. Ab 4.14.12 soll er kor­rek­ter­wei­se nur bei Intel-Pro­zes­so­ren akti­viert wer­den, denn der Fix kos­tet ein wenig Leis­tung, da der TLB (Trans­la­ti­on-Loo­ka­s­i­de-Buf­fer) nicht mehr so effi­zi­ent arbei­ten kann; je nach Workload wer­den mal 7 Pro­zent, mal 25 Pro­zent Leis­tungs­ein­bu­ße ver­mel­det. Neben dem Workload an sich ist der Grad der Leis­tungs­ein­bu­ße offen­bar auch davon abhän­gig, ob der Pro­zes­sor den TLB lee­ren muss bei einem Wech­sel der Page­ta­ble oder nicht. Neue­re Intel-Pro­zes­so­ren müs­sen das dank pro­cess-con­text iden­ti­fiers (PCIDs) nicht, älte­re wie San­dy Bridge schon.

 

Da AMD von dem Bug nicht betrof­fen ist, obwohl x86-64 sei­ner­zeit von AMD ent­wi­ckelt wor­den war, lässt dar­auf schlie­ßen, dass der Feh­ler nicht im Befehls­satz an sich steckt, son­dern in der spe­zi­el­len Imple­men­tie­rung durch Intel.

Quel­len: