为什么不安全的代码上下文(与指针操作有关)在C#中存在安全风险?

镍磷

我需要调用C库函数,该函数将指针作为一个C#程序的参数。在C#中,我们需要使用#unsafe关键字来保护指针操作Microsoft C#文档说使用指针会导致稳定性和安全性问题。

在公共语言运行库(CLR)中,不安全代码称为不可验证代码。C#中不安全的代码不一定很危险;它只是安全性不能被CLR验证的代码。因此,CLR仅在完全可信的程序集中执行不安全的代码。如果使用不安全的代码,则有责任确保您的代码不会带来安全风险或指针错误。

而文档说

使用不安全的代码会带来安全性和稳定性风险。

我是C#语言的新手。在UNIX环境之前和之前,我只使用C语言工作。我了解指针不正确会带来稳定性问题。它可能会使程序/ OS崩溃或可能导致意外结果。

这些是我的问题:

1)我不了解指针操作如何导致安全问题。我唯一能想到的就是调用包含恶意代码的函数指针,但是此Stack溢出链接表示调用函数指针不需要不安全的上下文(如果理解错误,请纠正我)。那么,禁用指针操作将如何提高安全性呢?

2)我们可以从C#程序中调用C函数,这些C函数可能包含恶意代码。CLR可以检测到此安全漏洞吗?

维维克

滥用指针的安全风险的一个例子是释放后使用此问题的一个示例是Chrome中最近发现的安全问题

我对C#并不是很熟悉,但是我想CLR不会“理解” C代码,而是直接执行它。因此,我认为CLR无法分析/检测您要使用的C代码的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章