CET & Shadow Stack
Last updated
Last updated
Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
CET è una funzionalità di sicurezza implementata a livello hardware, progettata per contrastare comuni attacchi di dirottamento del flusso di controllo come Return-Oriented Programming (ROP) e Jump-Oriented Programming (JOP). Questi tipi di attacchi manipolano il flusso di esecuzione di un programma per eseguire codice dannoso o concatenare insieme pezzi di codice benigno in modo da eseguire un'azione dannosa.
CET introduce due funzionalità principali: Indirect Branch Tracking (IBT) e Shadow Stack.
IBT garantisce che i salti e le chiamate indirette vengano effettuati verso destinazioni valide, che sono esplicitamente contrassegnate come destinazioni legali per i rami indiretti. Ciò viene realizzato attraverso l'uso di un nuovo set di istruzioni che contrassegna le destinazioni valide, impedendo così agli attaccanti di deviare il flusso di controllo verso posizioni arbitrarie.
Shadow Stack è un meccanismo che fornisce integrità per gli indirizzi di ritorno. Mantiene una copia sicura e nascosta degli indirizzi di ritorno separata dallo stack di chiamata regolare. Quando una funzione ritorna, l'indirizzo di ritorno viene convalidato rispetto allo shadow stack, impedendo agli attaccanti di sovrascrivere gli indirizzi di ritorno sullo stack per dirottare il flusso di controllo.
Lo shadow stack è uno stack dedicato utilizzato esclusivamente per memorizzare gli indirizzi di ritorno. Lavora insieme allo stack regolare ma è protetto e nascosto dall'esecuzione normale del programma, rendendo difficile per gli attaccanti manometterlo. L'obiettivo principale dello shadow stack è garantire che eventuali modifiche agli indirizzi di ritorno sullo stack convenzionale vengano rilevate prima che possano essere utilizzate, mitigando efficacemente gli attacchi ROP.
Gli attacchi ROP e JOP si basano sulla capacità di dirottare il flusso di controllo di un'applicazione sfruttando vulnerabilità che consentono di sovrascrivere puntatori o indirizzi di ritorno sullo stack. Indirizzando il flusso verso sequenze di gadget di codice esistenti o gadget di programmazione orientata al ritorno, gli attaccanti possono eseguire codice arbitrario.
La funzionalità IBT di CET rende questi attacchi significativamente più difficili garantendo che i rami indiretti possano saltare solo a indirizzi che sono stati esplicitamente contrassegnati come destinazioni valide. Ciò rende impossibile agli attaccanti eseguire gadget arbitrari distribuiti nel binario.
Lo shadow stack, d'altra parte, garantisce che anche se un attaccante può sovrascrivere un indirizzo di ritorno sullo stack normale, la discrepanza verrà rilevata confrontando l'indirizzo corrotto con la copia sicura memorizzata nello shadow stack al ritorno da una funzione. Se gli indirizzi non corrispondono, il programma può terminare o adottare altre misure di sicurezza, impedendo all'attacco di avere successo.
Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)