docs: Cutter/rz-ghidra decompilation of the MTE gate and TLBI completion path
This commit is contained in:
1 parent
7da28702a7
commit
fc17f7af7d
1 file changed
+26
@@ -251,6 +251,32 @@ If a future iPhone build adds the DT property, the check runs and the window
|
|||||||
closes (panic `Failed to verify TLBI` on a still-pending GMMU TLBI). That is the
|
closes (panic `Failed to verify TLBI` on a still-pending GMMU TLBI). That is the
|
||||||
condition to test in the next firmware.
|
condition to test in the next firmware.
|
||||||
|
|
||||||
|
## Cutter / rz-ghidra decompilation
|
||||||
|
|
||||||
|
The open-source decompiler in Cutter 2.5.0 (`rizin` + `rz-ghidra`, no Java) was used
|
||||||
|
to confirm the two key functions. Raw `__TEXT_EXEC,__text` is loaded as ARM64, and
|
||||||
|
`retab` is patched to `ret` in a copy so the decompiler does not truncate.
|
||||||
|
|
||||||
|
MTE SK tag-page check (`0xfffffff0270d7028`, raw offset `0x23028`):
|
||||||
|
|
||||||
|
```c
|
||||||
|
if ((uint64_t)arg1 < *(uint64_t *)0xffffffffffffa218 ||
|
||||||
|
*(uint64_t *)0xffffffffffffa220 <= (uint64_t)arg1) {
|
||||||
|
func_0x0004b2ac(arg1); // outside the SK tag-page PA range: normal path
|
||||||
|
}
|
||||||
|
// inside the range: panic "MTE tag page containing SK tags is mapped"
|
||||||
|
```
|
||||||
|
|
||||||
|
TLBI completion path (`0xfffffff0270c7aac`, raw offset `0x13aac`): the decompiler
|
||||||
|
shows the verification state being read (`uVar15 >> bit & 1`), a countdown
|
||||||
|
(`uVar14`), and the GMMU invalidation issued through a code pointer inside the
|
||||||
|
loop; 27.0.1 lacks this block (function 264 vs 369 instructions).
|
||||||
|
|
||||||
|
The IOGPU method handlers (`s_new_resource` at raw offset `0x70a4`,
|
||||||
|
`s_submit_command_buffers` at `0x7434`) are PAC-heavy and the decompiler truncates
|
||||||
|
at the first `pacibsppc`/`braa`; disassembly is still available, but selector
|
||||||
|
recovery needs the dispatch table or a live kernel.
|
||||||
|
|
||||||
## Verification plan — GMMU TLBI completion race
|
## Verification plan — GMMU TLBI completion race
|
||||||
|
|
||||||
The static delta is real, but exploitability depends on keeping a DART client's
|
The static delta is real, but exploitability depends on keeping a DART client's
|
||||||
|
|||||||
Reference in new issue
Block a user