Microsoft Silverlight 5 suffers from invalid typecast and memory disclosure vulnerabilities that, when leveraged together, allow for arbitrary code execution. A memory disclosure vulnerability exists in the public WriteableBitmap class from System.Windows.dll. This class allows reading of image pixels from the user-defined data stream via the public SetSource() method. BitmapSource.ReadStream() allocates and returns byte array and a count of array items as out parameters. These returned values are taken from the input stream and they can be fully controlled by the untrusted code. When returned "count" is greater than "array.Length", then data outside the "array" are used as input stream data by the native BitmapSource_SetSource() from agcore.dll. Later all data can be viewed via the public WriteableBitmap.Pixels[] property. Exploitation details related to these findings were purchased through the Packet Storm Bug Bounty program.
3bb4d92511f689e34dee499a420b6463240d5b229dbaa5033abb953fb0ba3421
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
+------------------------------------------------------------------------------+
| Packet Storm Advisory 2013-1022-1 |
| http://packetstormsecurity.com/ |
+------------------------------------------------------------------------------+
| Title: Microsoft Silverlight Invalid Typecast / Memory Disclosure |
+--------------------+---------------------------------------------------------+
| Release Date | 2013/10/22 |
| Advisory Contact | Packet Storm (advisories@packetstormsecurity.com) |
| Researcher | Vitaliy Toropov |
+--------------------+---------------------------------------------------------+
| System Affected | Microsoft Silverlight |
| Versions Affected | Prior to 5.1.20125.0 (MS13-022) |
| | Prior to 5.1.20913.0 (MS13-087) |
| Related Advisory | MS13-022 / MS13-087 |
| Related CVE Number | CVE-2013-0074 / CVE-2013-3896 |
| Vendor Patched | 2013/03/12 / 2013/10/08 |
| Classification | 1-day |
+--------------------+---------------------------------------------------------+
+----------+
| OVERVIEW |
+----------+
The release of this advisory provides exploitation details in relation to
known patched vulnerabilities in Microsoft Silverlight. These details were
obtained through the Packet Storm Bug Bounty program and are being released
to the community.
+------------------------------------------------------------------------------+
+---------+
| DETAILS |
+---------+
A memory disclosure vulnerability exists in the public WriteableBitmap class
from System.Windows.dll. This class allows reading of image pixels from the
user-defined data stream via the public SetSource() method.
BitmapSource.ReadStream() allocates and returns byte array and a count of array
items as out parameters. These returned values are taken from the input stream
and they can be fully controlled by the untrusted code. When returned "count"
is greater than "array.Length", then data outside the "array" are used as input
stream data by the native BitmapSource_SetSource() from agcore.dll. Later all
data can be viewed via the public WriteableBitmap.Pixels[] property.
+------------------------------------------------------------------------------+
+------------------+
| PROOF OF CONCEPT |
+------------------+
The full exploit code demonstrating code execution is available here:
http://packetstormsecurity.com/files/123731/
+------------------------------------------------------------------------------+
+---------------+
| RELATED LINKS |
+---------------+
http://technet.microsoft.com/en-us/security/bulletin/ms13-022
http://technet.microsoft.com/en-us/security/bulletin/ms13-087
+------------------------------------------------------------------------------+
+----------------+
| SHAMELESS PLUG |
+----------------+
The Packet Storm Bug Bounty program gives researchers the ability to profit
from their discoveries. You can get paid thousands of dollars for one day
and zero day exploits. Get involved by contacting us at
getpaid@packetstormsecurity.com or visit the bug bounty page at:
http://packetstormsecurity.com/bugbounty/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.14 (GNU/Linux)
iEYEARECAAYFAlJnHfEACgkQrM7A8W0gTbFKPACdGSp3GhRyvUjEzrNnlNejkGt+
pzQAoIeywymRBuPYbO9+OVGT59miZKuC
=1UST
-----END PGP SIGNATURE-----