【发布时间】:2012-02-18 17:57:48
【问题描述】:
假设 C# 程序仅使用托管的 .NET 代码,那么该程序中是否可能存在缓冲区溢出安全漏洞?如果是这样,这种漏洞怎么可能存在?
【问题讨论】:
-
经典意义上的缓冲区溢出,还是任何类型的缓冲区溢出漏洞?
-
查看
unchecked和unsafe关键字。 -
@Dykam:从漏洞利用的意义上说。
-
虽然 .NET 可能难以创建传统的缓冲区溢出漏洞,即覆盖数据或代码,但它并不能保证正确处理异常。例如,如果用户输入 30 个字符的用户名,应用程序将其交给接受 16 个字符字段的存储过程,则应引发异常。 (没有人会因为静默截断而堕落,对吗?)此时仍由应用程序来做正确的事情,没有一个包罗万象的处理程序消除异常并通过假设用户已通过身份验证的代码。