CET & Shadow Stack
Last updated
Last updated
Ucz się i praktykuj Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i praktykuj Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
CET to funkcja bezpieczeństwa zaimplementowana na poziomie sprzętowym, zaprojektowana w celu zwalczania powszechnych ataków na kontrolę przepływu, takich jak Return-Oriented Programming (ROP) i Jump-Oriented Programming (JOP). Te rodzaje ataków manipulują przepływem wykonania programu, aby wykonać złośliwy kod lub połączyć ze sobą fragmenty nieszkodliwego kodu w taki sposób, aby wykonać złośliwą akcję.
CET wprowadza dwie główne funkcje: Indirect Branch Tracking (IBT) i Shadow Stack.
IBT zapewnia, że skoki i wywołania pośrednie są wykonywane do prawidłowych celów, które są jawnie oznaczone jako legalne miejsca docelowe dla skoków pośrednich. Osiąga się to za pomocą nowego zestawu instrukcji, które oznaczają prawidłowe cele, uniemożliwiając atakującym zmianę przepływu kontroli do dowolnych lokalizacji.
Shadow Stack to mechanizm zapewniający integralność adresów powrotu. Przechowuje zabezpieczoną, ukrytą kopię adresów powrotu oddzielnie od zwykłego stosu wywołań. Gdy funkcja zwraca wartość, adres powrotu jest weryfikowany względem shadow stack, uniemożliwiając atakującym nadpisanie adresów powrotu na stosie w celu przejęcia kontroli nad przepływem.
Shadow stack to dedykowany stos używany wyłącznie do przechowywania adresów powrotu. Działa obok zwykłego stosu, ale jest chroniony i ukryty przed normalnym wykonaniem programu, co sprawia, że trudno jest atakującym manipulować nim. Głównym celem shadow stack jest zapewnienie, że wszelkie modyfikacje adresów powrotu na zwykłym stosie zostaną wykryte, zanim zostaną użyte, skutecznie łagodząc ataki ROP.
Ataki ROP i JOP polegają na zdolności przejęcia kontroli nad przepływem aplikacji poprzez wykorzystanie podatności, które pozwalają na nadpisanie wskaźników lub adresów powrotu na stosie. Kierując przepływ do sekwencji istniejących gadżetów kodowych lub gadżetów programowania zorientowanego na powroty, atakujący mogą wykonać dowolny kod.
Funkcja IBT CET znacznie utrudnia te ataki, zapewniając, że skoki pośrednie mogą skakać tylko do adresów, które zostały jawnie oznaczone jako prawidłowe cele. Uniemożliwia to atakującym wykonanie dowolnych gadżetów rozproszonych w całym pliku binarnym.
Shadow stack z kolei zapewnia, że nawet jeśli atakujący może nadpisać adres powrotu na normalnym stosie, różnica zostanie wykryta podczas porównywania skorumpowanego adresu z bezpieczną kopią przechowywaną w shadow stack podczas powrotu z funkcji. Jeśli adresy się nie zgadzają, program może zakończyć działanie lub podjąć inne środki bezpieczeństwa, uniemożliwiając atakowi powodzenie.
Ucz się i praktykuj Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i praktykuj Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)