相关疑难解决方法(0)

这个新的ASP.NET安全漏洞有多严重,我该如何解决它?

我刚刚在网上看到了ASP.NET中新发现的安全漏洞.你可以在这里阅读详细信息.

问题在于ASP.NET实现AES加密算法的方式,以保护这些应用程序生成的cookie的完整性,以便在用户会话期间存储信息.

这有点模糊,但这里有一个更令人恐惧的部分:

攻击的第一阶段需要几千个请求,但一旦成功并且攻击者获得了密钥,它就完全是隐秘的.所需的加密知识是非常基本的.

总而言之,我对安全性/密码学不够熟悉,但要知道这是否真的那么严重.

那么,是否所有ASP.NET开发人员都担心这种技术可以在几秒钟内拥有任何ASP.NET网站或者什么?

这个问题如何影响普通的ASP.NET开发人员?它会影响我们吗?在现实生活中,这个漏洞的后果是什么?最后:是否有一些可以防止此漏洞的解决方法?

谢谢你的回答!


编辑:让我总结一下我得到的答复

所以,这基本上是一种"填充oracle"类型的攻击.@Sri提供了一个很好的解释,说明这种类型的攻击是什么意思.这是一个关于这个问题的令人震惊的视频!

关于此漏洞的严重性:是的,它确实很严重.它允许攻击者了解应用程序的机器密钥.因此,他可以做一些非常不需要的事情.

  • 在应用程序的机器密钥的位置,攻击者可以解密身份验证cookie.
  • 更糟糕的是,他可以使用任何用户的名称生成身份验证cookie.因此,他可以像网站上的任何人一样出现.应用程序无法区分您或为您自己生成身份验证cookie的黑客.
  • 它还允许他解密(并生成)会话cookie,尽管这不像前一个那样危险.
  • 不那么严重:他可以解密加密的ViewState页面.(如果您使用ViewState存储确信数据,则不应该这样做!)
  • 非常意外:凭借对机器密钥的了解,攻击者可以从您的Web应用程序下载任意文件,即使是那些通常无法下载的文件!(包括Web.Config等)

以下是一些我没有解决问题的良好实践,但有助于提高Web应用程序的一般安全性.

现在,让我们关注这个问题.

解决方案

  • 启用customErrors并创建一个错误页面,重定向所有错误.是的,甚至404s.(ScottGu说,区分404s和500s对于这次攻击至关重要.)另外,进入你的Application_Error或者Error.aspx放一些随机延迟的代码.(生成一个随机数,并使用Thread.Sleep长时间休眠.)这将使攻击者无法确定您的服务器上究竟发生了什么.
  • 有些人建议切换回3DES.理论上,如果您不使用AES,则不会遇到AES实现中的安全漏洞.事实证明,根本不建议这样做.

其他一些想法

感谢所有回答我问题的人.我不仅了解了这个问题,还了解了网络安全性.我将@ Mikael的答案标记为已被接受,但其他答案也非常有用.

.net asp.net security padding-oracle-attack

189
推荐指数
5
解决办法
2万
查看次数

WebResource.axd上的"填充无效且无法删除"异常

我有一个ASP.NET 2.0应用程序,在我们的本地环境中工作正常.发布到测试服务器时,我们在服务器上出现间歇性错误.

这是最常见的:

填充无效,无法删除.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Security.Cryptography.CryptographicException: 填充无效,无法删除.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:

[CryptographicException:填充无效,无法删除.]
System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte [] inputBuffer,Int32 inputOffset,Int32 inputCount,Byte []&outputBuffer,Int32 outputOffset,PaddingMode paddingMode,Boolean fLast)+1545747
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte [] inputBuffer,Int32 inputOffset,Int32 inputCount)+257
System.Security.Cryptography.CryptoStream.FlushFinalBlock()+30 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt,Byte [] buf,Byte []修饰符,Int32 start,Int32 length,Boolean useValidationSymAlgo)+164
System.Web.UI.Page.DecryptString(String s)+83
System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context)+148
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+358 System.Web.HttpApplication.ExecuteStep(IExecutionStep step ,Boolean&completedSynchronously)+64

这发生在对特定WebResource.axd请求的请求上.

我们看到的另一个错误是:

验证视图状态MAC失败.如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法.AutoGenerate不能在群集中使用.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Web.HttpException:viewstate MAC验证失败.如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法.AutoGenerate不能在群集中使用.

发布表单时偶尔会发生此错误.

在你跳入并告诉我这个错误的明显(通常)答案之前,请考虑一下:

  • 该应用程序部署到IIS6上的Windows Server 2003
  • 它不在Web场上.这里只使用一个网络服务器.
  • 应用程序池标识是一个自定义服务帐户,我确实aspnet_regiss -ga <username>在服务器上运行.没有效果.

asp.net viewstate webresource.axd

30
推荐指数
1
解决办法
3万
查看次数

准备ASP.Net网站进行渗透测试

多年来,我有一些我开发的网站提交给客户进行渗透测试.大多数情况下,结果返回时突出显示的问题与ASP .Net的默认行为有关,例如可能的跨站点脚本攻击等.

是否有任何关于ASP .Net应用程序中默认存在哪些漏洞的好文章,其次是否有任何好的检查表可以帮助提前准备一个站点?

asp.net penetration-testing

8
推荐指数
3
解决办法
1万
查看次数

无效的Viewstate,Base-64字符数组或字符串的长度无效

我不时面对这个错误,

ExecuteStep at line:0 at Column:0状态信息对于此页面无效,可能已损坏.(*)无效的视图状态

内部异常:

Application_Error中的未处理异常At line at line:0 at Column:0 Base-64 char数组或字符串的长度无效

调试已启用,并且pdb文件存在,如您所见,调试信息并不能准确地告诉我它在哪里发生.

我正在使用ASP.NET,C#,DotNet 4.5

这只发生在特定页面的负载上.

[FormatException: Invalid length for a Base-64 char array or string.]
   System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength) +10545359
   System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength) +130
   System.Convert.FromBase64String(String s) +41
   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString, Purpose purpose) +66
   System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter2.Deserialize(String serializedState, Purpose purpose) +8
   System.Web.UI.Util.DeserializeWithAssert(IStateFormatter2 formatter, String serializedState, Purpose purpose) +40
   System.Web.UI.HiddenFieldPageStatePersister.Load() +127

[ViewStateException: Invalid viewstate. 
    Client IP: ::1
    Port: 
    Referer: http://localhost:8000/ERP/MemberArea/Permits/Process_New.aspx
    Path: /ERP/MemberArea/Permits/Process_New.aspx
    User-Agent: Mozilla/5.0 (Windows NT …
Run Code Online (Sandbox Code Playgroud)

c# asp.net viewstate

6
推荐指数
1
解决办法
1万
查看次数

System.Web.UI.ViewStateException,无效的viewstate

我的网站每天都抛出以下异常,我找不到解决方案.我在网上做了很少的研究,这是我到目前为止所做的.将以下选项添加到aspx将无法解决问题.

ValidateRequest ="false"EnableEventValidation ="false"ViewStateEncryptionMode ="Never"EnableViewStateMac ="false"

此外,我的推荐网址是正确的网址,我不知道它如何重定向两个(相同)参数.我的推荐页面中没有这样的链接.请帮忙.

错误日志

URL : http://www.abcd.com/company-details.aspx?com=asia-pacific-pte-ltd&com=asia-pacific-pte-ltd

referral URL : http://www.abcd.com/companies/asia-pacific-pte-ltd/

Inner Exception Type: System.Web.UI.ViewStateException

Inner Exception: Invalid viewstate. Client IP: 192.162.19.193 Port: 1966 User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; MRA 6.0 (build 6001)) Presto/2.12.388 Version/12.11 ViewState: /wEPDwULLTEyMTAyMTY3NDAPZBYCAgMPZBYOZg8QDxYGHg1EYXRhVGV4dEZpZWxkBQdDb3VudHJ5Hg5EYXRhVmFsdWVGaWVsZAUNQ2xlYW5fQ291bnRyeR4LXyFEYXRhQm91bmRnZBAVCgNBbGwFQ2hpbmEJSG9uZyBLb25nBUluZGlhCUluZG9uZXNpYQhNYWxheXNpYQtQaGlsaXBwaW5lcwlTaW5nYXBvcmUIVGhhaWxhbmQHVmlldG5hbRUKA0FsbAVjaGluYQlob25nLWtvbmcFaW5kaWEJaW5kb25lc2lhCG1hbGF5c2lhC3BoaWxpcHBpbmVzCXNpbmdhcG9yZQh0aGFpbGFuZAd2aWV0bmFtFCsDCmdnZ2dnZ2dnZ2dkZAIBDxAPFgYfAAUISW5kdXN0cnkfAQUOQ2xlYW5fSW5kdXN0cnkfAmdkEBXFAgNBbGwSQWR2YW5jZWQgTWF0ZXJpYWxzC0FkdmVydGlzaW5nCkFlc3RoZXRpY3MLQWdyaWN1bHR1cmUkQWdyaWN1bHR1cmUgLSBBZ3JpY3VsdHVyYWwgTWFjaGluZXJ5G0FncmljdWx0dXJlICYgRm9vZCBQcm9kdWN0cxBBaXItY29uZGl0aW9uaW5nHUFpci1maWx0cmF0aW9uICYgUHVyaWZpY2F0aW9uB0FpcnBvcnQJQWx1bWluaXVtFEFuYWx5dGljYWwgRXF1aXBtZW50GkFuYWx5dGljYWwgSW5zdHJ1bWVudGF0aW9uFUFuYWx5dGljYWwgVGVjaG5vbG9neRZBbmQgSW50ZXJpb3IgRGVzaWduZXJzEUFuaW1hbCBQcm9kdWN0aW9uCEFudGlib2R5KUFwc...

Inner Source: 

Exception Type: System.Web.HttpException

Exception: The state information is invalid for this page and might be corrupted.

Stack Trace: at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) at System.Web.UI.HiddenFieldPageStatePersister.Load() at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() at System.Web.UI.Page.LoadAllState() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, …
Run Code Online (Sandbox Code Playgroud)

asp.net viewstate exception

5
推荐指数
1
解决办法
2万
查看次数

如何在我的ASP.NET应用程序中创建"通用错误"页面,以便它处理在提供该页面时触发的错误?

在我的ASP.NET MVC应用程序中,我希望有一个通用的错误页面,它与返回的HTTP 500一起显示.类似于Stack Overflow上的这个页面.

当然我想重用尽可能多的代码,以便页面的样式与我的应用程序中的其他页面的样式相同,所以我希望有一个ASP.NET页面重用母版页,而不是纯HTML文件.但是,如果我这样做,我有一个页面,其中包含一些服务器端可执行代码,用于创建提供给客户端的实际HTML.在Stack Overflow一般错误页面的情况下,代码检查用户是否已注册,检索他的代表等,并将其中的元素插入HTML.

该代码可能会失败,如果发生这种情况,页面就没有正确构造,并且服务器中会抛出异常.

如何正常处理这种情况(为错误页面构建HTML时出错)?什么是典型的方法?

.net asp.net iis error-handling

4
推荐指数
2
解决办法
8384
查看次数

为什么我只是*在一个服务器环境中随机*获得"viewstate MAC验证失败"?

是的,关于这个特定错误有一百万个问题和线索,有许多记录良好的解决方案,我一定会尝试.但首先我想了解我的特定情况/环境的问题.

在我的情况下,这个错误似乎是完全随机的.我会在几周内没有看到它,然后有一天我会登录我的网站并得到错误.刷新页面,再次登录,没问题.在事件之间的这些时段中,Web服务器没有发生任何特别的特殊情况.

这是另一回事,错误说"如果此应用程序由Web场或群集托管......",但事实并非如此.它只是一个Windows Server 2008.

所以,我理解一般的解决方案是在web.config文件中添加一组静态机器密钥---但为什么这似乎是随机发生的,为什么它发生在我的站点上,它位于单个Windows Server 2008上机?

我正在使用ASP.NET 4,我的站点是在IIS上运行的Web应用程序.

错误信息:

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

[ViewStateException: Invalid viewstate. 
    Client IP: ##::##:##:##:##
    Port: ##
    Referer: http://myserver/login.aspx
    Path: /login.aspx
    User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; U; en) Presto/2.10.289 Version/12.01
    ViewState: /wEPDw...6OCX]

[HttpException (0x80004005): Validation of viewstate MAC failed. If this application …
Run Code Online (Sandbox Code Playgroud)

c# asp.net viewstate exception machinekey

3
推荐指数
1
解决办法
4253
查看次数