Lo shadow stack funziona solo con anti-BufferOverflow?

3

Ho alcune domande sulla concezione dello shadow stack:

  1. La concezione shadow stack viene utilizzata per le inversioni del bufferoverflow solo?
  2. Lo stack-canary adiacente con shadow-stack?
  3. Cosa succederebbe se gli indirizzi di ritorno di stack e shadow-stack non corrispondessero (es shadow-stack ha una priorità più alta o si innalza il sigfault)?
posta AseN 16.10.2016 - 21:31
fonte

2 risposte

2

Intel CET protegge dalla programmazione Return Oriented, non da buffer overflow di per sé. Il suo compito è di assicurarsi che ogni istruzione RET ritorni allo stesso indirizzo da cui proviene l'istruzione CALL corrispondente, e il gioco è fatto. Per fare ciò, l'hardware mantiene una sezione di memoria chiamata "shadow stack" che è fuori dalla portata del programma stesso. Ogni istruzione CALL trasferisce l'indirizzo di ritorno appropriato nello stack shadow e ogni RET preleva il valore superiore dallo shadow stack e interrompe il processo se tale valore non è uguale al valore restituito nello stack effettivo.

La programmazione orientata al ritorno è un modo per aggirare la tecnologia DEP (o NX). Dato che con DEP non puoi semplicemente inserire più codice eseguibile, puoi invece utilizzare ROP per sovrascrivere gli indirizzi di ritorno e stringere insieme i frammenti del codice del programma in un ordine che gli consente di eseguire le tue offerte.

Gli overflow del buffer vengono utilizzati per iniettare payload nello spazio di memoria di un processo e tali payload possono essere certamente payload ROP. Ma non esiste una relazione fondamentale tra buffer overflow e Intel CET.

    
risposta data 17.11.2016 - 06:00
fonte
0

Non ne so molto di CET, ma fino a quando non avrai una risposta più autorevole, questo potrebbe aiutare:

  1. Funziona con altri difetti di corruzione della memoria (ad esempio, utente dopo gratuito). Ma il suo unico scopo è la sicurezza.
  2. Lo stack canary è una tecnica totalmente separata e normalmente avresti entrambi abilitato.
  3. La CPU genererà un interrupt. Il sistema operativo può decidere come gestirlo, sebbene terminare il processo sembri l'unica azione sensata.
risposta data 17.10.2016 - 09:07
fonte

Leggi altre domande sui tag