Out of Control (CET) call-site reuse "Out of Control" kernel writeup¶
Klasik Out-of-Control call-site fikrini Intel CET çağına uygulamak: IBT coarse-grained olduğundan (
ENDBRişaretli herhangi bir entry legal bir forward target'tır) ve shadow stack yalnızca return'leri kısıtladığından, call-preceded / entry-point gadget reuse, CET-korumalı koda karşı residual bir saldırı yüzeyi olarak kalır.
Mechanism¶
Note
Intel CET'in iki yarısı vardır: her return address'i kopyalayan ve
on-stack kopya kurcalanırsa fault'layan (#CP) bir shadow stack (backward
edge) ve her indirect call/jmp'ın bir ENDBR64/ENDBR32 instruction'ına
inmesini gerektiren Indirect Branch Tracking / IBT (forward edge). Önemli
olan şu: IBT, CFI'nın en zayıf biçimidir: herhangi bir indirect branch,
herhangi bir ENDBR işaretli location'ı target edebilir — per-call-site bir
target set değil, tek bir equivalence class vardır. Bu, yapısal olarak 2014
Out of Control paper'ının Entry-Point (EP) gadget'larıyla
kırdığı aynı coarse policy'dir, şimdi donanıma karşı yeniden ifade edilmiş:
her ENDBR bir EP gadget adayıdır.
Shadow stack, klasik Call-Site (CS) / ROP gadget yolunu kapatır — return'ler gerçek
caller'la eşleşmelidir — bu yüzden CET tek başına coarse CFI'dan daha güçlüdür.
Residual yüzey forward edge'tedir: ENDBR işaretli entry'ler arasında COP/JOP
tarzı zincirleme ve compatibility özelliklerinin istismarı.
Walkthrough¶
Warning
Bu kayıt kavramsaldır. Coarse IBT'nin kamuoyunda tartışılan zayıflıklarını yakalar (özellikle aşağıdaki grsecurity analizi); belirli bir kamuya açık kernel CET exploit'ini reprodüksiyonu değildir. Gadget-zincirleme adımlarını, doğrulanmış bir PoC değil, saldırının genel şekli olarak gör.
Residual forward-edge surface under CET/IBT
-------------------------------------------
1. IBT marks every indirect-call target with ENDBR64 (single class).
2. Any indirect call can reach any ENDBR -> EP-gadget-style dispatch survives.
3. Legacy Code Bitmap allows non-IBT (legacy) code regions -> mixed paths
reintroduce un-tracked indirect branches.
4. Shadow stack blocks ret-based (CS) chaining, pushing attackers toward
call/jmp-oriented (COP/JOP) reuse within the ENDBR target set.
grsecurity analizi, bu single-class IBT'yi, on binlerce farklı pointer/function sınıfı türeten (Chromium için bildirildiğine göre 30.000'den fazla function-pointer sınıfı ve 47.000 function sınıfı) fine-grained RAP ile karşılaştırır — "herhangi bir ENDBR"den kat kat daha sıkı.
Detection¶
- ELF CET işaretleri
readelf -n(CET property note'ları) üzerinden görünür; IBT'nin yokluğu ya da legacy-bitmap region'larının varlığı yüzeyi genişletir. - Bir
#CP(control-protection) fault'u, yakalanan bir shadow-stack mismatch'ini ya da eksik-ENDBRbir indirect branch'i gösterir.
Mitigation¶
ENDBRtarget sınıfını küçültmek için coarse IBT'yi FineIBT ya da RAP gibi fine-grained forward CFI ile birlikte kullan.- Backward-edge integrity için shadow stack'i etkin tut; shadow stack'ten sağ çıkan forward-edge reuse teknikleri için ayrıca bkz. shadow-stack-aware ROP ve COOP for Intel CET bypass.
- Hiçbir un-tracked code path kalmaması için Legacy Code Bitmap region'larını minimize et / ortadan kaldır.