New issue
Advanced search Search tips
Starred by 1 user
Status: Fixed
Owner:
Closed: Dec 2016
Cc:



Sign in to add a comment
Android: mitigation bypass - the guard page creation in IOMX can fail
Project Member Reported by laginimaineb@google.com, Sep 7 2016 Back to list
Because of a design bug in IOMX, the user-supplied sizes in the GET_PARAMETER and SET_PARAMETER calls are discarded before calling in to the responsible OMX code-paths (see OMXNodeInstance.{get,set}Parameter). 

This has led to a variety of overflow-type bugs, including https://code.google.com/p/android/issues/detail?id=200821.

In order to mitigate these overflows, the buffers allocated for the user are extended by a single page, and that page is made inaccessible by calling:

 mprotect((char*)params + allocSize - pageSize, pageSize, PROT_NONE);

(see http://androidxref.com/7.0.0_r1/xref/frameworks/av/media/libmedia/IOMX.cpp#778)

However, the return value of mprotect here is not checked and the mprotect request may fail in extreme cases (for example, if the kernel is running low on memory).

If an attacker manages to cause this condition to occur, the trailing page will remain RW, which could re-introduce the old GET_PARAMETER/SET_PARAMETER bugs (allowing the attacker to overflow into potentially sensitive data).

This bug is subject to a 90 day disclosure deadline. If 90 days elapse
without a broadly available patch, then the bug report will automatically
become visible to the public.

 
Project Member Comment 1 by laginimaineb@google.com, Sep 23 2016
Android assigned AndroidID-31350239.
Project Member Comment 2 by laginimaineb@google.com, Sep 27 2016
Labels: CVE-2016-6717
Project Member Comment 3 by laginimaineb@google.com, Dec 1 2016
Labels: -Restrict-View-Commit
Status: Fixed
This issue was fixed in the November security update: https://source.android.com/security/bulletin/2016-11-01.html
Sign in to add a comment