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 2 users
Status: Fixed
Owner:
Email to this user bounced
Closed: Jun 2015
Cc:



Sign in to add a comment
Flash: out-of-bounds write in ShaderParameter resolution
Reported by cevans@google.com, Apr 8 2015 Back to list
When running the attached test case, you'll often see a crash on a bad write, perhaps looking a little like this (Linux x64):

Program received signal SIGSEGV, Segmentation fault.
0x00007fad007f731b in ?? ()
=> 0x00007fad007f731b:	mov    %eax,0x10(%rdx,%rcx,4)
rax            0x41414141	1094795585
rdx            0x7facfe38a048	140380976226376
rcx            0x2faf085	50000005

The attacker actually controls the value being written (eax) and the bad out-of-bounds index (rcx).

The cause is that ShaderParameter resolution has a bug. Each ShaderParameter patches the shader bytecode in order to set an input parameter value. Unfortunately, if a ShaderParameter from a longer program is associated with a ShaderData for a shorter program, the patch-up location goes out-of-bounds relative to the short program.


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.

 
ShaderParameterSwitcheroo.swf
995 bytes Download
ShaderParameterSwitcheroo.as
2.4 KB Download
Comment 1 by cevans@google.com, Apr 14 2015
Labels: Id-3571
Comment 2 by cevans@google.com, Jun 4 2015
Labels: ​CVE-2015-3105
Comment 3 by cevans@google.com, Jun 6 2015
Attaching libpepflashplayer.cros.41.0.2272.102.so.gz, which is the Pepper Flash Linux plug-in from Chrome OS v41.0.2272.102, and Flash version 17.0.0.134.

This version will be used as a basis for some exploitation examples.
Comment 4 by cevans@google.com, Jun 6 2015
libpepflashplayer.cros.41.0.2272.102.so.bz2
9.7 MB Download
Comment 5 by cevans@google.com, Jun 6 2015
(Actually attached a .bz2 compressed version in order to not hit the 10MB attachment limit)
Comment 7 by cevans@google.com, Jun 11 2015
libpepflashplayer.cros.41.0.2272.102.so depends on libstdc++.so.6.0.20, attaching that here too.
libstdc++.so.6.0.20
1.0 MB Download
Comment 8 by cevans@google.com, Jun 26 2015
Labels: -Restrict-View-Commit
Added tradition, unreliable exploit that uses Vector.<uint>
ShaderParameterOOBWriteExploit.as
13.1 KB Download
Comment 9 by cevans@google.com, Jul 10 2015
Attaching 100% reliable infoleak which is achieved using intra-chunk heap corruption from this bug.
ShaderParameterVtableLeak.as
5.3 KB Download
Sign in to add a comment