New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 10 users
Status: Fixed
Owner:
Email to this user bounced
Closed: Feb 2015
Cc:



Sign in to add a comment
OS X IOKit kernel memory disclosure due to lack of bounds checking in IOUSBControllerUserClient::ReadRegister
Project Member Reported by ianbeer@google.com, May 12 2014 Back to list
This one requires local root so isn't maybe so interesting on OS X since root is still equivalent to kernel code execution anyway. It's a different story on iOS, but I don't have any iOS devices to test on (http://theiphonewiki.com/wiki/Kernel has the output of kextstat on iOS 6 and the same driver (IOUSBFamily) is listed.) I'll let Apple figure out if this is something to worry about on iOS.

The IOUSBController userclient external method 8 is IOUSBControllerUserClient::ReadRegister. This method fails to bounds check its first argument which is used directly as an offset into kernel memory:

mov     ecx, r15d <-- r15d controlled
mov     eax, [rax+rcx]
mov     [r14], eax <-- will get returned to userspace

Severity Low because of the root requirement.
 
usb_controller_read_register.c
1.9 KB Download
Project Member Comment 1 by ianbeer@google.com, May 12 2014
Labels: Id-606131829
Project Member Comment 2 by ianbeer@google.com, May 23 2014
Cc: lee...@google.com
Project Member Comment 3 by ianbeer@google.com, Aug 12 2014
Labels: -Restrict-View-Commit Deadline-90 PublicOn-2014-Aug-12 Deadline-Exceeded
Deadline exceeded - automatically derestricting
Project Member Comment 4 by ianbeer@google.com, Feb 5 2015
Labels: CVE-2014-8823 Fixed-2015-Jan-27
Status: Fixed
Project Member Comment 5 by ianbeer@google.com, Feb 5 2015
Apple advisory: http://support.apple.com/en-us/HT204244
Sign in to add a comment