
心灵签名-你需要知道的
2022年4月19日, Neil Madden 透露了一个漏洞 在 Oracle Java 15 到 18 以及 OpenJDK 15、17 和 18 中。漏洞在于ECDSA签名的加密技术,它允许攻击者完全绕过对这些签名的签名检查。
考虑到 ECDSA 签名的模糊性质,很容易看到有关该漏洞的头条新闻,然后直接跳过这些头条新闻。但是,ECDSA签名实际上在保护互联网系统执行身份验证等关键任务方面起着关键作用。
在我们深入探讨细节之前,如果你想亲身体验黑客如何利用心灵签名。直接跳到我们的 免费实验室-任务 亲自尝试一下。
ECDSA 有什么大不了的?
你以前可能没有听说过ECDSA。它是椭圆曲线数字签名算法的简称,椭圆曲线数字签名算法是一种利用椭圆曲线的数学特性的密码学,提供了目前业界最强大的加密安全性。
这意味着它用于许多重要功能,例如:
- SSL 证书的签名
- 加密通信期间的握手
- SAML
- JWT 签名
- OpenID 连接签名
这意味着,ECDSA 是许多保护系统的最敏感功能的关键部分。绕过签名检查的能力可能会造成相当大的毁灭性。
该漏洞是如何利用的?
不幸的是,ECDSA的数学有些复杂。但是要知道的关键是,ECDSA签名包含两条信息: 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 以使用这个新签名。请注意,在 JWT 中,不包括等号。

现在,我们的签名有 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,我们努力为开发人员提供有关关键漏洞的最相关信息和动手练习,无论是诸如心理签名之类的最新漏洞,还是已经存在多年的漏洞。
我们认为,要真正控制风险,必须让开发人员从一开始就了解防御机制并编写安全代码。这就是为什么我们为您和受影响的团队创建了针对该漏洞(以及许多其他漏洞)的分步演练。
在演练中,您将能够按照说明在 JWT 中利用 Physic Signature,并实时查看其对正常运行的应用程序的影响。
现在就试试吧。


2022年4月19日, Neil Madden 透露了一个漏洞 在 Oracle Java 15 到 18 以及 OpenJDK 15、17 和 18 中。漏洞在于ECDSA签名的加密技术,它允许攻击者完全绕过对这些签名的签名检查。
考虑到 ECDSA 签名的模糊性质,很容易看到有关该漏洞的头条新闻,然后直接跳过这些头条新闻。但是,ECDSA签名实际上在保护互联网系统执行身份验证等关键任务方面起着关键作用。
在我们深入探讨细节之前,如果你想亲身体验黑客如何利用心灵签名。直接跳到我们的 免费实验室-任务 亲自尝试一下。
ECDSA 有什么大不了的?
你以前可能没有听说过ECDSA。它是椭圆曲线数字签名算法的简称,椭圆曲线数字签名算法是一种利用椭圆曲线的数学特性的密码学,提供了目前业界最强大的加密安全性。
这意味着它用于许多重要功能,例如:
- SSL 证书的签名
- 加密通信期间的握手
- SAML
- JWT 签名
- OpenID 连接签名
这意味着,ECDSA 是许多保护系统的最敏感功能的关键部分。绕过签名检查的能力可能会造成相当大的毁灭性。
该漏洞是如何利用的?
不幸的是,ECDSA的数学有些复杂。但是要知道的关键是,ECDSA签名包含两条信息: 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 以使用这个新签名。请注意,在 JWT 中,不包括等号。

现在,我们的签名有 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,我们努力为开发人员提供有关关键漏洞的最相关信息和动手练习,无论是诸如心理签名之类的最新漏洞,还是已经存在多年的漏洞。
我们认为,要真正控制风险,必须让开发人员从一开始就了解防御机制并编写安全代码。这就是为什么我们为您和受影响的团队创建了针对该漏洞(以及许多其他漏洞)的分步演练。
在演练中,您将能够按照说明在 JWT 中利用 Physic Signature,并实时查看其对正常运行的应用程序的影响。
现在就试试吧。

2022年4月19日, Neil Madden 透露了一个漏洞 在 Oracle Java 15 到 18 以及 OpenJDK 15、17 和 18 中。漏洞在于ECDSA签名的加密技术,它允许攻击者完全绕过对这些签名的签名检查。
考虑到 ECDSA 签名的模糊性质,很容易看到有关该漏洞的头条新闻,然后直接跳过这些头条新闻。但是,ECDSA签名实际上在保护互联网系统执行身份验证等关键任务方面起着关键作用。
在我们深入探讨细节之前,如果你想亲身体验黑客如何利用心灵签名。直接跳到我们的 免费实验室-任务 亲自尝试一下。
ECDSA 有什么大不了的?
你以前可能没有听说过ECDSA。它是椭圆曲线数字签名算法的简称,椭圆曲线数字签名算法是一种利用椭圆曲线的数学特性的密码学,提供了目前业界最强大的加密安全性。
这意味着它用于许多重要功能,例如:
- SSL 证书的签名
- 加密通信期间的握手
- SAML
- JWT 签名
- OpenID 连接签名
这意味着,ECDSA 是许多保护系统的最敏感功能的关键部分。绕过签名检查的能力可能会造成相当大的毁灭性。
该漏洞是如何利用的?
不幸的是,ECDSA的数学有些复杂。但是要知道的关键是,ECDSA签名包含两条信息: 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 以使用这个新签名。请注意,在 JWT 中,不包括等号。

现在,我们的签名有 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,我们努力为开发人员提供有关关键漏洞的最相关信息和动手练习,无论是诸如心理签名之类的最新漏洞,还是已经存在多年的漏洞。
我们认为,要真正控制风险,必须让开发人员从一开始就了解防御机制并编写安全代码。这就是为什么我们为您和受影响的团队创建了针对该漏洞(以及许多其他漏洞)的分步演练。
在演练中,您将能够按照说明在 JWT 中利用 Physic Signature,并实时查看其对正常运行的应用程序的影响。
现在就试试吧。
2022年4月19日, Neil Madden 透露了一个漏洞 在 Oracle Java 15 到 18 以及 OpenJDK 15、17 和 18 中。漏洞在于ECDSA签名的加密技术,它允许攻击者完全绕过对这些签名的签名检查。
考虑到 ECDSA 签名的模糊性质,很容易看到有关该漏洞的头条新闻,然后直接跳过这些头条新闻。但是,ECDSA签名实际上在保护互联网系统执行身份验证等关键任务方面起着关键作用。
在我们深入探讨细节之前,如果你想亲身体验黑客如何利用心灵签名。直接跳到我们的 免费实验室-任务 亲自尝试一下。
ECDSA 有什么大不了的?
你以前可能没有听说过ECDSA。它是椭圆曲线数字签名算法的简称,椭圆曲线数字签名算法是一种利用椭圆曲线的数学特性的密码学,提供了目前业界最强大的加密安全性。
这意味着它用于许多重要功能,例如:
- SSL 证书的签名
- 加密通信期间的握手
- SAML
- JWT 签名
- OpenID 连接签名
这意味着,ECDSA 是许多保护系统的最敏感功能的关键部分。绕过签名检查的能力可能会造成相当大的毁灭性。
该漏洞是如何利用的?
不幸的是,ECDSA的数学有些复杂。但是要知道的关键是,ECDSA签名包含两条信息: 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 以使用这个新签名。请注意,在 JWT 中,不包括等号。

现在,我们的签名有 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,我们努力为开发人员提供有关关键漏洞的最相关信息和动手练习,无论是诸如心理签名之类的最新漏洞,还是已经存在多年的漏洞。
我们认为,要真正控制风险,必须让开发人员从一开始就了解防御机制并编写安全代码。这就是为什么我们为您和受影响的团队创建了针对该漏洞(以及许多其他漏洞)的分步演练。
在演练中,您将能够按照说明在 JWT 中利用 Physic Signature,并实时查看其对正常运行的应用程序的影响。
现在就试试吧。





%20(1).avif)
.avif)
