| Reporter | Title | Published | Views | Family All 35 |
|---|---|---|---|---|
| MacOS Kernel 10.12 - Double vm_deallocate in Userspace MIG Code Use-After-Free Exploit | 23 Dec 201600:00 | – | zdt | |
| MacOS Kernel < 10.12.2 / iOS < 10.2 - ipc_port_t Reference Count Leak Due to Incorrect externa | 23 Dec 201600:00 | – | zdt | |
| iOS / macOS - task_swap_mach_voucher() Use-After-Free Exploit | 25 Jan 201900:00 | – | zdt | |
| Mac OS X 10.x < 10.12.2 Multiple Vulnerabilities | 16 Dec 201600:00 | – | nessus | |
| Apple iOS < 10.2 Multiple Vulnerabilities | 5 Jan 201700:00 | – | nessus | |
| Apple TV < 10.1 Multiple Vulnerabilities | 5 Jan 201700:00 | – | nessus | |
| Apple iOS < 10.2 Multiple Vulnerabilities | 14 Dec 201600:00 | – | nessus | |
| macOS 10.12.x < 10.12.2 Multiple Vulnerabilities | 16 Dec 201600:00 | – | nessus | |
| About the security content of watchOS 3.1.3 | 23 Jan 201700:00 | – | apple | |
| About the security content of iOS 10.2 | 12 Dec 201600:00 | – | apple |
I have previously detailed the lifetime management paradigms in MIG in the writeups for:
CVE-2016-7612 [https://bugs.chromium.org/p/project-zero/issues/detail?id=926]
and
CVE-2016-7633 [https://bugs.chromium.org/p/project-zero/issues/detail?id=954]
If a MIG method returns KERN_SUCCESS it means that the method took ownership of *all* the arguments passed to it.
If a MIG method returns an error code, then it took ownership of *none* of the arguments passed to it.
If an IOKit userclient external method takes an async wake mach port argument then the lifetime of the reference
on that mach port passed to the external method will be managed by MIG semantics. If the external method returns
an error then MIG will assume that the reference was not consumed by the external method and as such the MIG
generated coode will drop a reference on the port.
IOSurfaceRootUserClient external method 17 (s_set_surface_notify) will drop a reference on the wake_port
(via IOUserClient::releaseAsyncReference64) then return an error code if the client has previously registered
a port with the same callback function.
The external method's error return value propagates via the return value of is_io_connect_async_method back to the
MIG generated code which will drop a futher reference on the wake_port when only one was taken.
This bug is reachable from the iOS app sandbox as demonstrated by this PoC.
Tested on iOS 11.0.3 (11A432) on iPhone 6s (MKQL2CN/A)
Tested on MacOS 10.13 (17A365) on MacBookAir5,2
------------------------------------------------------
async_wake exploit attached.
Gets tfp0 on all 64-bit devices plus an initial PoC local kernel debugger.
See the README and kdbg.c for details.
Proof of Concept:
https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/43320.zipData
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation