SCW Icons
hero bg no divider
Blog

心灵签名-你需要知道的

Charlie Eriksen
Published Apr 27, 2022
Last updated on Mar 09, 2026

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 是使用两者的计算的 “结果”(左侧) rs 在方程的右边。鉴于乘以 0 是个坏主意,ECDSA 规范明确指出,如果值为 r 要么 s 永远是 0,它们应该被丢弃。

但是ECDSA的Java实现却忘记了这一点。因此,它将接受两者的签名 rs 是 0,这将永远是正确的。我们可以用 JWT 的例子来演示这一点,展示它有多简单。使用 https://token.dev/,我们可以使用算法 ES256 生成令牌,类似于应用程序生成的代币:

使用算法 ES256 生成的代币

回想一下,一个 JWT 分为 3 个部分:

  • 标题(蓝色)
  • 有效载荷(绿色)
  • 签名(红色)

现在,如果我们想绕过签名检查,我们该怎么做呢?签名指定了的值 r 和 s,并以 DER 格式编码。

DER 对签名值进行编码

让我们更改我们的 JWT 以使用这个新签名。请注意,在 JWT 中,不包括等号。

使用 DER 编码签名的新 JWT

现在,我们的签名有 rs 设置为 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,并实时查看其对正常运行的应用程序的影响。

现在就试试吧。

查看资源
查看资源

Psychic Signature 漏洞存在于 ECDSA 签名的加密中,它可以保护系统执行身份验证等关键任务。黑客可以利用此漏洞绕过任何签名检查。我们将在这篇文章中解释它是什么以及如何缓解它。

对更多感兴趣?

learn more

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

预订演示
分享到:
linkedin brandsSocialx logo
作者
Charlie Eriksen
Published Apr 27, 2022

分享到:
linkedin brandsSocialx logo

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 是使用两者的计算的 “结果”(左侧) rs 在方程的右边。鉴于乘以 0 是个坏主意,ECDSA 规范明确指出,如果值为 r 要么 s 永远是 0,它们应该被丢弃。

但是ECDSA的Java实现却忘记了这一点。因此,它将接受两者的签名 rs 是 0,这将永远是正确的。我们可以用 JWT 的例子来演示这一点,展示它有多简单。使用 https://token.dev/,我们可以使用算法 ES256 生成令牌,类似于应用程序生成的代币:

使用算法 ES256 生成的代币

回想一下,一个 JWT 分为 3 个部分:

  • 标题(蓝色)
  • 有效载荷(绿色)
  • 签名(红色)

现在,如果我们想绕过签名检查,我们该怎么做呢?签名指定了的值 r 和 s,并以 DER 格式编码。

DER 对签名值进行编码

让我们更改我们的 JWT 以使用这个新签名。请注意,在 JWT 中,不包括等号。

使用 DER 编码签名的新 JWT

现在,我们的签名有 rs 设置为 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,并实时查看其对正常运行的应用程序的影响。

现在就试试吧。

查看资源
查看资源

填写下面的表格下载报告

我们希望获得您的许可,以便向您发送有关我们的产品和/或相关安全编码主题的信息。我们将始终非常谨慎地对待您的个人信息,绝不会出于营销目的将其出售给其他公司。

提交
scw success icon
scw error icon
要提交表单,请启用 “分析” Cookie。完成后,可以随意再次禁用它们。

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 是使用两者的计算的 “结果”(左侧) rs 在方程的右边。鉴于乘以 0 是个坏主意,ECDSA 规范明确指出,如果值为 r 要么 s 永远是 0,它们应该被丢弃。

但是ECDSA的Java实现却忘记了这一点。因此,它将接受两者的签名 rs 是 0,这将永远是正确的。我们可以用 JWT 的例子来演示这一点,展示它有多简单。使用 https://token.dev/,我们可以使用算法 ES256 生成令牌,类似于应用程序生成的代币:

使用算法 ES256 生成的代币

回想一下,一个 JWT 分为 3 个部分:

  • 标题(蓝色)
  • 有效载荷(绿色)
  • 签名(红色)

现在,如果我们想绕过签名检查,我们该怎么做呢?签名指定了的值 r 和 s,并以 DER 格式编码。

DER 对签名值进行编码

让我们更改我们的 JWT 以使用这个新签名。请注意,在 JWT 中,不包括等号。

使用 DER 编码签名的新 JWT

现在,我们的签名有 rs 设置为 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,并实时查看其对正常运行的应用程序的影响。

现在就试试吧。

观看网络研讨会
开始吧
learn more

点击下面的链接并下载此资源的PDF。

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

查看报告预订演示
查看资源
分享到:
linkedin brandsSocialx logo
对更多感兴趣?

分享到:
linkedin brandsSocialx logo
作者
Charlie Eriksen
Published Apr 27, 2022

分享到:
linkedin brandsSocialx logo

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 是使用两者的计算的 “结果”(左侧) rs 在方程的右边。鉴于乘以 0 是个坏主意,ECDSA 规范明确指出,如果值为 r 要么 s 永远是 0,它们应该被丢弃。

但是ECDSA的Java实现却忘记了这一点。因此,它将接受两者的签名 rs 是 0,这将永远是正确的。我们可以用 JWT 的例子来演示这一点,展示它有多简单。使用 https://token.dev/,我们可以使用算法 ES256 生成令牌,类似于应用程序生成的代币:

使用算法 ES256 生成的代币

回想一下,一个 JWT 分为 3 个部分:

  • 标题(蓝色)
  • 有效载荷(绿色)
  • 签名(红色)

现在,如果我们想绕过签名检查,我们该怎么做呢?签名指定了的值 r 和 s,并以 DER 格式编码。

DER 对签名值进行编码

让我们更改我们的 JWT 以使用这个新签名。请注意,在 JWT 中,不包括等号。

使用 DER 编码签名的新 JWT

现在,我们的签名有 rs 设置为 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,并实时查看其对正常运行的应用程序的影响。

现在就试试吧。

目录

下载PDF
查看资源
对更多感兴趣?

learn more

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

预订演示下载
分享到:
linkedin brandsSocialx logo
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子