サイキックシグネチャー - 知っておくべきこと
2022年4月19日、Neil Maddenは、Oracle Java 15から18、およびOpenJDK 15、17、18における脆弱性を公開しました。この脆弱性は、ECDSA署名の暗号にあり、攻撃者はこれらの署名の署名チェックを完全にバイパスすることが可能です。
ECDSA署名があまり知られていないため、この脆弱性に関する見出しを目にしても、すぐに見過ごしてしまいがちです。しかし、ECDSA署名は、認証のような重要なタスクにおいて、インターネット上のシステムを保護する上で重要な役割を担っています。
詳細について説明する前に、ハッカーがどのようにサイキックシグネチャを悪用するのかを実際に体験してみたいという方は、無料のラボに直接アクセスしてみてください。無料のラボ(Missions)にアクセスし、ご自身で試してみてください。
ECDSAの何が問題なのか?
ECDSAという言葉を聞いたことがない人もいるかもしれない。Elliptic Curve Digital Signature Algorithmの略で、楕円曲線の数学的性質を利用した暗号の一種で、現時点では業界で最も強力な暗号のセキュリティを提供するものです。
というように、重要な機能に多く使われているということです。
- SSL証明書の署名について
- 暗号化通信時のハンドシェイク
- サムル
- 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を変更しましょう。JWTでは、等号は含まれないことに注意してください。
これで、署名のrと sが0に設定され、脆弱なバージョンのJavaでは、指定したペイロードに対して署名チェックが成功するようになりました。
誰が影響を受けるのか、どう軽減するのか?
この脆弱性は、Oracle JavaとOpenJDKの両方に影響します。これらは以下の通りです。
Oracle Java SE(および旧バージョン、非サポート)。
- 18
- 17.0.2
Oracle GraalVM Enterprise Editionです。
- 22.0.0.2
- 21.3.1
OpenJDKです。
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
Oracle社、OpenJDK社ともに勧告を発表しており、すぐにでも適用可能なパッチがあります。
本脆弱性に対する防御のためのハンズオンプラクティス
ここSecure Code Warrior では、サイキックシグネチャーのような最新の脆弱性から、何年も前から存在する脆弱性まで、重要な脆弱性に関する最も適切な情報と実践的な演習を開発者に提供するよう努力しています。
私たちは、リスクを真に抑えるには、開発者が防御メカニズムを理解し、最初から安全なコードを書けるようにすることが必要だと考えています。そのため、この脆弱性(および他の多くの脆弱性)の段階的なウォークスルーを作成し、あなたと影響を受けるチームのために提供しています。
ウォークスルーでは、指示に従ってJWTのPhysic Signatureを悪用し、機能しているアプリへの影響をリアルタイムに確認することができます。
今すぐお試しください。
サイキックシグネチャーの脆弱性は、認証などの重要なタスクでシステムを保護するECDSAシグネチャーの暗号に存在します。ハッカーは、この脆弱性を利用して、あらゆる署名チェックをバイパスすることができます。この記事では、この脆弱性が何であるか、そしてどのようにそれを軽減するかを説明します。
Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。
デモを予約する2022年4月19日、Neil Maddenは、Oracle Java 15から18、およびOpenJDK 15、17、18における脆弱性を公開しました。この脆弱性は、ECDSA署名の暗号にあり、攻撃者はこれらの署名の署名チェックを完全にバイパスすることが可能です。
ECDSA署名があまり知られていないため、この脆弱性に関する見出しを目にしても、すぐに見過ごしてしまいがちです。しかし、ECDSA署名は、認証のような重要なタスクにおいて、インターネット上のシステムを保護する上で重要な役割を担っています。
詳細について説明する前に、ハッカーがどのようにサイキックシグネチャを悪用するのかを実際に体験してみたいという方は、無料のラボに直接アクセスしてみてください。無料のラボ(Missions)にアクセスし、ご自身で試してみてください。
ECDSAの何が問題なのか?
ECDSAという言葉を聞いたことがない人もいるかもしれない。Elliptic Curve Digital Signature Algorithmの略で、楕円曲線の数学的性質を利用した暗号の一種で、現時点では業界で最も強力な暗号のセキュリティを提供するものです。
というように、重要な機能に多く使われているということです。
- SSL証明書の署名について
- 暗号化通信時のハンドシェイク
- サムル
- 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を変更しましょう。JWTでは、等号は含まれないことに注意してください。
これで、署名のrと sが0に設定され、脆弱なバージョンのJavaでは、指定したペイロードに対して署名チェックが成功するようになりました。
誰が影響を受けるのか、どう軽減するのか?
この脆弱性は、Oracle JavaとOpenJDKの両方に影響します。これらは以下の通りです。
Oracle Java SE(および旧バージョン、非サポート)。
- 18
- 17.0.2
Oracle GraalVM Enterprise Editionです。
- 22.0.0.2
- 21.3.1
OpenJDKです。
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
Oracle社、OpenJDK社ともに勧告を発表しており、すぐにでも適用可能なパッチがあります。
本脆弱性に対する防御のためのハンズオンプラクティス
ここSecure Code Warrior では、サイキックシグネチャーのような最新の脆弱性から、何年も前から存在する脆弱性まで、重要な脆弱性に関する最も適切な情報と実践的な演習を開発者に提供するよう努力しています。
私たちは、リスクを真に抑えるには、開発者が防御メカニズムを理解し、最初から安全なコードを書けるようにすることが必要だと考えています。そのため、この脆弱性(および他の多くの脆弱性)の段階的なウォークスルーを作成し、あなたと影響を受けるチームのために提供しています。
ウォークスルーでは、指示に従ってJWTのPhysic Signatureを悪用し、機能しているアプリへの影響をリアルタイムに確認することができます。
今すぐお試しください。
2022年4月19日、Neil Maddenは、Oracle Java 15から18、およびOpenJDK 15、17、18における脆弱性を公開しました。この脆弱性は、ECDSA署名の暗号にあり、攻撃者はこれらの署名の署名チェックを完全にバイパスすることが可能です。
ECDSA署名があまり知られていないため、この脆弱性に関する見出しを目にしても、すぐに見過ごしてしまいがちです。しかし、ECDSA署名は、認証のような重要なタスクにおいて、インターネット上のシステムを保護する上で重要な役割を担っています。
詳細について説明する前に、ハッカーがどのようにサイキックシグネチャを悪用するのかを実際に体験してみたいという方は、無料のラボに直接アクセスしてみてください。無料のラボ(Missions)にアクセスし、ご自身で試してみてください。
ECDSAの何が問題なのか?
ECDSAという言葉を聞いたことがない人もいるかもしれない。Elliptic Curve Digital Signature Algorithmの略で、楕円曲線の数学的性質を利用した暗号の一種で、現時点では業界で最も強力な暗号のセキュリティを提供するものです。
というように、重要な機能に多く使われているということです。
- SSL証明書の署名について
- 暗号化通信時のハンドシェイク
- サムル
- 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を変更しましょう。JWTでは、等号は含まれないことに注意してください。
これで、署名のrと sが0に設定され、脆弱なバージョンのJavaでは、指定したペイロードに対して署名チェックが成功するようになりました。
誰が影響を受けるのか、どう軽減するのか?
この脆弱性は、Oracle JavaとOpenJDKの両方に影響します。これらは以下の通りです。
Oracle Java SE(および旧バージョン、非サポート)。
- 18
- 17.0.2
Oracle GraalVM Enterprise Editionです。
- 22.0.0.2
- 21.3.1
OpenJDKです。
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
Oracle社、OpenJDK社ともに勧告を発表しており、すぐにでも適用可能なパッチがあります。
本脆弱性に対する防御のためのハンズオンプラクティス
ここSecure Code Warrior では、サイキックシグネチャーのような最新の脆弱性から、何年も前から存在する脆弱性まで、重要な脆弱性に関する最も適切な情報と実践的な演習を開発者に提供するよう努力しています。
私たちは、リスクを真に抑えるには、開発者が防御メカニズムを理解し、最初から安全なコードを書けるようにすることが必要だと考えています。そのため、この脆弱性(および他の多くの脆弱性)の段階的なウォークスルーを作成し、あなたと影響を受けるチームのために提供しています。
ウォークスルーでは、指示に従ってJWTのPhysic Signatureを悪用し、機能しているアプリへの影響をリアルタイムに確認することができます。
今すぐお試しください。
2022年4月19日、Neil Maddenは、Oracle Java 15から18、およびOpenJDK 15、17、18における脆弱性を公開しました。この脆弱性は、ECDSA署名の暗号にあり、攻撃者はこれらの署名の署名チェックを完全にバイパスすることが可能です。
ECDSA署名があまり知られていないため、この脆弱性に関する見出しを目にしても、すぐに見過ごしてしまいがちです。しかし、ECDSA署名は、認証のような重要なタスクにおいて、インターネット上のシステムを保護する上で重要な役割を担っています。
詳細について説明する前に、ハッカーがどのようにサイキックシグネチャを悪用するのかを実際に体験してみたいという方は、無料のラボに直接アクセスしてみてください。無料のラボ(Missions)にアクセスし、ご自身で試してみてください。
ECDSAの何が問題なのか?
ECDSAという言葉を聞いたことがない人もいるかもしれない。Elliptic Curve Digital Signature Algorithmの略で、楕円曲線の数学的性質を利用した暗号の一種で、現時点では業界で最も強力な暗号のセキュリティを提供するものです。
というように、重要な機能に多く使われているということです。
- SSL証明書の署名について
- 暗号化通信時のハンドシェイク
- サムル
- 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を変更しましょう。JWTでは、等号は含まれないことに注意してください。
これで、署名のrと sが0に設定され、脆弱なバージョンのJavaでは、指定したペイロードに対して署名チェックが成功するようになりました。
誰が影響を受けるのか、どう軽減するのか?
この脆弱性は、Oracle JavaとOpenJDKの両方に影響します。これらは以下の通りです。
Oracle Java SE(および旧バージョン、非サポート)。
- 18
- 17.0.2
Oracle GraalVM Enterprise Editionです。
- 22.0.0.2
- 21.3.1
OpenJDKです。
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
Oracle社、OpenJDK社ともに勧告を発表しており、すぐにでも適用可能なパッチがあります。
本脆弱性に対する防御のためのハンズオンプラクティス
ここSecure Code Warrior では、サイキックシグネチャーのような最新の脆弱性から、何年も前から存在する脆弱性まで、重要な脆弱性に関する最も適切な情報と実践的な演習を開発者に提供するよう努力しています。
私たちは、リスクを真に抑えるには、開発者が防御メカニズムを理解し、最初から安全なコードを書けるようにすることが必要だと考えています。そのため、この脆弱性(および他の多くの脆弱性)の段階的なウォークスルーを作成し、あなたと影響を受けるチームのために提供しています。
ウォークスルーでは、指示に従ってJWTのPhysic Signatureを悪用し、機能しているアプリへの影響をリアルタイムに確認することができます。
今すぐお試しください。