通灵签名--你需要知道什么
2022年4月19日,尼尔-马登(Neil Madden)披露了Oracle Java 15至18,以及OpenJDK 15、17和18中的一个漏洞。该漏洞在于ECDSA签名的加密技术,它允许攻击者完全绕过这些签名的检查。
鉴于ECDSA签名的晦涩难懂,我们很容易看到有关这一漏洞的标题,并直接略过它们。然而,ECDSA签名实际上在保护整个互联网的系统方面发挥着关键的作用,如认证。
在我们深入探讨细节之前,如果你想亲身体验一下黑客是如何利用心理学签名的。请直接跳入我们的免费实验室--Missions,亲自体验一下。
ECDSA有什么大不了的?
你可能以前没有听说过ECDSA。它是椭圆曲线数字签名算法的简称,是一种利用椭圆曲线的数学特性的密码学,提供了目前行业中最强大的一些密码学安全性。
这意味着它被用于很多重要的功能,比如。
- 签署SSL证书
- 加密通信期间的握手
- SAML
- JWT签名
- OpenID Connect的签名
这意味着ECDSA是许多保护系统的最敏感功能的一个关键部分。绕过签名检查的能力将有可能是相当大的破坏性。
该漏洞是如何被利用的?
不幸的是,ECDSA的数学原理有些复杂。但要知道的关键是,ECDSA签名包含2个信息:R和S。
这些数字是用来计算签名的有效性的。数值r是使用方程右边的r和s进行计算的 "结果"(左边)。鉴于乘以0是一个坏主意,ECDSA规范明确要求,如果r或s的值曾经是0,它们应该被丢弃。
但是ECDSA的Java实现忘记了考虑这一点。因此,它将接受一个r和s都是0的签名,这将永远是真的。我们可以用一个JWT的例子来证明这一点,显示它是多么容易。使用https://token.dev/,我们可以生成一个算法为ES256的令牌,类似于一个应用程序生成的令牌。
回顾一下,一个JWT被分成3个部分。
- 页眉(蓝色)
- 有效载荷(绿色)
- 签名(红色)
现在,如果我们想绕过签名检查,我们该怎么做呢?签名指定了r和s的值,并以DER格式进行编码。
让我们改变我们的JWT以使用这个新的签名。注意,在JWTs中,不包括等号。
现在,我们的签名将r和s设置为0,在易受攻击的Java版本中,现在对于你指定的任何有效载荷,签名检查都会成功。
谁会受到影响,如何减轻影响?
该漏洞同时影响到Oracle Java和OpenJDK。这些漏洞包括
Oracle Java SE(以及旧的、不支持的版本)。
- 18
- 17.0.2
Oracle GraalVM企业版。
- 22.0.0.2
- 21.3.1
OpenJDK。
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
甲骨文和OpenJDK都发布了建议,并为该问题打了补丁,可以立即应用。
防御该漏洞的实践操作
在Secure Code Warrior ,我们努力为开发者提供最相关的信息和关键漏洞的实践练习,不管是像心理学签名这样的最新漏洞,还是已经存在多年的漏洞。
我们相信,为了真正地控制风险,有必要让开发人员了解防御机制,并从一开始就编写安全的代码。这就是为什么我们为你和受影响的团队创建了一个关于这个漏洞(以及许多其他漏洞)的逐步演练。
在演练中,你将能够按照指示利用JWTs中的Physic Signature,并看到对一个正常运行的应用程序的实时影响。
现在就试试吧。
2022年4月19日,尼尔-马登(Neil Madden)披露了Oracle Java 15至18,以及OpenJDK 15、17和18中的一个漏洞。该漏洞在于ECDSA签名的加密技术,它允许攻击者完全绕过这些签名的检查。
鉴于ECDSA签名的晦涩难懂,我们很容易看到有关这一漏洞的标题,并直接略过它们。然而,ECDSA签名实际上在保护整个互联网的系统方面发挥着关键的作用,如认证。
在我们深入探讨细节之前,如果你想亲身体验一下黑客是如何利用心理学签名的。请直接跳入我们的免费实验室--Missions,亲自体验一下。
ECDSA有什么大不了的?
你可能以前没有听说过ECDSA。它是椭圆曲线数字签名算法的简称,是一种利用椭圆曲线的数学特性的密码学,提供了目前行业中最强大的一些密码学安全性。
这意味着它被用于很多重要的功能,比如。
- 签署SSL证书
- 加密通信期间的握手
- SAML
- JWT签名
- OpenID Connect的签名
这意味着ECDSA是许多保护系统的最敏感功能的一个关键部分。绕过签名检查的能力将有可能是相当大的破坏性。
该漏洞是如何被利用的?
不幸的是,ECDSA的数学原理有些复杂。但要知道的关键是,ECDSA签名包含2个信息:R和S。
这些数字是用来计算签名的有效性的。数值r是使用方程右边的r和s进行计算的 "结果"(左边)。鉴于乘以0是一个坏主意,ECDSA规范明确要求,如果r或s的值曾经是0,它们应该被丢弃。
但是ECDSA的Java实现忘记了考虑这一点。因此,它将接受一个r和s都是0的签名,这将永远是真的。我们可以用一个JWT的例子来证明这一点,显示它是多么容易。使用https://token.dev/,我们可以生成一个算法为ES256的令牌,类似于一个应用程序生成的令牌。
回顾一下,一个JWT被分成3个部分。
- 页眉(蓝色)
- 有效载荷(绿色)
- 签名(红色)
现在,如果我们想绕过签名检查,我们该怎么做呢?签名指定了r和s的值,并以DER格式进行编码。
让我们改变我们的JWT以使用这个新的签名。注意,在JWTs中,不包括等号。
现在,我们的签名将r和s设置为0,在易受攻击的Java版本中,现在对于你指定的任何有效载荷,签名检查都会成功。
谁会受到影响,如何减轻影响?
该漏洞同时影响到Oracle Java和OpenJDK。这些漏洞包括
Oracle Java SE(以及旧的、不支持的版本)。
- 18
- 17.0.2
Oracle GraalVM企业版。
- 22.0.0.2
- 21.3.1
OpenJDK。
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
甲骨文和OpenJDK都发布了建议,并为该问题打了补丁,可以立即应用。
防御该漏洞的实践操作
在Secure Code Warrior ,我们努力为开发者提供最相关的信息和关键漏洞的实践练习,不管是像心理学签名这样的最新漏洞,还是已经存在多年的漏洞。
我们相信,为了真正地控制风险,有必要让开发人员了解防御机制,并从一开始就编写安全的代码。这就是为什么我们为你和受影响的团队创建了一个关于这个漏洞(以及许多其他漏洞)的逐步演练。
在演练中,你将能够按照指示利用JWTs中的Physic Signature,并看到对一个正常运行的应用程序的实时影响。
现在就试试吧。
2022年4月19日,尼尔-马登(Neil Madden)披露了Oracle Java 15至18,以及OpenJDK 15、17和18中的一个漏洞。该漏洞在于ECDSA签名的加密技术,它允许攻击者完全绕过这些签名的检查。
鉴于ECDSA签名的晦涩难懂,我们很容易看到有关这一漏洞的标题,并直接略过它们。然而,ECDSA签名实际上在保护整个互联网的系统方面发挥着关键的作用,如认证。
在我们深入探讨细节之前,如果你想亲身体验一下黑客是如何利用心理学签名的。请直接跳入我们的免费实验室--Missions,亲自体验一下。
ECDSA有什么大不了的?
你可能以前没有听说过ECDSA。它是椭圆曲线数字签名算法的简称,是一种利用椭圆曲线的数学特性的密码学,提供了目前行业中最强大的一些密码学安全性。
这意味着它被用于很多重要的功能,比如。
- 签署SSL证书
- 加密通信期间的握手
- SAML
- JWT签名
- OpenID Connect的签名
这意味着ECDSA是许多保护系统的最敏感功能的一个关键部分。绕过签名检查的能力将有可能是相当大的破坏性。
该漏洞是如何被利用的?
不幸的是,ECDSA的数学原理有些复杂。但要知道的关键是,ECDSA签名包含2个信息:R和S。
这些数字是用来计算签名的有效性的。数值r是使用方程右边的r和s进行计算的 "结果"(左边)。鉴于乘以0是一个坏主意,ECDSA规范明确要求,如果r或s的值曾经是0,它们应该被丢弃。
但是ECDSA的Java实现忘记了考虑这一点。因此,它将接受一个r和s都是0的签名,这将永远是真的。我们可以用一个JWT的例子来证明这一点,显示它是多么容易。使用https://token.dev/,我们可以生成一个算法为ES256的令牌,类似于一个应用程序生成的令牌。
回顾一下,一个JWT被分成3个部分。
- 页眉(蓝色)
- 有效载荷(绿色)
- 签名(红色)
现在,如果我们想绕过签名检查,我们该怎么做呢?签名指定了r和s的值,并以DER格式进行编码。
让我们改变我们的JWT以使用这个新的签名。注意,在JWTs中,不包括等号。
现在,我们的签名将r和s设置为0,在易受攻击的Java版本中,现在对于你指定的任何有效载荷,签名检查都会成功。
谁会受到影响,如何减轻影响?
该漏洞同时影响到Oracle Java和OpenJDK。这些漏洞包括
Oracle Java SE(以及旧的、不支持的版本)。
- 18
- 17.0.2
Oracle GraalVM企业版。
- 22.0.0.2
- 21.3.1
OpenJDK。
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
甲骨文和OpenJDK都发布了建议,并为该问题打了补丁,可以立即应用。
防御该漏洞的实践操作
在Secure Code Warrior ,我们努力为开发者提供最相关的信息和关键漏洞的实践练习,不管是像心理学签名这样的最新漏洞,还是已经存在多年的漏洞。
我们相信,为了真正地控制风险,有必要让开发人员了解防御机制,并从一开始就编写安全的代码。这就是为什么我们为你和受影响的团队创建了一个关于这个漏洞(以及许多其他漏洞)的逐步演练。
在演练中,你将能够按照指示利用JWTs中的Physic Signature,并看到对一个正常运行的应用程序的实时影响。
现在就试试吧。
2022年4月19日,尼尔-马登(Neil Madden)披露了Oracle Java 15至18,以及OpenJDK 15、17和18中的一个漏洞。该漏洞在于ECDSA签名的加密技术,它允许攻击者完全绕过这些签名的检查。
鉴于ECDSA签名的晦涩难懂,我们很容易看到有关这一漏洞的标题,并直接略过它们。然而,ECDSA签名实际上在保护整个互联网的系统方面发挥着关键的作用,如认证。
在我们深入探讨细节之前,如果你想亲身体验一下黑客是如何利用心理学签名的。请直接跳入我们的免费实验室--Missions,亲自体验一下。
ECDSA有什么大不了的?
你可能以前没有听说过ECDSA。它是椭圆曲线数字签名算法的简称,是一种利用椭圆曲线的数学特性的密码学,提供了目前行业中最强大的一些密码学安全性。
这意味着它被用于很多重要的功能,比如。
- 签署SSL证书
- 加密通信期间的握手
- SAML
- JWT签名
- OpenID Connect的签名
这意味着ECDSA是许多保护系统的最敏感功能的一个关键部分。绕过签名检查的能力将有可能是相当大的破坏性。
该漏洞是如何被利用的?
不幸的是,ECDSA的数学原理有些复杂。但要知道的关键是,ECDSA签名包含2个信息:R和S。
这些数字是用来计算签名的有效性的。数值r是使用方程右边的r和s进行计算的 "结果"(左边)。鉴于乘以0是一个坏主意,ECDSA规范明确要求,如果r或s的值曾经是0,它们应该被丢弃。
但是ECDSA的Java实现忘记了考虑这一点。因此,它将接受一个r和s都是0的签名,这将永远是真的。我们可以用一个JWT的例子来证明这一点,显示它是多么容易。使用https://token.dev/,我们可以生成一个算法为ES256的令牌,类似于一个应用程序生成的令牌。
回顾一下,一个JWT被分成3个部分。
- 页眉(蓝色)
- 有效载荷(绿色)
- 签名(红色)
现在,如果我们想绕过签名检查,我们该怎么做呢?签名指定了r和s的值,并以DER格式进行编码。
让我们改变我们的JWT以使用这个新的签名。注意,在JWTs中,不包括等号。
现在,我们的签名将r和s设置为0,在易受攻击的Java版本中,现在对于你指定的任何有效载荷,签名检查都会成功。
谁会受到影响,如何减轻影响?
该漏洞同时影响到Oracle Java和OpenJDK。这些漏洞包括
Oracle Java SE(以及旧的、不支持的版本)。
- 18
- 17.0.2
Oracle GraalVM企业版。
- 22.0.0.2
- 21.3.1
OpenJDK。
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
甲骨文和OpenJDK都发布了建议,并为该问题打了补丁,可以立即应用。
防御该漏洞的实践操作
在Secure Code Warrior ,我们努力为开发者提供最相关的信息和关键漏洞的实践练习,不管是像心理学签名这样的最新漏洞,还是已经存在多年的漏洞。
我们相信,为了真正地控制风险,有必要让开发人员了解防御机制,并从一开始就编写安全的代码。这就是为什么我们为你和受影响的团队创建了一个关于这个漏洞(以及许多其他漏洞)的逐步演练。
在演练中,你将能够按照指示利用JWTs中的Physic Signature,并看到对一个正常运行的应用程序的实时影响。
现在就试试吧。