CET & Shadow Stack
Last updated
Last updated
Impara e pratica il hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
CET è una funzionalità di sicurezza implementata a livello hardware, progettata per contrastare attacchi comuni 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 malevolo o per concatenare pezzi di codice benigno in un modo che esegue un'azione malevola.
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 contrassegnate esplicitamente come destinazioni legali per i rami indiretti. Questo 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 restituisce, l'indirizzo di ritorno viene convalidato rispetto allo shadow stack, impedendo agli attaccanti di sovrascrivere gli indirizzi di ritorno nello stack per dirottare il flusso di controllo.
Lo shadow stack è uno stack dedicato utilizzato esclusivamente per memorizzare gli indirizzi di ritorno. Funziona 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 nello 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 loro di sovrascrivere puntatori o indirizzi di ritorno nello stack. Direzionando il flusso verso sequenze di gadget di codice esistente o gadget di programming orientato 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. Questo rende impossibile per gli 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 nello stack normale, la discrepanza verrà rilevata confrontando l'indirizzo corrotto con la copia sicura memorizzata nello shadow stack al momento del ritorno da una funzione. Se gli indirizzi non corrispondono, il programma può terminare o adottare altre misure di sicurezza, impedendo il successo dell'attacco.
Impara e pratica il hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)