Új hozzászólás Aktív témák

  • Tentalus

    tag

    válasz XMI #28 üzenetére

    Üdv

    Két dolog keveredik itt. Az egyik,hogy a processzorok cache-memóriájának tulajdonságait - ti. ami cache-ben van az sokkal gyorsabban megkapjuk + a cache tartalommal címezhető memória- kihasználva következtetni lehet memóriaterületek tartalmára. Ez tényleg minden modern processzorban megvan,de kihasználni nehéz,ha nincs más sebezhetőség.

    A másik csak Intelt? érintő dolog ,hogy az Intel processzorok mindenféle ellenőrzés nékül végrehajtanak privilegikus hozzáféréseket (pl. a kernel memóriához) a spekulatív végrehajtás folyamán és csak a legvégén ellenőrzik,volt-e ehhez joguk. És ekkor hibát jeleznének,ahogy kell. DE a hacker bácsi szándékosan olyan kódot ír,ami mindig csak a spekulatív ágon hajtódik végre,így sose okoz hibát,de mivel a spekulatív ág nem törli maga után a regisztereket és a cache-t,így simán hozzá lehet jutni olyasmihez,amihez nem szabadna. Ez tervezési hiba,oka az lehet,hogy gyorsabb így a processzor,mivel kihagy ellenőrzéseket.

    Móricka példával:
    1. ....progi fut...
    2. Spec = 1
    3. If Spec = 2 //sose hajtódik végre
    4 password = kernelmemória[400]
    5. If Spec = 1 //mindig ez hajtódik végre
    6. password megszerzése a spekulatív ágról

    A 4. utasítás AMD (vagy régi Intel) procin simán privileged exception-t okoz és nem hajtódik végre,mivel nincs jogom a kernelmemóriát olvasni
    Modern Intel procin nincs exception,ráadásul a cache-ben benne marad a [400] memóriacím tartalma.

Új hozzászólás Aktív témák