博客

通灵签名--你需要知道什么

Charlie Eriksen
2022年4月27日出版

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个信息:RS。 

这些数字是用来计算签名的有效性的。数值r是使用方程右边的rs进行计算的 "结果"(左边)。鉴于乘以0是一个坏主意,ECDSA规范明确要求,如果rs的值曾经是0,它们应该被丢弃。 

但是ECDSA的Java实现忘记了考虑这一点。因此,它将接受一个rs都是0的签名,这将永远是真的。我们可以用一个JWT的例子来证明这一点,显示它是多么容易。使用https://token.dev/,我们可以生成一个算法为ES256的令牌,类似于一个应用程序生成的令牌。

用ES256算法生成的令牌

回顾一下,一个JWT被分成3个部分。

  • 页眉(蓝色)
  • 有效载荷(绿色)
  • 签名(红色)

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

签名值的DER编码

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

使用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 ,我们努力为开发者提供最相关的信息和关键漏洞的实践练习,不管是像心理学签名这样的最新漏洞,还是已经存在多年的漏洞。

我们相信,为了真正地控制风险,有必要让开发人员了解防御机制,并从一开始就编写安全的代码。这就是为什么我们为你和受影响的团队创建了一个关于这个漏洞(以及许多其他漏洞)的逐步演练。 

在演练中,你将能够按照指示利用JWTs中的Physic Signature,并看到对一个正常运行的应用程序的实时影响。

现在就试试吧。

查看资源
查看资源

心理签名的漏洞在于ECDSA签名的加密,它保护系统的关键任务,如认证。黑客可以利用这个漏洞绕过任何签名检查。我们将在这篇文章中解释它是什么以及如何缓解它。

想了解更多信息?

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

预定一个演示
分享到
作者
Charlie Eriksen
2022年4月27日出版

分享到

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个信息:RS。 

这些数字是用来计算签名的有效性的。数值r是使用方程右边的rs进行计算的 "结果"(左边)。鉴于乘以0是一个坏主意,ECDSA规范明确要求,如果rs的值曾经是0,它们应该被丢弃。 

但是ECDSA的Java实现忘记了考虑这一点。因此,它将接受一个rs都是0的签名,这将永远是真的。我们可以用一个JWT的例子来证明这一点,显示它是多么容易。使用https://token.dev/,我们可以生成一个算法为ES256的令牌,类似于一个应用程序生成的令牌。

用ES256算法生成的令牌

回顾一下,一个JWT被分成3个部分。

  • 页眉(蓝色)
  • 有效载荷(绿色)
  • 签名(红色)

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

签名值的DER编码

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

使用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 ,我们努力为开发者提供最相关的信息和关键漏洞的实践练习,不管是像心理学签名这样的最新漏洞,还是已经存在多年的漏洞。

我们相信,为了真正地控制风险,有必要让开发人员了解防御机制,并从一开始就编写安全的代码。这就是为什么我们为你和受影响的团队创建了一个关于这个漏洞(以及许多其他漏洞)的逐步演练。 

在演练中,你将能够按照指示利用JWTs中的Physic Signature,并看到对一个正常运行的应用程序的实时影响。

现在就试试吧。

查看资源
查看资源

请填写下表下载报告

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

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。

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个信息:RS。 

这些数字是用来计算签名的有效性的。数值r是使用方程右边的rs进行计算的 "结果"(左边)。鉴于乘以0是一个坏主意,ECDSA规范明确要求,如果rs的值曾经是0,它们应该被丢弃。 

但是ECDSA的Java实现忘记了考虑这一点。因此,它将接受一个rs都是0的签名,这将永远是真的。我们可以用一个JWT的例子来证明这一点,显示它是多么容易。使用https://token.dev/,我们可以生成一个算法为ES256的令牌,类似于一个应用程序生成的令牌。

用ES256算法生成的令牌

回顾一下,一个JWT被分成3个部分。

  • 页眉(蓝色)
  • 有效载荷(绿色)
  • 签名(红色)

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

签名值的DER编码

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

使用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 ,我们努力为开发者提供最相关的信息和关键漏洞的实践练习,不管是像心理学签名这样的最新漏洞,还是已经存在多年的漏洞。

我们相信,为了真正地控制风险,有必要让开发人员了解防御机制,并从一开始就编写安全的代码。这就是为什么我们为你和受影响的团队创建了一个关于这个漏洞(以及许多其他漏洞)的逐步演练。 

在演练中,你将能够按照指示利用JWTs中的Physic Signature,并看到对一个正常运行的应用程序的实时影响。

现在就试试吧。

访问资源

点击下面的链接,下载本资料的 PDF 文件。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

查看报告预定一个演示
下载PDF
查看资源
分享到
想了解更多信息?

分享到
作者
Charlie Eriksen
2022年4月27日出版

分享到

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个信息:RS。 

这些数字是用来计算签名的有效性的。数值r是使用方程右边的rs进行计算的 "结果"(左边)。鉴于乘以0是一个坏主意,ECDSA规范明确要求,如果rs的值曾经是0,它们应该被丢弃。 

但是ECDSA的Java实现忘记了考虑这一点。因此,它将接受一个rs都是0的签名,这将永远是真的。我们可以用一个JWT的例子来证明这一点,显示它是多么容易。使用https://token.dev/,我们可以生成一个算法为ES256的令牌,类似于一个应用程序生成的令牌。

用ES256算法生成的令牌

回顾一下,一个JWT被分成3个部分。

  • 页眉(蓝色)
  • 有效载荷(绿色)
  • 签名(红色)

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

签名值的DER编码

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

使用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 ,我们努力为开发者提供最相关的信息和关键漏洞的实践练习,不管是像心理学签名这样的最新漏洞,还是已经存在多年的漏洞。

我们相信,为了真正地控制风险,有必要让开发人员了解防御机制,并从一开始就编写安全的代码。这就是为什么我们为你和受影响的团队创建了一个关于这个漏洞(以及许多其他漏洞)的逐步演练。 

在演练中,你将能够按照指示利用JWTs中的Physic Signature,并看到对一个正常运行的应用程序的实时影响。

现在就试试吧。

目录

下载PDF
查看资源
想了解更多信息?

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。

预定一个演示下载
分享到
资源中心
资源中心