BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Padding Oracle漏洞影响JSF、Ruby on Rails及ASP.NET

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 赵劼 关注 4 他的粉丝 发布于 2010年10月21日. 估计阅读时间: 7 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

恶意用户能够使用Padding Oracle(PO)攻击方式来解密cookie,加密状态及认证密码等关键信息。据Juliano Rizzo和Thai Duong所说,这个安全漏洞影响JavaServer Faces、Ruby on Rails、ASP.NET及其他一些技术及平台。

在瑞士联邦理工大学(Swiss Federal Institute of Technologies,EPFL)领导安全及密码实验室(Security and Cryptography Laboratory,LASEC)的Serge Vaudenay教授,于2002年发表了一篇名为“由于使用CBC填充而引入至SSL、IPSEC、WTLS的安全漏洞(Security Flaw Induced by CBC Padding Applications to SSL, IPSEC, WTLS)”(PDF)的论文。其中谈到,为加密变长数据而使用的几种填充方式会导致严重的安全漏洞。

根据RFC 2040算法,在对变长数据的加密形式进行解密的时候,解密程序需要判断数据的填充(Padding)情况是否正确,如果填充正确,则将其去除,但是RFC 2040并没有指明如果填充出现错误的时候该如何提供反馈。Vaudenay总结到:

尽管解密程序不该告诉调用方填充错误,但是提供一些解密过程中的信息还是有意义的。

不过这也使得攻击方可以得到一些提示(Oracle):哪些由上述算法(RFC 2040)所解密的数据可以得到正确的填充序列。使用这种方式解密一条信息的复杂度是O(NbW),其中W是可能值的数量(通常W = 256)。

据Vaudenay所说,这个漏洞能够影响SSL、IPSEC、WTLS、SSH等多种协议,攻击者有可能在不知道密钥的情况下破解密文。他演示了攻击方式,并给出了几种修补建议。

在Vaudenay这篇论文的基础上,两位专注于安全方面的软件工程师Julinao Rizzo和Thai Duong,于2010年5月25日发表了一篇新论文“Padding Oracle攻击实战(Practical Padding Oracle Attacks)”(PDF)。作者声称Padding Oracle(PO)漏洞在一些包括JavaServer Faces(JSF)、Ruby on Rails及OWASEP ESAPI等广泛运用的技术内都有体现。他们还编写并发布了一款名为POET(Padding Oracle Exploitation Tool)的工具,可以检测出一个JSF站点是否会遭受PO攻击。

Rizzo和Duong在9月17号举办的ekoparty安全会议上发表了这篇论文,表明ASP.NET及SharePoint应用程序同样无法抵抗PO攻击,但他们并没有发布ASP.NET版本的POET。他们提到,恶意用户使用PO攻击可以“解密cookie、视图状态、表单验证数据、账号密码、用户数据以及其他任何使用框架API所加密的数据”。对这个问题的主要反馈来自微软,包括微软联合副总裁Scott Guthrie在内,他的一个团队立即开始争分夺秒地开发补丁程序。10天后微软发布了一个计划外的安全更新,面向全部.NET版本,这次更新也出现在Windows Update中。微软的这种强烈回应也证实了这个威胁有多么严重,这也为其他可能包含漏洞的网站敲响了警钟。

针对Padding Oracle、POET及ASP.NET,InfoQ与Juliano Rizzo进行了交谈。

InfoQ:除了JSF、Ruby on Rails及ASP.NET以外,你们还发现哪些平台存在这个漏洞呢?

JR:我们还没有深入研究其他平台,但我们肯定,还有更多平台、网站及应用程序存在同样的漏洞。

InfoQ:POET是什么?

JR:现在的POET是五个月前发布的版本,它证明了JSF中存在的问题,未来我们也会发布一个更加广泛的版本。我们也有打算写一篇论文来阐述ASP.NET漏洞的详细情况。在Blackhat Europe 2010之后我们发布了POET和JSF测试站点,这个工具可以用来检查漏洞,但不会自动获取系统的访问权限(演示)。

InfoQ:既然JSF、Ruby on Rails同样包含这个漏洞,它们为什么没有像ASP.NET那样引起强烈反响?

JR:ASP.NET比JSF和Ruby on Rails要流行的多,互联网上有大约25%的网站使用ASP.NET。

InfoQ:如何验证一个平台是否存在这种漏洞?

JR:审查代码或是黑盒测试都能检查应用程序是否包含漏洞。目前还没有检查这个问题的工具或是通用方法。

InfoQ:您能否为平台构建方,或是网站管理员给出一些建议,让他们确保不会遭受Padding Oracle攻击?

JR:首先,将加密数据传递到Web客户端一般都没有十分必要的理由,开发人员可以尽可能选择其他的解决方案。如果加密数据必须发送至客户端,则必须保护密文的完整性,避免如Padding Oracle那样通过修改密文所发起的攻击。

相关资源:重要消息:ASP.NET安全漏洞关于ASP.NET安全漏洞的常见问题有关ASP.NET漏洞的消息更新ASP.NET安全更新于9月28日(周二)发布ASP.NET安全更新现已发布ASP.NET安全补丁已通过Windows Update发布微软安全公告MS10-070 – 重要安全建议2416728(ASP.NET中的漏洞)及SharePoint关于ASP.NET Padding Oracle漏洞及POET攻击的更多内容

译注:国内社区也对此次ASP.NET平台上的Padding Oracle漏洞有所关注,如就职于盛大创新院的赵劼便发表了“浅谈这次ASP.NET的Padding Oracle Attack相关内容”一文对此次事件进行了简要的分析,并翻译了“Padding Oracle Attack实例分析”阐述Padding Oracle攻击的具体实现原理。

查看英文原文:Padding Oracle Affects JSF, Ruby on Rails, ASP.NET

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT