程序员征服安全:分享与学习系列 - 填充预言机

“填充预言”(Padding Oracle)听起来像是一个糟糕的另类摇滚乐队名字,但实际上,它是一种漏洞,攻击者可以利用它在不知道加密密钥的情况下解密信息。
从攻击者的整体难度来看,这种攻击处于难度等级的顶端。这并非指某种“一键解密”的魔法按钮,而是一个繁琐的过程:黑客通过检查服务器返回的有关数据填充的错误消息,来确定加密数据的结尾和填充的起始位置。随后,他们可以推算出加密内容中的各个位,如果给予足够的时间和输入进行分析,就有可能破解加密。
幸运的是,采取一些相对简单的步骤,就能消除攻击者利用填充预言解密数据的能力。在本期节目中,我们将学习:
- 其工作原理
- 为什么该漏洞如此危险
- 如何部署防御措施以防止此类攻击。
填充预言是如何工作的?
密码分组链接(CBC)是一种创建分组密码的方法,它将整段信息序列(例如存储在数据库中的单元格)使用应用于整个信息链的加密密钥进行加密。在使用 CBC 时,单个密文块的加密取决于之前所有的块。理论上,这使得加密极其稳固,因为任何改动(甚至是块的重新排序)都会导致数据损坏。
CBC 密码(以及任何分组密码)的问题在于,它们只能使用固定大小的块进行加密。通常,块大小为 8 或 16 字节。那么,当 CBC 需要将 2 字节的数据放入 16 字节的密文单元时会发生什么呢?它会使用填充(本质上就是无意义的字符)来填补空隙,使单元达到合适的大小。
大多数填充方案都是众所周知的,其中 PKCS#7 是最流行的方案之一,因此攻击者可能知道正在使用哪种填充方式。例如,如果 CBC 需要在一个块中填充五个字符,PKCS#7 会在明文后重复五次字节值 0x05。
攻击者利用他们对 CBC 和填充方案的了解,向主机服务器(也称为“预言机”)发送查询。如果他们拥有合适的工具,就有可能迫使服务器告知其查询中的填充是否错误。通过这种方式,他们可以对密文中的每个字节从 0 到 255 进行循环尝试,直到服务器返回填充正确的提示。然后,他们会移动到下一个单元并重复此过程,记录下每种情况下填充的起始位置。
这虽然不能让他们直接解密整个消息或单元格,但可以让他们绘制出链条中每一环的映射,从而确定明文在哪里结束、填充在哪里开始。他们还可以利用异或(XOR)运算来推算出原始明文最后一个字节的值。
为什么填充预言如此危险?
黑客之所以愿意投入大量精力去破解加密,是因为潜在的回报巨大。很少有人会去加密没有价值的东西。对主机组织而言,危险程度取决于被泄露的数据。这可能包括密码、用户账户、财务信息、信用卡号、患者记录、敏感通信,或任何其他极具价值且备受追捧的信息。
利用填充预言也可能成为后续攻击的切入点。例如,如果攻击者能利用填充预言窃取密码,那么提升权限并进一步渗透到网络内部就成了轻而易举的后续任务。
人们普遍认为加密是防止窥探或泄露的终极防御手段。然而,加密科学与破解技术之间的博弈已经持续了几个世纪。填充预言只是让攻击者占据优势的方法之一。
让填充预言攻击“硬着陆”
幸运的是,有很多方法可以防止填充预言攻击。最好的方法之一是使用更强的加密操作模式,例如伽罗瓦/计数器模式(GCM)或偏移码本模式(OCB)。它与 CBC 的不同之处在于,它使用 128 位的密码块大小。它还为每个数据块使用一个计数器,然后利用该数字来创建密文。换句话说,它不会受到填充预言攻击的影响。
实施良好的错误处理控制也能严重挫败攻击者的成功几率。由于填充预言攻击依赖于信息泄露,因此在加密/解密失败时,应返回通用的错误消息,而不是具体的填充错误提示。
您还可以实施消息认证码 (MAC)。MAC 值通过允许验证者使用密钥检测消息内容的任何更改,从而保护数据的完整性及其真实性。
最后,所有填充预言机攻击都需要重复查询。针对单个单元确定填充方案可能需要进行 200 多次请求,并需乘以链中受保护的信息单元数量。通过限制来自同一来源的请求数量,您可以在攻击者真正开始尝试之前拒绝其访问,从而阻止填充预言机攻击。
填充预言机深入研究
任何攻击者解密敏感信息的方法都可能成为一场噩梦。但我们希望您已经学到了一些行之有效的方法,可以从源头上防止此类情况发生。
如需进一步阅读,您可以查看 OWASP 关于填充预言机的 定义和检查清单。您还可以通过 免费演示 来测试您新学到的防御知识,该演示来自 Secure Code Warrior 平台,旨在培训网络安全团队成为顶尖的网络战士。要了解更多关于击败此漏洞及其他各类威胁的信息,请访问 Secure Code Warrior 博客。
认为您现在就有能力挫败填充预言机攻击了吗?请在 Secure Code Warrior 平台上尝试一下:
在 AI 驱动的开发成果发布前实现有效治理
评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。
探索更多博客
获取有关安全编码、人工智能治理和软件风险管理的专家内容。
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
在产品发布前确保 AI 驱动的开发安全
洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。



.avif)