.NET平台的安全漏洞?

时间:2008-12-23 11:49:35

标签: .net security

我正在研究.NET安全性。大多数消息来源只描述了.NET安全机制,但是甚至没有任何可能的漏洞或事情要记住。你知道.NET平台上的任何安全问题吗?

5 个答案:

答案 0 :(得分:5)

.NET世界中安全问题的主要来源是使用它的开发人员。使用任何框架编写应用程序都很容易,.NET框架也不是更好。

除此之外,我能想到的唯一主要问题是使用String而不是SecureString来存储敏感数据(如密码)的所有控件。 .NET框架的每个版本都比上一个版本好,但我认为仍有几个常用控件不使用它们。

SecureString可以被认为是存储在加密内存中的String,在使用后会从内存中删除。由于.NET中的字符串是不可变的,因此任何新字符串都将存储在共享位置的内存中,以便具有相同值的新字符串可以共享该内存位置。这意味着存储在字符串中的敏感数据相对容易掌握。

答案 1 :(得分:4)

您可以查看Secunia。它们显示了.NET 2.0的14个漏洞,未修补为零。

答案 2 :(得分:3)

你真的需要查看Keith Brown的excellent book on the topic,这是一个很好的起点。到目前为止已经10岁了,但概念没有改变。

答案 3 :(得分:0)

对于一个非常有趣但不一定可利用的(因为你无论如何都需要root访问权限),请查看Erez Metula的this talk at this year's Blackhat(嗯,现在正在进行),使用一些技术来破解。 .NET Framework并实现“.NET Rootkit”。

答案 4 :(得分:0)

以下是MS09-061的漏洞利用。

  

在我的示例类型安全漏洞中,我   使用工会来绕过类型安全。   那不是一个真正的安全   漏洞因为这样的联盟   需要完全信任。但是,如果我们   可以结合两个不同的代表   类型,我们可以做同样的,因为   缺少类型检查这是   可能的。

     

如果你选择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;
    }

这种情况再次发生的可能性很低恕我直言。