サイキックシグネチャー - 知っておくべきこと
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を悪用し、機能しているアプリへの影響をリアルタイムに確認することができます。
今すぐお試しください。
始めるためのリソース
セキュア・バイ・デザインベストプラクティスの定義、開発者の能力向上、予防的セキュリティ成果のベンチマーク
このリサーチペーパーでは、Secure Code Warrior 共同設立者であるピーテル・ダニュー(Pieter Danhieux)氏とマティアス・マドゥ(Matias Madou)博士、そして専門家であるクリス・イングリス(Chris Inglis)氏(元米国サイバーディレクター、現パラディン・キャピタル・グループ戦略顧問)、デヴィン・リンチ(Devin Lynch)氏(パラディン・グローバル・インスティテュート・シニアディレクター)が、CISO、アプリケーション・セキュリティ担当副社長、ソフトウェア・セキュリティの専門家など、企業のセキュリティ・リーダー20人以上への詳細なインタビューから得られた主な知見を明らかにします。
セキュリティ スキルのベンチマーク: 企業におけるセキュアな設計の合理化
セキュアバイデザイン(SBD)構想の成功に関する有意義なデータを見つけることは、非常に困難である。CISO は、セキュリティプログラム活動の投資収益率(ROI)とビジネス価値を、従業員レベルと企業レベルの両方で証明しようとすると、しばしば困難に直面します。言うまでもなく、企業にとって、現在の業界標準に対して自社の組織がどのようにベンチマークされているかを把握することは特に困難です。大統領の国家サイバーセキュリティ戦略は、関係者に「デザインによるセキュリティとレジリエンスを受け入れる」ことを求めている。セキュアバイデザインの取り組みを成功させる鍵は、開発者にセキュアなコードを保証するスキルを与えるだけでなく、規制当局にそれらのスキルが整っていることを保証することである。本プレゼンテーションでは、25万人以上の開発者から収集した社内データ、データに基づく顧客の洞察、公的研究など、複数の一次ソースから得られた無数の定性的・定量的データを紹介します。こうしたデータ・ポイントの集積を活用することで、複数の業種におけるセキュア・バイ・デザイン・イニシアチブの現状をお伝えすることを目的としています。本レポートでは、この領域が現在十分に活用されていない理由、スキルアッププログラムの成功がサイバーセキュリティのリスク軽減に与える大きな影響、コードベースから脆弱性のカテゴリーを排除できる可能性について詳述しています。
始めるためのリソース
明らかになった:サイバー業界はセキュア・バイ・デザインをどのように定義しているか
最新のホワイトペーパーでは、当社の共同設立者であるピーテル・ダニュー(Pieter Danhieux)氏とマティアス・マドゥ(Matias Madou)博士が、CISO、AppSecリーダー、セキュリティ専門家を含む20人以上の企業セキュリティリーダーと対談し、このパズルの重要なピースを見つけ出し、Secure by Design運動の背後にある現実を明らかにしました。セキュア・バイ・デザインは、セキュリティ・チーム全体で共有された野心ですが、共有されたプレイブックはありません。