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


虽然对于另类摇滚乐队来说,Padding Oracle 听起来像是一个非常糟糕的名字,但它实际上是一个漏洞,攻击者可以在不知道加密密钥的情况下利用它来解密信息。

Secure Code Warrior peut aider votre organisation à sécuriser le code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, directeur de la sécurité de l'information ou tout autre professionnel concerné par la sécurité, nous pouvons aider votre organisation à réduire les risques liés au code non sécurisé.
Veuillez réserver une démonstration.

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

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

Veuillez cliquer sur le lien ci-dessous pour télécharger le PDF de cette ressource.
Secure Code Warrior peut aider votre organisation à sécuriser le code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, directeur de la sécurité de l'information ou tout autre professionnel concerné par la sécurité, nous pouvons aider votre organisation à réduire les risques liés au code non sécurisé.
Veuillez consulter le rapport.Veuillez réserver une démonstration.虽然对于另类摇滚乐队来说,Padding Oracle 听起来像是一个非常糟糕的名字,但它实际上是一个漏洞,攻击者可以在不知道加密密钥的情况下利用它来解密信息。
就攻击者的总体难度而言,这个难度接近顶峰。我们谈论的不是神奇的解密按钮,而是一个艰苦的过程,黑客可以在其中检查发送给他们的有关单元格填充的错误消息,并用它来确定加密数据的结束位置和填充的起点。然后,他们可以找出加密中的各种位,如果有足够的时间和输入进行检查,他们就有可能破解它。
值得庆幸的是,有几个相对简单的步骤可以消除攻击者使用填充预言机解密加密数据的能力。在本集中,我们将学习:
- Comment cela fonctionne-t-il ?
- 为什么这个漏洞如此危险
- 如何设置防御措施来防止这种情况发生。
Padding Oracle 是如何工作的?
密码区块链 (CBC) 是一种创建分组密码的方法,其中使用适用于整个信息链的加密密钥对整个信息序列(例如存储在数据库中的单元)进行加密。使用 CBC 时,单个密文块的加密将取决于所有后续区块。从理论上讲,这使得加密变得非常强大,因为任何东西,即使是区块的重新排序,都会损坏数据。
CBC 密码(以及任何分组密码,就此而言)的问题在于,它们只能使用大小精确的区块进行加密。通常,这是以 8 或 16 字节的大小完成的。那么,当CBC需要将2字节的数据放入一个16字节的密文单元中时会发生什么?它将使用填充,基本上只是胡说八道的字符,来填补空白,使单位大小合适。
大多数填充方案都是众所周知的,其中 PKCS #7 是最受欢迎的方案之一,因此攻击者可能知道正在使用哪种填充。例如,如果 CBC 需要在一个块中填充五个字符,PKCS #7 将使用在纯文本之后重复五次的字节值 0x05。
攻击者利用他们对CBC和填充方案的了解向主机服务器(也称为预言机)发送查询。如果他们可以使用正确的工具,他们可以强制服务器告诉他们查询中的填充是否不正确。为此,他们可以将密码中的每个字节从零循环到255,直到服务器告诉他们填充是正确的。然后,他们转到下一个单元并重复该过程,记录每种情况下填充的起始位置。
这不允许他们解密消息甚至单元,但可以让他们根据纯文本的结束位置和填充的起点来映射链中的每个链接。他们还可以使用异或计算来计算原始纯文本最后一个字节的值。
为什么 Padding Oracle 如此危险?
黑客之所以会投入这么多精力来破解加密,是因为潜在的回报。很少有人加密不值钱的东西。东道组织面临的危险取决于被泄露的数据。这可能包括密码、用户账户、财务信息、信用卡号、患者记录、敏感通信或任意数量的备受追捧和有价值的信息。
使用 padding oracle 也可以成为后续攻击的门户。例如,如果攻击者可以使用 padding oracle 窃取密码,那么提升他们的权限并更深入地渗透到网络中就是一项简单的次要任务。
每个人都认为加密是抵御窥探或入侵的终极防御。但是,加密科学与可能打破加密科学的科学之间的来回交流已经持续了几个世纪。Padding oracle 只是让攻击者占据优势的一种方法。
让 Padding Oracle 攻击实现硬着陆
值得庆幸的是,有很多方法可以防止 padding oracle。最好的方法之一是使用更强的加密操作模式,例如伽罗瓦/计数器模式(GCM)或偏移码本模式(OCB)。它与 CBC 的不同之处在于它使用大小为 128 位的密码块。它还对每个数据块使用计数器,然后使用该数字来创建密文。换句话说,它不容易受到填充预言机攻击的影响。
实施良好的错误处理控制也会严重损害攻击者的成功机会。由于填充预言机攻击依赖于信息泄露,因此在加密/解密失败时返回通用错误消息,而不是特定的填充错误。
您还可以实现消息身份验证码 (MAC)。MAC 值允许验证者使用密钥检测消息内容的任何更改,从而保护数据的完整性及其真实性。
最后,所有填充预言机攻击都需要重复查询。可以发出 200 多个请求,要求计算出单个单元的填充方案,乘以链中受保护的信息单元的数量。通过限制来自同一来源的请求数量,你可以在攻击者真正开始尝试之前拒绝他们访问,从而关闭填充预言机攻击。
关于 Padding Oracle 的进一步研究
攻击者可以解密敏感信息的任何方法都可能成为一场真正的噩梦。但是,我们希望你从一开始就学到了很多防止这种情况发生的好方法。
要进一步阅读,你可以看看 OWASP 定义和清单 在 padding oracle 上。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客。
你认为你现在能胜任阻止 padding oracle 攻击的任务吗?在 Secure Code Warrior 平台上试一试:
Table des matières

Secure Code Warrior peut aider votre organisation à sécuriser le code tout au long du cycle de vie du développement logiciel et à instaurer une culture qui accorde la priorité à la cybersécurité. Que vous soyez responsable de la sécurité des applications, développeur, directeur de la sécurité de l'information ou tout autre professionnel concerné par la sécurité, nous pouvons aider votre organisation à réduire les risques liés au code non sécurisé.
Veuillez réserver une démonstration.TéléchargerRessources pour vous aider à démarrer
Formation sur les codes de sécurité : thèmes et contenu
Notre contenu de pointe évolue constamment pour s'adapter au paysage changeant du développement logiciel, tout en tenant compte de votre rôle. Les sujets abordés couvrent tout, de l'IA à l'injection XQuery, et s'adressent à divers postes, des architectes et ingénieurs aux chefs de produit et responsables de l'assurance qualité. Découvrez un aperçu par thème et par rôle de ce que notre catalogue de contenu a à offrir.
La Chambre de commerce établit la norme en matière de sécurité à grande échelle axée sur les développeurs
La Chambre de commerce néerlandaise explique comment elle a intégré le codage sécurisé dans le développement quotidien grâce à des certifications basées sur les rôles, à l'évaluation comparative du Trust Score et à une culture de responsabilité partagée en matière de sécurité.
Modélisation des menaces avec l'IA : transformer chaque développeur en modélisateur de menaces
Vous repartirez mieux équipé pour aider les développeurs à combiner les idées et les techniques de modélisation des menaces avec les outils d'IA qu'ils utilisent déjà pour renforcer la sécurité, améliorer la collaboration et créer des logiciels plus résilients dès le départ.
Ressources pour vous aider à démarrer
Cybermon est de retour : la mission AI pour vaincre le boss est désormais disponible sur demande.
Cybermon 2025 : la campagne « Vaincre le boss » est désormais disponible toute l'année dans SCW. La guerre de sécurité avancée de l'IA/LLM tribale, le renforcement de l'IA de sécurité à grande échelle.
Interprétation de la loi sur la résilience des réseaux : que signifie la sécurité par le biais de la conception et du développement de logiciels ?
Comprenez les exigences de la loi européenne sur la résilience des réseaux (CRA), à qui elle s'applique et comment les équipes d'ingénierie peuvent s'y préparer grâce à des pratiques de conception, à la prévention des vulnérabilités et au renforcement des capacités des développeurs.
Facteur déterminant 1 : des critères de réussite clairs et mesurables
Le catalyseur n° 1 constitue le premier volet de notre série en dix parties consacrée aux facteurs de réussite. Il démontre comment relier la sécurité du code aux résultats opérationnels, tels que la réduction des risques et l'accélération de la maturité des programmes à long terme.



%20(1).avif)
.avif)
