前置概念
- CET 技術
- Shadow stack: 從原先的 stack 在分離出 shadow stack 保存 return address,並且在 ret 執行的時候檢查是否相同,驗證完整性(Integrity)。
- IBT
- ENDBR instruction: 在 CET 保護下,確保 jmp, call 為有效的地址
- 工具
- Intel SDE (Intel® Software Development Emulator)
Intel SDE 下的一些特性
- SDE 啟動時, CET Control Status 可以用來找查 shadow stack 的位置,並且觀察 stack 是堆上 return address,當中 return address 是直接堆在另外一個 address 上。
技巧
- 預設透過 remote 無法直接找到 main,這裡可以透過 cat /proc/pid/maps 的方式找到 elf base 以方便 gdb 配置 break point
- 如何 debug SDE 參見 intel 官方文檔 Debugging Applications with Intel ® SDE
例題
- AIS3 EOF final RevengeOfTheIntel: 該題目透過 sde 啟動模擬 CET shadow stack (出題者 k1a)
- Writeup 參見 NCtfU 報告
總結
軟體模擬的 shadow stack 因為與程式共享相同的定址空間,因此可以改寫 Shadow Stack 的位置達成利用,實際效果上並不會與硬體內建一樣。
參考資料
Exploit Mitigation Intel Shadow Stack PWN