Triangulating TrueType Fonts On macOS: Reconstructing CVE-2023-41990
Where
Talks
Objective by the Sea v7.0
Duration
42 min
Traces a macOS font rendering bug from an undocumented TrueType instruction to memory corruption, rebuilt without a sample.
Summary
The talk starts from the Operation Triangulation campaign against iOS devices, where a font embedded in a PDF was reportedly the initial entry point. Public reporting only said it abused an undocumented TrueType bytecode instruction in Apple's font renderer, and no exploit sample was available. Because Apple removed the instruction outright, patch diffing offered nothing, so the vulnerability had to be rediscovered by hand.
The middle of the talk covers how hinted fonts rely on a bytecode interpreter, and why macOS usually skips that interpreter in favour of auto-hinting. The researcher found that two font properties push the renderer onto the slow interpreter path, then inserted the hidden instruction with font tooling and confirmed it could be reached in a debugger. Reverse engineering showed the instruction takes three parameters and walks point arrays that must stay synchronised. A search loop never checks its starting index, so an out-of-bounds index can reach neighbouring memory, though the value written is only partly controllable.
The closing section looks at variant analysis across other undocumented opcodes, and at why a practical detection signature would require parsing the font format in depth. Fuzzers struggle with this code unless they are structure-aware and steered toward the interpreter. The PDF path also accepts fonts whatever type the document declares, which widens the surface a defender should consider.
Related talks
Talks·44 min
James Henderson
Shows how skipped protocol steps let an IPMI management service bypass authentication, using reverse engineering, fuzzing and debugging.
Talks·25 min
Stanislav Dashevskyi · Francesco La Spina
Shows how researchers reach root on a locked-down TP-Link router by reverse engineering its modified Lua bytecode.
Talks·16 min
Demonstrates exploiting password management software to retrieve stored credentials from process memory.


