在ASP.NET中停止整数溢出

时间:2011-07-29 19:50:31

标签: c# asp.net security integer-overflow .net-security

我们在工作中使用Acunetix对我们的应用程序进行安全扫描。最近我们遇到了以下Integer Vulnerabilities错误:

Integer Vulnerabilities

据我所知,报告似乎告诉我们,我们并未在查询字符串中停止integer overflow attacks。虽然我们确实使用最终解析为整数的查询字符串,但在我们使用它们之前,首先使用Convert.ToInt32()对它们进行加密然后解密并转换为int。我知道我们应该使用TryParse()代替,但即使黑客要输入一个高于max的整数值,他们也会在尝试解密之前失败,甚至尝试转换为整数,这是整数溢出的地方发生在我看来。这是除非在解密失败时发生错误?

我对此非常困惑,谷歌搜索并没有太多帮助,因为大多数都与c ++等非托管语言有关,而不是c#和asp.net。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我不认为这是一个整数溢出漏洞,我怀疑它是指整数,因为这是在查询字符串中操作的类型(虽然我知道你说它们是加密的)。如果您正在将不受信任的用户输入直接转换为整数而不是首先验证类型(如您所说,首先尝试TryParse),您可能会抛出一个内部错误(没有任何try / catches)和这是他们可能会接受的。

自动扫描程序在HTTP 500错误上有点疯狂。他们不知道幕后实际发生了什么,以及错误有多严重,所以你可以认为这是假阳性。另一方面,您的安全人员会争辩说,如果机器人发现您经常因操纵的查询字符串而丢失这些错误,那么很容易进一步探测回复HTTP 500的网站。

简单回答: “所有输入都必须根据可接受的值范围的白名单进行验证。” (来自here)。