
research on finding the bug and fix of CVE-2026-84616 and CVE-2026-84607
[!IMPORTANT] This repository is research-assisted by AI agents
[!NOTE]
Open Research
Contributions are welcome
iOS 27.0 advisory 149034, component AVEVideoEncoder: "A sandboxed app may be able to execute arbitrary code with kernel privileges" — "a race condition was addressed with improved state management." This writeup: where the fix lives and what it does.
Answer: a new per-frame state-consistency guard in com.apple.driver.AppleAVE2 that
compares the client's eEncType against the session's sEnc.eType and diverts the frame
on mismatch. The checked field is written by a lock-free chain — fix-by-validation, not fix-by-lock.
The fix did not land at GM. It landed in the beta 2 → beta 4 step of the iOS 27.0 cycle:
| step | what changed |
|---|---|
b8 → GM 24A435 | BTI only (the +0x2168 __text growth = 2148 new bti instrs; −40 bytes functional) |
| b1 → GM | +7463 instructions of real code — the beta cycle did the work |
| b2 → b4 | the fix step: +68 new strings = kernel-memory hardening sweep + the one new state check |
| b4 → b5 | MCTF feature work only |
0xfffffff008734d14 ldr w8, [x22, #0x58] ; client eEncType
0xfffffff008734d18 ldr w9, [x19, #0x270] ; session sEnc.eType
0xfffffff008734d1c cmp w8, w9 ; the new state-consistency guard
0xfffffff008734d20 b.ne → divert ; mismatch NEVER reaches frame processing
EncType mismatch with session — absent in beta 2, present from beta 4 on.sub_fffffff008733654.0xfffffff008737f98), and its writer chain (2 levels, ends at indirect dispatch) calls
no lock helpers — reader and writer live in different locking domains.The b2→b4 sweep also added ~22 integer-overflow guards on the AVE_CalcBufSizeOf*
buffer-size calculator family (pixel area, DPB, LRB, HSC/MCTF output, …):
ave.videoencoder / AppleVideoEncoder.bundle was not diffed across
the window (pre-fix copies live in the beta dyld shared caches).[!NOTE]
Disclaimer
All claims cite checkable artifacts; re-verify before trusting any of them. No exploit code is included. The fix has shipped in iOS 27.0 (24A435) — this repository documents already-patched code. use only for educational purposes. No exploit code.