House of Pie¶
Self-repairing bir unsorted-bin attack üzerinden arena'nın top-chunk pointer'ının kontrolünü ele geçiren, sonra hiçbir info leak olmadan bir one_gadget'a inmek için ASLR'yi brute-force eden leakless bir glibc technique'i.
Mechanism¶
Note
House of Pie (House of Roman ile ilişkili) eski, pre-tcache / hook-taşıyan
glibc'yi hedefler ve stdout kapalı olsa bile bir information leak olmadan
code execution amaçlar. Temel fikir, unsorted bin'i yeniden kullanılabilir
bırakırken arena'nın top-chunk pointer'ına bir libc address yazan
self-repairing bir unsorted-bin attack'idir; partial-pointer overwrite'lar ve
bilinmeyen ASLR nibble'ları üzerinde bir brute force ile kombine edilir (anılan
başarı ~1/4096). Aşılan sınır heap allocator integrity'si artı ASLR'nin
probabilistik yenilmesidir: top-chunk pointer'ını kontrol ederek ve bir hook
target'ını kısmen overwrite ederek, bir one_gadget'a deneme başına sabit
olasılıkla ulaşılabilir.
Walkthrough¶
Kavramsal reçete (public writeup'tan):
- Main arena'da/yakınında fake size field'ları ve overlapping chunk'lar forge etmek için heap feng-shui (heap-grooming-feng-shui.md).
- Arena'ya işaret eden fake bir chunk craft etmek için fastbin poisoning + partial overwrite.
- Sonrasında bin'in self-repair ettiği (yeniden kullanılabilir) şekilde seçilen, top-chunk pointer'ına bir libc address yazan bir unsorted-bin attack.
- Bir target pointer'ı
__malloc_hook/one_gadget'a doğru partial-overwrite et. - one_gadget'ı tetiklemek için kalan ASLR bit'lerini brute-force et.
Warning
Bu __malloc_hook'a ve pre-Safe-Linking fastbin davranışına dayanır; glibc
2.32+ (Safe-Linking) veya 2.34+ (hook'lar kaldırıldı)'a uygulanmaz. Partial
overwrite'lar ASLR page alignment'ına bağlıdır.
Detection¶
- Aynı code path'ine vuran tekrarlı crash'ler/restart'lar — forking bir service'e karşı ASLR brute-force'unun imzası.
- Arena top'unu hedefleyen unsorted-bin
bkwrite'ları ve__malloc_hookyakınında partial-pointer overwrite'lar. - Tutarsız top-chunk size'ında allocator abort'ları.
Mitigation¶
- Modern glibc bunu zaten nötralize eder (≥2.34 hook removal, unsorted-bin integrity check'leri, tcache, Safe-Linking).
- Per-fork ASLR re-randomization veya crash-rate throttling brute force'u yener.
- Full ASLR + PIE'nin tutarlı şekilde etkin olması.