.NET平台的安全漏洞?

7

我正在研究.NET安全性。大部分资源只是描述了.NET安全机制,但没有提到可能存在的漏洞或需要注意的事项。您知道.NET平台上的任何安全问题吗?

5个回答

5
.NET世界中安全问题的主要来源是使用它的开发人员。使用任何框架编写应用程序都很容易,.NET框架也不例外。
除此之外,我能想到的唯一一个主要问题是所有使用String而不是SecureString存储敏感数据(如密码)的控件。每个.NET框架版本都比上一个更好,但我认为仍有几个常见控件没有使用它们。
SecureString可以被认为是存储在加密内存中并在使用后从内存中删除的字符串。由于.NET中的字符串是不可变的,任何新字符串都将存储在共享位置的内存中,使得相同值的新字符串可以共享该内存位置。这意味着存储在字符串中的敏感数据相对容易被获取。

4

您可以查看Secunia。他们展示了.NET 2.0的14个漏洞,其中没有一个未修补。


3

你真的需要查看Keith Brown关于这个主题的优秀书籍,这是一个很好的起点。虽然它已经十年了,但概念没有改变。


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;
    }

在我看来,这种情况再次发生的可能性很低。


0

如果你对编程有兴趣,可以看看 Erez Metula 在今年的 Blackhat 大会上的演讲(正在进行中)。他介绍了一些技术,可以利用这些技术来入侵 .NET Framework 并实现“.NET Rootkits”。不过需要注意的是,这些技术需要 root 访问权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接