- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚在网上读到有关 ASP.NET 中新发现的安全漏洞的信息。 You can read the details here.
The problem lies in the way that ASP.NET implements the AES encryption algorithm to protect the integrity of the cookies these applications generate to store information during user sessions.
这有点模糊,但这里有一个更可怕的部分:
The first stage of the attack takes a few thousand requests, but once it succeeds and the attacker gets the secret keys, it's totally stealthy.The cryptographic knowledge required is very basic.
总而言之,我对安全/密码学主题还不够熟悉,不知道这是否真的那么严重。
那么,所有 ASP.NET 开发人员都应该担心这种可以在几秒钟内拥有任何 ASP.NET 网站的技术吗?
此问题对普通 ASP.NET 开发人员有何影响?它对我们有影响吗?在现实生活中,这个漏洞会造成什么后果?最后:是否有一些解决方法可以防止此漏洞?
感谢您的回答!
<小时/>所以,这基本上是一种“填充预言”类型的攻击。 @Sri很好地解释了这种类型的攻击的含义。 Here is a shocking video about the issue!
关于该漏洞的严重性:是的,确实很严重。 它让攻击者能够了解应用程序的机器 key 。因此,他可以做一些非常不需要的事情。
这里有一些我得到的良好实践,不能解决问题,但有助于提高 Web 应用程序的总体安全性。
现在,让我们重点讨论这个问题。
解决办法
Application_Error
或 Error.aspx
中放入一些产生随机延迟的代码。 (生成一个随机数,并使用 Thread.Sleep 休眠那么长时间。)这将使攻击者无法确定您的服务器上到底发生了什么。其他一些想法
感谢所有回答我问题的人。我不仅学到了很多关于这个问题的知识,而且学到了很多关于网络安全的知识。我将 @Mikael 的答案标记为已接受,但其他答案也非常有用。
最佳答案
[更新2010-09-29]
KB Article with reference to the fix
ScottGu有下载链接
[更新2010-09-25]
当我们等待修复时,昨天 ScottGu postet an update了解如何添加额外步骤以使用自定义 URLScan 规则保护您的网站。
<小时/>基本上确保您提供自定义错误页面,以便攻击者不会暴露于内部 .Net 错误,而在发布/生产模式下您始终应该这样做。另外在错误页面添加随机时间休眠,防止攻击者 timing the responses添加攻击信息。
在 web.config 中
<configuration>
<location allowOverride="false">
<system.web>
<customErrors mode="On" defaultRedirect="~/error.html" />
</system.web>
</location>
</configuration>
这会将任何错误重定向到返回 200 状态代码的自定义页面。这样攻击者就无法查看错误代码或错误信息来获取进一步攻击所需的信息。
设置 customErrors mode="RemoteOnly"
也是安全的,因为这将重定向“真实”客户端。只有从本地主机浏览才会显示内部 .Net 错误。
重要的是确保所有错误都配置为返回相同的错误页面。这需要您显式设置 defaultRedirect
<customErrors>
上的属性部分并确保未设置每个状态代码。
如果攻击者设法利用上述漏洞,他/她可以从您的 Web 应用程序中下载内部文件。通常,web.config 是一个目标,可能包含敏感信息,例如数据库连接字符串中的登录信息,甚至链接到您不希望有人获取的自动 sql-express 数据库。但如果您遵循最佳实践,则可以使用 Protected Configuration加密 web.config 中的所有敏感数据。
阅读 Microsoft 关于该漏洞的官方评论:http://www.microsoft.com/technet/security/advisory/2416728.mspx 。具体来说,“解决方法”部分提供了有关此问题的实现细节。
还有一些关于 ScottGu's 的信息博客,包括 script在您的 Web 服务器上查找易受攻击的 ASP.Net 应用程序。
有关“了解 Padding Oracle 攻击”的说明,请阅读 @sri's answer .
<小时/>文章评论:
The attack that Rizzo and Duong have implemented against ASP.NET apps requires that the crypto implementation on the Web site have an oracle that, when sent ciphertext, will not only decrypt the text but give the sender a message about whether the padding in the ciphertext is valid.
If the padding is invalid, the error message that the sender gets will give him some information about the way that the site's decryption process works.
为了使攻击起作用,必须满足以下条件:
因此,如果您在应用中返回人类可读的错误消息,例如“出现问题,请重试”,那么您应该非常安全。阅读一下文章的评论也可以提供有值(value)的信息。
这样,被劫持的 cookie 只能用于检索很可能不再存在或失效的 session 。
看看 Ekoparty session 上实际展示的内容将会很有趣,但现在我不太担心这个漏洞。
关于asp.net - 这个新的 ASP.NET 安全漏洞有多严重?我该如何解决它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3720720/
我遇到了一个奇怪的问题。我的应用程序的 Release 版本似乎运行良好,但最近当我切换到 Debug 版本时,我在启动时立即遇到访问冲突。当释放分配的内存块时,就会发生访问冲突。所有这些都发生在静态
我在 C# 中偶然发现了这种奇怪的语法形式,并试图弄清楚它的含义以及如何使用它。网络上似乎没有关于此的任何文档。 object data = new { var1 = someValue, var2
我正在尝试使用浏览器的内置类型 CSSStyleDeclaration 以编程方式传递和修改样式(由于 .cssText 属性,这很方便)。 但是,new CSSStyleDeclaration()
我有现成的代码: internal bool firstAsSymbol(out Symbol s) { return (s = first as Symbol) !=
在新的 Eclipse 版本 2022-03 中,一些(但不是全部)java 项目在 Project Explorer View 中的外观发生了变化。尽管 Package Presentation 设
我正在尝试使用 FormData 通过获取 API 在 POST 请求中发送用户输入的数据。问题是,当我用我创建的表单创建一个新的 FormData 对象时,它一直在创建一个空对象——没有条目/键/值
我有一个用一些 intel-intrinsincs 编写的 C 代码。在我先用 avx 然后用 ssse3 标志编译后,我得到了两个完全不同的汇编代码。例如: AVX: vpunpckhbw %xm
最近,discord 为您自己的应用程序添加了对斜杠命令的支持。我通读了它的文档,并尝试搜索一些视频(但是该功能刚刚出现),但我不明白我实际上需要做什么才能使其正常工作。我正在使用 WebStorm(
我想使用 JRI 从 Java 调用 R。 我在 eclipse 下在主类中运行它: Rengine c = new Rengine(new String[] { "--vanilla" },
我正在使用新的 Place Autocomplete那是来自新的静态Google Places SDK 客户端库 (here)。所以它真的很容易使用,我刚得到this tutorial它按预期工作。
我刚刚更新到 flutter 版本 1.25.0-5.0.pre.92,我的代码中出现了很多与空安全相关的错误,这些错误以前运行良好。我没有以任何方式选择空安全,我所做的只是运行 flutter 升级
我已经使用 React Native 有一段时间了,但我想我会在网络上试用 React。所以我遵循了这个指南:https://reactjs.org/docs/create-a-new-react-a
周六早上在这里。尝试学习新的 Scala 编译器 dotty。 安装在我的 Mac 上使用 brew install lampepfl/brew/dotty 安装成功。我有版本 dotr -versi
我使用了谷歌地方的新依赖。单击自动完成 View 时应用程序崩溃。错误如下。, java.lang.NullPointerException: Place Fields must be set.
我关注了这个博客-> https://medium.com/@teyou21/training-your-object-detection-model-on-tensorflow-part-2-e9e
在哪里可以找到用于在此架构上进行组装的新寄存器的名称? 我指的是 X86 中的寄存器,如 EAX、ESP、EBX 等。但我希望它们是 64 位的。 我认为它们与我反汇编 C 代码时不同,我得到的是 r
新的服务总线库 Azure.Messaging.ServiceBus 使用 ServiceBusReceivedMessage 来接收消息 https://learn.microsoft.com/en
需要使用实时流媒体 channel 的实时编码类型在新的 Azure 门户中配置广告插入和石板图像。请帮忙解决这个问题,因为我找不到该功能。 最佳答案 此处描述了 Azure 媒体服务的广告插入选项
我正在使用新的 GitHub 操作,下面的工作流程的想法是在打开或同步 pr 时运行,它应该首先检查并安装依赖项,然后运行一些 yarn 脚本 name: PR to Master on: pul
我听说 DMD 2.058 中将有一个用于匿名函数的新语法,但我找不到任何相关信息。新语法是什么?旧语法是否会被弃用? 最佳答案 我相信它就像 C#'s . 以下内容是等效的: delegate(i,
我是一名优秀的程序员,十分优秀!