Skip to content

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):

  1. 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).
  2. Arena'ya işaret eden fake bir chunk craft etmek için fastbin poisoning + partial overwrite.
  3. 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.
  4. Bir target pointer'ı __malloc_hook/one_gadget'a doğru partial-overwrite et.
  5. 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 bk write'ları ve __malloc_hook yakı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ı.

References