Sploitus

iomfb-exploit

kitploit ┬╖ 2026-08-25

Exploit Code

MARKDOWN32 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-JSHERMAN212-IOMFB-EXPLOIT
рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рд╣реИ: https://jsherman212.github.io/2021/11/28/popping_ios14_with_iomfb.html

CVE-2021-30807 рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреНрд▓реЙрдЗрдЯред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рдЬреЗрд▓рдмреНрд░реЗрдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ iOS рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯреНрдпреВрдирд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╣реЗрддреБ рдХреЛрдИ info leak рдирд╣реАрдВ рд╣реИред

A11 рдФрд░ рдЙрд╕рд╕реЗ рдиреАрдЪреЗ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрди рдХрд░рдиреЗ рд╣реЗрддреБ, xnuspy рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pongo рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ `SAMPLING_MEMORY=1 make -B` рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдб рдХрд░реЗрдВред рдпрд╣ рдПрдХ рдЯреЗрд╕реНрдЯ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ рдЬреЛ `kernel_memory_allocate` рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдИ рдЧрдИ рдореЗрдореЛрд░реА рдХреЛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рдЙрди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рд░реЗрдВрдЬ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

root@kitploit:~
    
    
    sample_kernel_map: 0xffffffe8ebe9c000 [0x10000 bytes from behind]
    sample_kernel_map: to add to alloc_averager:
    [0xffffffe8ce934000, 0xffffffe8ebf98000],
    

(рдмрд╕ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдИ рдЧрдИ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ)

рдЗрд╕ рдЯреЗрд╕реНрдЯ рдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмреВрдЯ рд╣реЛрдиреЗ рдХреЗ 30 рд╕реЗрдХрдВрдб рдмрд╛рдж рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

`alloc_averager.py` рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рд╕реИрдВрдкрд▓ рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдиреЗ рдлреЛрди рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдП рдереЗред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдЬ рдХреЗ рд╕рднреА рдФрд╕рддреЛрдВ рдХрд╛ рдФрд╕рдд рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ "samples list" рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд░реЗрдВрдЬ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕ рдЯреЗрд╕реНрдЯ рдХреЛ рдХреБрдЫ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рддрдХ рдХрд┐ рдЙрд╕ рд╕реВрдЪреА рдореЗрдВ 5-10 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рди рд╣реЛ рдЬрд╛рдПрдБред `alloc_averager.py` рд╕реВрдЪреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рдЕрдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП рд╕рдлрд▓рддрд╛ рджрд░ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рджреЗрдЧрд╛ред рдпрджрд┐ рд╕рдлрд▓рддрд╛ рджрд░ рдЖрдкрдХреЛ рдкрд╕рдВрдж рдЖрддреА рд╣реИ, рддреЛ рдЙрд╕ рдЕрдиреБрдорд╛рди рдХреЛ рд▓реЗрдВ рдФрд░ `IOMobileFramebufferUserClient.c` рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ `GUESSED_OSDATA_BUFFER_PTR` рдХреЗ рдорд╛рди рдХреЛ рдЗрд╕рд╕реЗ рдмрджрд▓ рджреЗрдВред

рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ outliers (рдЕрд╕рд╛рдорд╛рдиреНрдп рдорд╛рди) рд╢рд╛рдорд┐рд▓ рди рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЯреЗрд╕реНрдЯ рдХреЛ рдХреБрдЫ рдмрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рдПрдХ рдРрд╕реА рд░реЗрдВрдЬ рдорд┐рд▓реЗрдЧреА рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдмрд╛рдХреА рд░реЗрдВрдЬреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣рдЯрдХрд░ рджрд┐рдЦрддреА рд╣реИред

рдЗрд╕ рдЯреЗрд╕реНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕/рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП offsets рдЦреЛрдЬрдиреЗ рд╣реЛрдВрдЧреЗред

рдкрд╣рд▓реЗ, `kernel_memory_allocate` рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ `kernel_memory_allocate: VM is not ready` рдХрд╛ xref рдХрд░реЗрдВред рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ offset рд╣реЛ, рддреЛ `install_kernel_memory_alloc_hook` рдХреЗ рдЕрдВрджрд░ `kma` рдХрд╛ рдорд╛рди рдЙрд╕ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

рджреВрд╕рд░реЗ, рдЯреЗрд╕реНрдЯ рдХреЛ XNU рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп allocations рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реВрдБред рд╡рд╣ рдПрдбреНрд░реЗрд╕ `OSData::initWithCapacity` рдХреЗ рдЕрдВрджрд░ рд╣реИред рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ `"OSData"` рдХрд╛ xref рдХрд░рдХреЗ OSData рдХрд╛ vtable рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкрд╣рд▓рд╛ xref рдПрдХ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ OSData::MetaClass рдХреЗ vtable рдХрд╛ xref рд╣реИред рдЙрд╕ vtable рдХреЗ рдареАрдХ рдКрдкрд░ OSData рдХрд╛ vtable рд╣реИ, рдФрд░ `OSData::initWithCapacity` `+0x78` рдкрд░ рд╣реИред

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ `OSData::initWithCapacity` рд╣реЛ, рддреЛ `kernel_memory_allocate` рдХрд╛ рдПрдХрдорд╛рддреНрд░ `BL` рдЦреЛрдЬреЗрдВ рдФрд░ _рдЙрд╕рдХреЗ рдареАрдХ рдиреАрдЪреЗ_ рд╡рд╛рд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ offset рд▓реЗрдВред `kernel_hooks.c` рдХреЗ рдЕрдВрджрд░, рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдПрдХрдорд╛рддреНрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдореМрдЬреВрдж рдПрдХрдорд╛рддреНрд░ if рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдЙрд╕ offset рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

A12+ рдХреЗ рд▓рд┐рдП Correlium рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред