tech chyb ma o dost mene ( rozdilna implementace SMT / TLB a cache ) , a u dost chyb se ukazalo ze narozdil od intelu nejsou prakticky zneuzitelne :D
A to zpomaleni je na Intelu i na spravne opatchovanych widlich : D vlastne jedno na jakem OS , pokud ma migitation pro tyto bugy je +- zpomaleni stejne na vsem.
No, koukal jsem na spotřebu a mám pocit, že při stejném výkonu se obvykle víc energie dává do AMD.
Ale když se na Intelu zapnou všechny záplaty, tak se při stejné spotřebě dostane zase za AMD.
Takže mám takovou kaciřskou myšlenku: nedostali jsme se k nějaké limitující hranici výpočetního výkonu na Watt energie, kdy další zvyšování se děje jen za cenu podvodů a špinavých triků, které se následně provalí jako bezpečnostní díra, jejíž zalepení vrátí výkon zpět do daných mezí?
on už prudko stúpa
AMD: Zen zpětinásobil podíl v serverech, od Zen 2 čekáme ještě víc
18. 6. 2018
Procesorová architektura Bulldozer prakticky vymazala AMD ze statistik v serverových procesorech. Při nástupu Zenu dosahovala AMD 0,2% podílu…
https://diit.cz/clanek/amd-zpetinasobila-podil-v-serverech
CEO Intelu: Musíme zabránit, aby AMD obsadila 15-20 % trhu serverů
18. 6. 2018
https://diit.cz/clanek/intel-musi-zabranit-aby-amd-obsadila-15-20-procent-trhu-serveru
Túto neobsahuje
STIBP-Single Thread Indirect Branch Predicting
je to, že jadro s SMT (HT) má pre oba/všetky vlákna/Thread jeden (resp. koľko koľko vlákien beží naraz- Sparc má 4,8 alebo viac) IBP
AMD ich má ake dva pre dve vlákna v SMT, a teda sa AMD tento problém netýka..
Intel má len jeden pre dve vlákna a preto sa ho problém týka..
Neviem, čo presne chcete vedieť?
Ale v pri chybách tohto typu úplne všeobecne ide o:
1. Zblbnúť prediktor tak, aby v inom programe vykonal v špekulatívnom režime tú svoju čast, ktorú chceme, lebo tá spracúva dáta, ktoré nemáme a chceme ich získať.
2. Ak sa zistí, že v špekulatívnom režime sa vykonalo, čo sa nemalo(lebo sa predikovala nesprávna vetva), trak sa majú zahodiť všetky spracovávané dáta a iné dôsledky. Všetky priame dôkazy sa zahodia, ale ostanú k dispozícii nepriame dôkazy o tom, aké boli tie spracované dáta. A na základe tých nepriamych dôkazov sa dajú spracovávané dáta(napr. heslá) zistiť
A teraz
Prediktor sa dá zblbnúť
A) Pre program, ktorý bude bežať po nás , tu OS vie pri prepínaní zblbnúť to inak, ako chceme, a tým zabrániť.
B) pre inú časť samého seba (ak sa líši tá časť v bitoch, ktoré prediktor ignoruje -počíta len s najnižšími 20-imi bitmi)
C) Pre program , ktorý beží na tom isto jadra súčasne s nami tzv.- SMT/HT a máme spoločný prediktor.
(Intel má jeden prediktor pre dva thready, AMD dva prediktory pre dva thready-jeden pre každý thread a teda tu to nefunguje)
A ako riešiť prípad C, ak je tam jedn prediktor?
každý proces/task/úloha má aspoň jeden thread - V C začínam vo funkcii main, ale môže ich mať viac, ak ich má viac, tak majú prístup (skoro) ku všetkému (okrem lokálnych premenných na zásobníku), ako oattné vlákna toho istého procesu a teda nemá zmysel získavať dáta z iného vlákna toho istého procesu, lebo ich má aj tak. Teda vlákna toho istého procesu môžu bežať na tom istom jadre bez bezpečnostného rizika. Vlákna z iných procesov to ale nemôžu robit, lebo by mohli získať dáta, ku ktorým by sa nedoatali. To vie zariadiť plánovač OS, a ak to urobí, tak je dopad na výkon taký ako v týchto záplatách, lebo presne to robia...
Vsechny tyhle chyby jsou o tom, ze musis spustit velmi specifickou binarku, ktera cilene na tu chybu utoci. A nektery jsou porad v rovine teorie. Takze jestli ti neco takovyho dela browser, mas problem nekde jinde nez v CPU.
Navic proc by browser louskal tvoje hesla z nejaky cache CPU, kdyz si je proste muze precist z disku. Zasadni aspekt toho vseho totiz je i ten, ze ty se dostanes k nejakym jednickam a nulam jiny aplikace, ale to je ti porad jaksi celkem khovnu, protoze jeste musis nejak zjistit co ze to bylo za jednicky a nuly ... takze se dostavas cim dal vic do role teoretickyho napadeni - v pripade ze presne vis, co na danym stroji bezi, casto ve zcela konkretni verzi, tak ses schopen z vysledku ziskat nejaky relevantni data ... mozna.
Taky by mě zajímalo, zda tyhle chyby vůbec znamenají nějakou hrozbu třeba pro desktopové uživatele Linuxu?
Protože pokud si tam sám nainstaluju malware, někdo uhodne heslo nebo se k počítači dostane fyzicky, pak prostě vyhrál i bez chyb CPU.
V ostatních případech si to zneužití moc představit neumím. Je to zřejmě jedna z cest k eskalaci oprávnění, ale na desktop si cizí uživatele nepouštím. Pokud tedy tohle nejde nějak zneužít na Webu třeba přes JavaScript?
Chápu, že pro provozovatele serverů s virtualizací to musí být noční můra, ale nechápu důvod zabíjet tím výkon počítače všem (myšleno obecně i ty ostatní záplaty).
pozrel som si to a to "ano" je podobne ako dokaz sporom. Tj to co povedal je, ze to neni vylucene ale ziadny funkcny postup zrejme nepozna. Navyse co brani JVM alebo obecne programom co robia nieco podobne sa interne branit proti tomu aby takyto kod mohol byt generovany? Teraz nemyslim ale to, ze niekto chce toto robit vedome v programe ale to aby napr Javascript sa nedal takto zneuzit?
Rikam si, jestli by nebylo resenim na tyto problemy v desktop rovine mit nejakou chytrou architekturu (neco na zpusob biglittle, ale tady spis SECURE.insecure), kde by proces mohl vytvorit thread pracujici s duvernymi daty, rekl by o nem ze se ma spustit na secure jadre CPU a kernel by zajistil, ze na tomto jadre dle urovne zabezpeceni pobezi thready urcitym zpusobem (napr. tam bude vypnuty HT, bude to mit oddelenou cache, atd.).
Zbytek by potom mohl bezet "volne" na nebezpecnych jadrech. Otazkou zustava co s kernelem, resp. prepinani mezi ringy.
Motivace je popsana, ne vse je dostatecne privatni, aby to vynutilo pad vykonu a ochranu vseho proti vsemu a teoreticky by to mohlo resit i nejake budouci chyby.
Zrejme by bylo i akceptovatelne mit u toho secure jadra oddelenou cache, nebo pametovou oblast apod., davalo by to daleko vetsi sanci pro OS resit nejake kriticke chyby.