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

2010 年 10 月 20 日

恶意用户能够使用 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

2010 年 10 月 20 日 08:161066
用户头像

发布了 157 篇内容, 共 43.3 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

week3作业一

任鑫

架构

了解概率知识,概率作为机器学习的底层逻辑

奈学教育

概率

创业白皮书 - 开场篇留给情怀

阿甜

创业 重新理解创业 创业心态 创业者

面向对象编程

Arthur

作业-组合模式和单例模式

蒜泥精英

聊聊设计模式——上篇

Jerry Tse

随笔 极客大学架构师训练营 作业 23种设计模式

了解概率知识,概率作为机器学习的底层逻辑

古月木易

概率

Lesson 3 设计模式 心得笔记

edd

区块链+医疗,能否有效避免问题疫苗?

CECBC区块链专委会

区块链技术 溯源 疫苗

使用了 iOS 14 发布的翻译工具,觉得还差点儿意思

神经星星

apple 机器翻译 翻译软件 WWDC2020 语音识别

第三周设计模式总结

石印掌纹

架构师训练营第三周作业

Geek_2dfa9a

架构师训练营第三周作业

Geek_2dfa9a

架构师训练营--第三周作业

_MISSYOURLOVE

极客大学架构师训练营 第三周

第三周设计模式命题作业

石印掌纹

单例与组合模式代码实现

Lane

极客大学架构师训练营

架构师 0 期 | 面向对象的设计模式

刁架构

极客大学架构师训练营

第三周作业

冯凯

第三周学习总结

冯凯

第三周·作业一·命题作业

刘璐

架构师训练营 第三周作业

孙有能希

极客大学架构师训练营 组合模式

架构师训练营第三周总结

Geek_2dfa9a

构架师训练营-第3周命题作业

Dawn

设计模式 极客大学架构师训练营

架构师训练营 - 学习笔记 - 第三周

小遵

双帆与雾洋:腾讯TAD Sim 2.0的仿真大航海

脑极体

架构师训练营第三章作业

饶军

程序员的晚餐 | 6 月 24 日 微甜的毛豆

清远

美食

第三周作业

倪惠华

架构师训练营week03作业

小高

手写单例模式

GalaxyCreater

设计模式

模式和重构-学习心得

蒜泥精英

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