
Proof-of-Concept und Write-up für die Sicherheitslücke CVE-2022-32832, die in iOS 15.6 behoben wurde.
CVE-2022-32832 ist eine Schwachstelle in der externen Methode AppleAPFSUserClient::methodDeltaCreateFinalize (Selector 49). Hier ist die Dekompilation vor dem Patch:
__int64 __cdecl AppleAPFSUserClient::methodDeltaCreateFinalize(AppleAPFSUserClient *this, void *a2, IOExternalMethodArguments *args)
{
void *ctx;
__int64 result;
ctx = this->deltaCreateCtx;
if ( !ctx )
return 0xE00002D8LL;
AppleAPFSContainer::deltaCreateTeardown(ctx);
result = 0LL;
this->deltaCreateCtx = 0LL;
return result;
}
AppleAPFSUserClient::externalMethod verwendet keine Synchronisationstechniken, um externe Methodenaufrufe zu serialisieren. Das bedeutet, dass ein Angreifer durch Rennen zweier Aufrufe von AppleAPFSUserClient::methodDeltaCreateFinalize auf demselben Userclient einen Double-Free der und zugehöriger Eigenschaften verursachen kann, da beide in der Lage sind, (die Methode, die für das Freigeben der zuständig ist) aufzurufen, bevor auf gesetzt wird.
delta_create_ctx_tAppleAPFSContainer::deltaCreateTeardowndelta_create_ctx_tthis->deltaCreateCtxNULLUm dies auszulösen, muss ein Angreifer zunächst einen „Delta-Create-Kontext“ auf dem Userclient mit der externen Methode AppleAPFSUserClient::methodDeltaCreatePrepare (Selector 36) erstellen. Dies erfordert ein nicht eingehängtes Volume, damit es funktioniert. Ein normaler Exploit-Ablauf erfordert daher, dass der Angreifer auch ein Zielvolume mit der externen Methode AppleAPFSUserClient::methodVolumeCreate erstellt, was Superuser-Rechte erfordert. Aus diesem Grund beschrieb Apple die Auswirkungen der Schwachstelle wie folgt:
Eine App mit Root-Rechten kann möglicherweise beliebigen Code mit Kernel-Rechten ausführen
Dieses Repository enthält einen Proof-of-Concept-Exploit für dieses Problem, der auf anfälligen macOS-Versionen einen Kernel-Panic verursacht, indem die Referenzanzahl eines Kernel-Objekts unterlaufen wird. Dieser Exploit muss aus den oben genannten Gründen als Root ausgeführt werden.
CVE-2022-32832 wurde gepatcht, indem IOLockLock- und IOLockUnlock-Aufrufe zu AppleAPFSUserClient::methodDeltaCreateFinalize hinzugefügt wurden, um den gefährdeten Code zu schützen.