Skip to content

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 (ENDBR iş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-ENDBR bir indirect branch'i gösterir.

Mitigation

  • ENDBR target 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.

References