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

2022年4月27日出版
作者:Charlie Eriksen
仔细说来?

毋庸置疑,这是个很好的机会。悬浮在空中的各种元素的三层结构。他说:"我的意思是说,我可以在这里工作,但我不能在这里工作,因为我不能在这里工作,因为我不能在这里工作。在这里,我想说的是,我们要做的是,在我们的生活中,我们要做的是,在我们的生活中,我们要做的是,在我们的生活中,我们要做的是。在这里,我想说的是,我们的生命力是有限的。

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,并看到对一个正常运行的应用程序的实时影响。

现在就试试吧。

查看资源

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

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

发表于2023年2月3日
作者:Charlie Eriksen

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,并看到对一个正常运行的应用程序的实时影响。

现在就试试吧。

输入你的详细资料以获取完整的报告。

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

Oopsie daisy