编码员征服安全。分享与学习系列 - 填充Oracle
虽然Padding Oracle听起来像一个另类摇滚乐队的一个非常糟糕的名字,但它实际上是一个漏洞,可以被攻击者用来解密信息而不知道加密密钥。
就攻击者的整体难度而言,这一项接近于规模的顶端。我们谈论的不是一个神奇的解密按钮,而是一个费力的过程,黑客可以检查发给他们的关于单元格填充的错误信息,并利用这一点来确定加密数据的结束和填充的开始。然后,他们可以计算出加密中的各种比特,如果有足够的时间和输入来检查,就有可能破解它。
值得庆幸的是,有几个相对简单的步骤可以消除攻击者使用填充甲骨文来破译加密数据的能力。在这一集里,我们将学习。
- 它是如何工作的
- 为什么这个漏洞如此危险
- 你如何能把防御措施放在适当的位置来防止它。
Padding Oracle是如何工作的?
密码区块链(CBC)是一种创建区块密码的方式,其中整个信息比特序列,如存储在数据库中的单元,使用适用于整个信息链的加密密钥进行加密。当使用CBC时,单一区块密码文本的加密将取决于所有的后续区块。在理论上,这使得加密非常强大,因为任何事情,甚至是区块的重新排序,都会破坏数据。
CBC密码(以及任何区块密码)的问题是,它们只能使用精确大小的区块进行加密。通常情况下,这是以8或16字节的大小进行的。那么,当CBC需要将2字节的数据装入16字节的密码文本单元时会发生什么?它将使用填充物,基本上就是一些无意义的字符,来填补空白,并使该单元具有适当的大小。
大多数填充方案都是众所周知的,PKCS#7是最流行的方案之一,所以攻击者可能知道正在使用什么样的填充。例如,如果CBC需要在一个区块中填充五个字符,PKCS#7会在纯文本之后使用重复五次的字节值0x05。
攻击者利用他们对CBC和填充方案的了解,向主机服务器发送查询,也被称为神谕。如果他们能够获得正确的工具,他们可能会强迫服务器告诉他们,如果他们的查询中的填充是不正确的。为了达到这个目的,他们可以对密码中的每个字节进行从0到255的循环,直到服务器告诉他们填充物是正确的。然后,他们转到下一个单元并重复这个过程,在每一种情况下记录填充的开始位置。
这并不能让他们解密信息,甚至不能让他们解密单元格,但可以让他们在纯文本结束和填充物开始的地方映射出链条上的每一个环节。他们还可能使用XOR计算来计算出原始明文的最后一个字节的值。
为什么填充Oracle如此危险?
黑客之所以会在破解加密方面投入如此多的工作,是因为潜在的报酬。很少有人对没有价值的东西进行加密。对主机组织的危险取决于被泄露的数据。这可能包括密码、用户账户、财务信息、信用卡号码、病人记录、敏感通信或任何数量的备受追捧和有价值的信息。
使用padding oracle也可能是后续攻击的网关。例如,如果一个攻击者可以使用填充神谕来窃取密码,那么提升他们的权限并深入到网络中去就是一个很容易的次要任务。
每个人都认为加密是防止窥探或破坏的最终防御手段。然而,加密科学和那些要破解它的人之间的反反复复已经持续了几个世纪。填充神谕只是让攻击者获得优势的一种方法。
给予填充的Oracle攻击一个硬着陆
值得庆幸的是,有相当多的方法可以防止padding oracle。最好的方法之一是使用更强的加密操作模式,如伽罗瓦/计数器模式(GCM)或偏移编码本模式(OCB)。它与CBC不同的是,它使用128位的密码块大小。它还为每个数据块使用一个计数器,然后使用该数字来创建密码文本。换句话说,它不容易受到填充神谕攻击的影响。
实施良好的错误处理控制也可以严重损害攻击者的成功机会。由于padding oracle攻击依赖于信息泄露,所以在加密/解密失败时,要返回通用的错误信息,而不是具体的padding错误。
你也可以实现消息验证码(MAC)。MAC值保护数据的完整性以及其真实性,它允许验证者使用秘密密钥检测消息内容的任何变化。
最后,所有的填充神谕攻击都需要重复查询。为了弄清一个单元的填充方案,可能会有超过200个请求,再乘以链中被保护的信息单元的数量。通过限制来自同一来源的请求的数量,你可以在攻击者真正开始尝试之前拒绝他们的访问,从而关闭填充神谕攻击。
关于Padding Oracle的进一步研究
任何攻击者可以解密敏感信息的方法都可能成为一个真正的噩梦。但是,我们希望你已经学会了相当多的好方法,以防止这种情况首先发生。
要进一步阅读,你可以看一下OWASP的定义和padding oracle上的检查表。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
你认为你现在就能完成挫败填充式甲骨文攻击的任务吗?在Secure Code Warrior 平台上试试吧。


虽然Padding Oracle听起来像一个另类摇滚乐队的一个非常糟糕的名字,但它实际上是一个漏洞,可以被攻击者用来解密信息而不知道加密密钥。
就攻击者的整体难度而言,这一项接近于规模的顶端。我们谈论的不是一个神奇的解密按钮,而是一个费力的过程,黑客可以检查发给他们的关于单元格填充的错误信息,并利用这一点来确定加密数据的结束和填充的开始。然后,他们可以计算出加密中的各种比特,如果有足够的时间和输入来检查,就有可能破解它。
值得庆幸的是,有几个相对简单的步骤可以消除攻击者使用填充甲骨文来破译加密数据的能力。在这一集里,我们将学习。
- 它是如何工作的
- 为什么这个漏洞如此危险
- 你如何能把防御措施放在适当的位置来防止它。
Padding Oracle是如何工作的?
密码区块链(CBC)是一种创建区块密码的方式,其中整个信息比特序列,如存储在数据库中的单元,使用适用于整个信息链的加密密钥进行加密。当使用CBC时,单一区块密码文本的加密将取决于所有的后续区块。在理论上,这使得加密非常强大,因为任何事情,甚至是区块的重新排序,都会破坏数据。
CBC密码(以及任何区块密码)的问题是,它们只能使用精确大小的区块进行加密。通常情况下,这是以8或16字节的大小进行的。那么,当CBC需要将2字节的数据装入16字节的密码文本单元时会发生什么?它将使用填充物,基本上就是一些无意义的字符,来填补空白,并使该单元具有适当的大小。
大多数填充方案都是众所周知的,PKCS#7是最流行的方案之一,所以攻击者可能知道正在使用什么样的填充。例如,如果CBC需要在一个区块中填充五个字符,PKCS#7会在纯文本之后使用重复五次的字节值0x05。
攻击者利用他们对CBC和填充方案的了解,向主机服务器发送查询,也被称为神谕。如果他们能够获得正确的工具,他们可能会强迫服务器告诉他们,如果他们的查询中的填充是不正确的。为了达到这个目的,他们可以对密码中的每个字节进行从0到255的循环,直到服务器告诉他们填充物是正确的。然后,他们转到下一个单元并重复这个过程,在每一种情况下记录填充的开始位置。
这并不能让他们解密信息,甚至不能让他们解密单元格,但可以让他们在纯文本结束和填充物开始的地方映射出链条上的每一个环节。他们还可能使用XOR计算来计算出原始明文的最后一个字节的值。
为什么填充Oracle如此危险?
黑客之所以会在破解加密方面投入如此多的工作,是因为潜在的报酬。很少有人对没有价值的东西进行加密。对主机组织的危险取决于被泄露的数据。这可能包括密码、用户账户、财务信息、信用卡号码、病人记录、敏感通信或任何数量的备受追捧和有价值的信息。
使用padding oracle也可能是后续攻击的网关。例如,如果一个攻击者可以使用填充神谕来窃取密码,那么提升他们的权限并深入到网络中去就是一个很容易的次要任务。
每个人都认为加密是防止窥探或破坏的最终防御手段。然而,加密科学和那些要破解它的人之间的反反复复已经持续了几个世纪。填充神谕只是让攻击者获得优势的一种方法。
给予填充的Oracle攻击一个硬着陆
值得庆幸的是,有相当多的方法可以防止padding oracle。最好的方法之一是使用更强的加密操作模式,如伽罗瓦/计数器模式(GCM)或偏移编码本模式(OCB)。它与CBC不同的是,它使用128位的密码块大小。它还为每个数据块使用一个计数器,然后使用该数字来创建密码文本。换句话说,它不容易受到填充神谕攻击的影响。
实施良好的错误处理控制也可以严重损害攻击者的成功机会。由于padding oracle攻击依赖于信息泄露,所以在加密/解密失败时,要返回通用的错误信息,而不是具体的padding错误。
你也可以实现消息验证码(MAC)。MAC值保护数据的完整性以及其真实性,它允许验证者使用秘密密钥检测消息内容的任何变化。
最后,所有的填充神谕攻击都需要重复查询。为了弄清一个单元的填充方案,可能会有超过200个请求,再乘以链中被保护的信息单元的数量。通过限制来自同一来源的请求的数量,你可以在攻击者真正开始尝试之前拒绝他们的访问,从而关闭填充神谕攻击。
关于Padding Oracle的进一步研究
任何攻击者可以解密敏感信息的方法都可能成为一个真正的噩梦。但是,我们希望你已经学会了相当多的好方法,以防止这种情况首先发生。
要进一步阅读,你可以看一下OWASP的定义和padding oracle上的检查表。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
你认为你现在就能完成挫败填充式甲骨文攻击的任务吗?在Secure Code Warrior 平台上试试吧。

虽然Padding Oracle听起来像一个另类摇滚乐队的一个非常糟糕的名字,但它实际上是一个漏洞,可以被攻击者用来解密信息而不知道加密密钥。
就攻击者的整体难度而言,这一项接近于规模的顶端。我们谈论的不是一个神奇的解密按钮,而是一个费力的过程,黑客可以检查发给他们的关于单元格填充的错误信息,并利用这一点来确定加密数据的结束和填充的开始。然后,他们可以计算出加密中的各种比特,如果有足够的时间和输入来检查,就有可能破解它。
值得庆幸的是,有几个相对简单的步骤可以消除攻击者使用填充甲骨文来破译加密数据的能力。在这一集里,我们将学习。
- 它是如何工作的
- 为什么这个漏洞如此危险
- 你如何能把防御措施放在适当的位置来防止它。
Padding Oracle是如何工作的?
密码区块链(CBC)是一种创建区块密码的方式,其中整个信息比特序列,如存储在数据库中的单元,使用适用于整个信息链的加密密钥进行加密。当使用CBC时,单一区块密码文本的加密将取决于所有的后续区块。在理论上,这使得加密非常强大,因为任何事情,甚至是区块的重新排序,都会破坏数据。
CBC密码(以及任何区块密码)的问题是,它们只能使用精确大小的区块进行加密。通常情况下,这是以8或16字节的大小进行的。那么,当CBC需要将2字节的数据装入16字节的密码文本单元时会发生什么?它将使用填充物,基本上就是一些无意义的字符,来填补空白,并使该单元具有适当的大小。
大多数填充方案都是众所周知的,PKCS#7是最流行的方案之一,所以攻击者可能知道正在使用什么样的填充。例如,如果CBC需要在一个区块中填充五个字符,PKCS#7会在纯文本之后使用重复五次的字节值0x05。
攻击者利用他们对CBC和填充方案的了解,向主机服务器发送查询,也被称为神谕。如果他们能够获得正确的工具,他们可能会强迫服务器告诉他们,如果他们的查询中的填充是不正确的。为了达到这个目的,他们可以对密码中的每个字节进行从0到255的循环,直到服务器告诉他们填充物是正确的。然后,他们转到下一个单元并重复这个过程,在每一种情况下记录填充的开始位置。
这并不能让他们解密信息,甚至不能让他们解密单元格,但可以让他们在纯文本结束和填充物开始的地方映射出链条上的每一个环节。他们还可能使用XOR计算来计算出原始明文的最后一个字节的值。
为什么填充Oracle如此危险?
黑客之所以会在破解加密方面投入如此多的工作,是因为潜在的报酬。很少有人对没有价值的东西进行加密。对主机组织的危险取决于被泄露的数据。这可能包括密码、用户账户、财务信息、信用卡号码、病人记录、敏感通信或任何数量的备受追捧和有价值的信息。
使用padding oracle也可能是后续攻击的网关。例如,如果一个攻击者可以使用填充神谕来窃取密码,那么提升他们的权限并深入到网络中去就是一个很容易的次要任务。
每个人都认为加密是防止窥探或破坏的最终防御手段。然而,加密科学和那些要破解它的人之间的反反复复已经持续了几个世纪。填充神谕只是让攻击者获得优势的一种方法。
给予填充的Oracle攻击一个硬着陆
值得庆幸的是,有相当多的方法可以防止padding oracle。最好的方法之一是使用更强的加密操作模式,如伽罗瓦/计数器模式(GCM)或偏移编码本模式(OCB)。它与CBC不同的是,它使用128位的密码块大小。它还为每个数据块使用一个计数器,然后使用该数字来创建密码文本。换句话说,它不容易受到填充神谕攻击的影响。
实施良好的错误处理控制也可以严重损害攻击者的成功机会。由于padding oracle攻击依赖于信息泄露,所以在加密/解密失败时,要返回通用的错误信息,而不是具体的padding错误。
你也可以实现消息验证码(MAC)。MAC值保护数据的完整性以及其真实性,它允许验证者使用秘密密钥检测消息内容的任何变化。
最后,所有的填充神谕攻击都需要重复查询。为了弄清一个单元的填充方案,可能会有超过200个请求,再乘以链中被保护的信息单元的数量。通过限制来自同一来源的请求的数量,你可以在攻击者真正开始尝试之前拒绝他们的访问,从而关闭填充神谕攻击。
关于Padding Oracle的进一步研究
任何攻击者可以解密敏感信息的方法都可能成为一个真正的噩梦。但是,我们希望你已经学会了相当多的好方法,以防止这种情况首先发生。
要进一步阅读,你可以看一下OWASP的定义和padding oracle上的检查表。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
你认为你现在就能完成挫败填充式甲骨文攻击的任务吗?在Secure Code Warrior 平台上试试吧。
虽然Padding Oracle听起来像一个另类摇滚乐队的一个非常糟糕的名字,但它实际上是一个漏洞,可以被攻击者用来解密信息而不知道加密密钥。
就攻击者的整体难度而言,这一项接近于规模的顶端。我们谈论的不是一个神奇的解密按钮,而是一个费力的过程,黑客可以检查发给他们的关于单元格填充的错误信息,并利用这一点来确定加密数据的结束和填充的开始。然后,他们可以计算出加密中的各种比特,如果有足够的时间和输入来检查,就有可能破解它。
值得庆幸的是,有几个相对简单的步骤可以消除攻击者使用填充甲骨文来破译加密数据的能力。在这一集里,我们将学习。
- 它是如何工作的
- 为什么这个漏洞如此危险
- 你如何能把防御措施放在适当的位置来防止它。
Padding Oracle是如何工作的?
密码区块链(CBC)是一种创建区块密码的方式,其中整个信息比特序列,如存储在数据库中的单元,使用适用于整个信息链的加密密钥进行加密。当使用CBC时,单一区块密码文本的加密将取决于所有的后续区块。在理论上,这使得加密非常强大,因为任何事情,甚至是区块的重新排序,都会破坏数据。
CBC密码(以及任何区块密码)的问题是,它们只能使用精确大小的区块进行加密。通常情况下,这是以8或16字节的大小进行的。那么,当CBC需要将2字节的数据装入16字节的密码文本单元时会发生什么?它将使用填充物,基本上就是一些无意义的字符,来填补空白,并使该单元具有适当的大小。
大多数填充方案都是众所周知的,PKCS#7是最流行的方案之一,所以攻击者可能知道正在使用什么样的填充。例如,如果CBC需要在一个区块中填充五个字符,PKCS#7会在纯文本之后使用重复五次的字节值0x05。
攻击者利用他们对CBC和填充方案的了解,向主机服务器发送查询,也被称为神谕。如果他们能够获得正确的工具,他们可能会强迫服务器告诉他们,如果他们的查询中的填充是不正确的。为了达到这个目的,他们可以对密码中的每个字节进行从0到255的循环,直到服务器告诉他们填充物是正确的。然后,他们转到下一个单元并重复这个过程,在每一种情况下记录填充的开始位置。
这并不能让他们解密信息,甚至不能让他们解密单元格,但可以让他们在纯文本结束和填充物开始的地方映射出链条上的每一个环节。他们还可能使用XOR计算来计算出原始明文的最后一个字节的值。
为什么填充Oracle如此危险?
黑客之所以会在破解加密方面投入如此多的工作,是因为潜在的报酬。很少有人对没有价值的东西进行加密。对主机组织的危险取决于被泄露的数据。这可能包括密码、用户账户、财务信息、信用卡号码、病人记录、敏感通信或任何数量的备受追捧和有价值的信息。
使用padding oracle也可能是后续攻击的网关。例如,如果一个攻击者可以使用填充神谕来窃取密码,那么提升他们的权限并深入到网络中去就是一个很容易的次要任务。
每个人都认为加密是防止窥探或破坏的最终防御手段。然而,加密科学和那些要破解它的人之间的反反复复已经持续了几个世纪。填充神谕只是让攻击者获得优势的一种方法。
给予填充的Oracle攻击一个硬着陆
值得庆幸的是,有相当多的方法可以防止padding oracle。最好的方法之一是使用更强的加密操作模式,如伽罗瓦/计数器模式(GCM)或偏移编码本模式(OCB)。它与CBC不同的是,它使用128位的密码块大小。它还为每个数据块使用一个计数器,然后使用该数字来创建密码文本。换句话说,它不容易受到填充神谕攻击的影响。
实施良好的错误处理控制也可以严重损害攻击者的成功机会。由于padding oracle攻击依赖于信息泄露,所以在加密/解密失败时,要返回通用的错误信息,而不是具体的padding错误。
你也可以实现消息验证码(MAC)。MAC值保护数据的完整性以及其真实性,它允许验证者使用秘密密钥检测消息内容的任何变化。
最后,所有的填充神谕攻击都需要重复查询。为了弄清一个单元的填充方案,可能会有超过200个请求,再乘以链中被保护的信息单元的数量。通过限制来自同一来源的请求的数量,你可以在攻击者真正开始尝试之前拒绝他们的访问,从而关闭填充神谕攻击。
关于Padding Oracle的进一步研究
任何攻击者可以解密敏感信息的方法都可能成为一个真正的噩梦。但是,我们希望你已经学会了相当多的好方法,以防止这种情况首先发生。
要进一步阅读,你可以看一下OWASP的定义和padding oracle上的检查表。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台培训网络安全团队成为终极网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。
你认为你现在就能完成挫败填充式甲骨文攻击的任务吗?在Secure Code Warrior 平台上试试吧。
资源
安全技能基准测试:简化企业安全设计
寻找有关 "按设计确保安全 "计划成功与否的有意义的数据是众所周知的难题。首席信息安全官(CISO)在试图证明投资回报率(ROI)和安全计划活动在人员和公司层面上的商业价值时,往往会面临挑战。更不用说,企业要深入了解自己的组织是如何以当前的行业标准为基准的,更是难上加难。美国总统的《国家网络安全战略》向利益相关者提出了 "通过设计实现安全和弹性 "的挑战。让 "按设计保证安全 "计划发挥作用的关键不仅在于为开发人员提供确保代码安全的技能,还在于向监管机构保证这些技能已经到位。在本演讲中,我们将分享大量定性和定量数据,这些数据来自多个主要来源,包括从超过 25 万名开发人员那里收集的内部数据点、数据驱动的客户洞察力以及公共研究。利用这些数据点的汇总,我们旨在传达一个跨多个垂直领域的 "按设计保证安全 "计划的现状。报告详细阐述了这一领域目前未得到充分利用的原因、成功的技能提升计划对降低网络安全风险的重大影响,以及消除代码库中各类漏洞的潜力。