Én odáig eljutottam, hogy a speculative evaluation miatt akár olyan műveleteket is végrehajthat a CPU, amire nincs meg a jogkör (pl más alkalmazás memóriájának az olvasása?), mert a jogosultság ellenőrzés előfordulhat, hogy a művelet végrehajtása utánra kerül. Gondolom a CPU cache-ébe az ilyen végrehajtások után automatikusan beteszi az eredményt, hátha szükség lesz rá, hogy ne kelljen újra lefuttatni az egészet. Ami nem világos, hogy onnan hogyan tudják kiolvasni.
szerk:
Közben megnéztem a spectre pdf-ét, kiderül belőle, hogy a cache olvasására is megvannak a megfelelő technikák.
The main difference between the two techniques is the mechanism used for evicting the monitored cache line from the cache. In the Flush+Reload technique, the attacker uses a dedicated machine instruction, e.g., x86’s clflush, to evict the line. In Evict+Reload, eviction is achieved by forcing contention on the cache set that stores the line, e.g., by accessing other memory locations which get bought into the cache and (due to the limited size of the cache) cause the processor to discard the evict the line that is subsequently probed.
Megnéztem, a win7 és a firefox automatikusan telepítette a frissítéseket ezzel kapcsolatban, és úgy tűnik, hogy teszik a dolgukat. Legalábbis a js exploit példakód, amit találtam nem működött.
Úgy "csempészi ki" az értéket az elvileg végre nem hajott ágból, hogy a kiolvasott titkos bájtot az eldobott ágban címzésre használja, pl kiolvas 25-öt egy területről amiről nem szabadna neki, ezután megcímzi a 25*N-edik lapot a memóriában. A program normál flow-jában ellenőrzi, melyik memóriaterülethez mennyi ideig tart a hozzáférés (hanyadik lap volt már cache-elve), és a 25-öshöz gyorsabb lesz a hozzáférés mint a többihez.
Nem kell igazából HT a támadáshoz, és az igazi problémát itt nem is a desktop userek, hanem főleg a virtualizált környezetek tapasztalják. A patchek megoldják a problémát, a user gyakorlatilag nem tapasztal teljesítménycsökkenést, és tud profitálni a HT-ből. Virtuális környezetben, vagy nagyon kihegyezett célkörnyezetben viszont nagyon nagy impactje is lehet a patcheknek (többtíz százalékos visszaesés is akár). Persze ahol nem update-elik a patchet, ott ez persze veszélyforrás.
Úgyhogy szerintem a HT túléli a botrányt. Számomra az a kérdés, hogy mekkora teljesítmény visszaeséssel tudják majd architektúra szinten javítani a hibát és hogy mikor.
A HT miatt én sem aggódnék, de a userek biztosan nem fogják megérezni? Modern víruskeresők hogy működnek? Amik sandboxot használnak... mert én tartok tőle, hogy azok ugyanúgy lassulni fognak, ahogy a virtuális gépek.
Vagy nem...
Kimutatható a lassulás desktopon is, egész biztos. Lehet mondjuk X%-kal tovább fut egy víruskeresés/ellenőrzés, de ez nem feltétlenül kell blokkolja a usert. Meg ott nincs SLA, virtuális környezetben meg azért előfordul. Illetve akár drágíthatja is a virtualizációs költségeket, mert már több node-ot kell használjon ugyanahhoz a loadhoz. A latency érzékeny feladatoknál meg aztán még izgibb dolgok lehetnek...
Igen, de a probléma az, hogy a processzek olyan memóriaterületet is el tudnak érni, amihez nincsen jogosultságuk, és a CPU-nak ezt meg kéne akadályozza. Ez HT-től függetlenül létező dolog, alapvető address space izolációs gond van. Ezért nem gondolom, hogy a HT ne élné túl.
A HT-nek valószínűleg nincs köze a Spectre-höz. Csak arra szerettem volna rávilágítani, hogy a HT-ben a megosztott erőforrások miatt esetleg - a Spectre-höz hasonlóan - át lehet kukkantani más processzek memóriaterületére, cache-ébe.
Ami a cache-be bekerül, az látható minden mag számára, nem csak a HT pár számára. És nem csak HT szálat, de egyéb processzt is lehet bármikor ugyanarra a magra migrálni, ami nem feltétlenül kell egy teljes cache flush-sel járjon.
Az alkalmazások saját virtuális címtérben dolgoznak, amit még fel kell oldani fizikai címre. Hiába címzed meg ugyanazt a címet két processzből, más fizikai cím lesz mögötte, más tartalommal. Akkor is, ha cache-ben esetleg ott van az, amit szeretnél "ellopni".
Persze HT esetén is kiderülhet még bármi implementációs/design gubanc, de maga a HT nem szabadna ilyet okozzon a fentiek miatt.
Indirect branch poisoning is even more challenging to mitigate in software. It might be possible to disable hyperthreading and flush branch prediction state during context switches, although there does not appear to be any architecturally-defined method for doing this
Itt vannak patchek: link, de
Videón
https://www.youtube.com/watch?v=I5mRwzVvFGE
Én odáig eljutottam, hogy a
szerk:
Közben megnéztem a spectre pdf-ét, kiderül belőle, hogy a cache olvasására is megvannak a megfelelő technikák.
Megnéztem, a win7 és a firefox automatikusan telepítette a frissítéseket ezzel kapcsolatban, és úgy tűnik, hogy teszik a dolgukat. Legalábbis a js exploit példakód, amit találtam nem működött.
Idevágó rész
https://www.youtube.com/watch?v=I5mRwzVvFGE&feature=youtu.be&t=7m55s
Úgy "csempészi ki" az értéket az elvileg végre nem hajott ágból, hogy a kiolvasott titkos bájtot az eldobott ágban címzésre használja, pl kiolvas 25-öt egy területről amiről nem szabadna neki, ezután megcímzi a 25*N-edik lapot a memóriában. A program normál flow-jában ellenőrzi, melyik memóriaterülethez mennyi ideig tart a hozzáférés (hanyadik lap volt már cache-elve), és a 25-öshöz gyorsabb lesz a hozzáférés mint a többihez.
HT
Nem kell igazából HT a
Úgyhogy szerintem a HT túléli a botrányt. Számomra az a kérdés, hogy mekkora teljesítmény visszaeséssel tudják majd architektúra szinten javítani a hibát és hogy mikor.
A HT miatt én sem aggódnék,
Vagy nem...
Kimutatható a lassulás
HT
A botrányon az Intel és a processzorgyártók botrányát úgy általában értettem.
A HT azért érdekes, mert egy virtuális magról van szó benne, ami megosztott erőforrásokat (cache, busz) használ a fizikai maggal.
Igen, de a probléma az, hogy
HT
Ami a cache-be bekerül, az
Az alkalmazások saját virtuális címtérben dolgoznak, amit még fel kell oldani fizikai címre. Hiába címzed meg ugyanazt a címet két processzből, más fizikai cím lesz mögötte, más tartalommal. Akkor is, ha cache-ben esetleg ott van az, amit szeretnél "ellopni".
Persze HT esetén is kiderülhet még bármi implementációs/design gubanc, de maga a HT nem szabadna ilyet okozzon a fentiek miatt.
Ezzel kezdtek
Ezt most találtam