Psychic Signaturesの脆弱性(CVE-2022–21449)の原因は何ですか?

May 08 2022
はじめにこのブログ投稿を始める前に、1つの質問をします。0は0に等しいですか?この簡単な質問をしたことで私を判断するかもしれませんが、これがこの脆弱性の基礎です。
UnsplashのMarkusSpiskeによる写真

序章

このブログ投稿を始める前に、1つ質問します。0は0に等しいですか?この簡単な質問をしたことで私を判断するかもしれませんが、これがこの脆弱性の基礎です。

CVE-2022–21449は、多くの人からPsychic Signaturesとも呼ばれ、JavaによるECDSA(Elastic Curve Digital Signature Algorithm)の実装の脆弱性であり、TLSおよびJWT署名によって引き起こされる通信の整合性が無効になる可能性があります。 ECDSAを使用します。

ソース

より難しい公開鍵暗号暗号化アルゴリズムの1つは、ECDSAとしても知られる楕円曲線デジタル署名アルゴリズム(ECDSA)です。楕円曲線暗号を使用すると、デジタル署名技術によって作成される一般的なキーよりも小さいキーを生成できます。これは、有限体上の楕円曲線の代数的構造に基づく公開鍵暗号の一種であり、楕円曲線暗号解読のサブセットです。楕円曲線を使用する暗号化は、主に疑似乱数、デジタル署名、およびその他のアプリケーションの生成に使用されます。これは、情報の受信者または送信者のIDが、署名プロセスの一部として公開鍵ペアとデジタル証明書を使用して検証される認証メカニズムです。

この脆弱性により、攻撃者はブラウザとWebサーバー間の通信を傍受する可能性があります。

このCVEにはOracleによって7.5のCVSSスコアが与えられており、 Javaバージョン15、16、17、および18はこのCVEに対して脆弱です。上記のJavaバージョンのいずれかを本番環境で使用しているアプリケーションがある場合は、この脆弱性を軽減するために、2022年4月のクリティカルパッチを適用することをお勧めします。

分析

デジタル署名は、識別と検証の目的で広く適用されています。デジタル署名は非対称暗号化を利用します。この場合、会話の暗号化に使用されるキーは、会話の復号化に使用されるキーとは異なります。これが可能なのは、キーが数学的に関連しており、これらのキーのみを一緒に使用して暗号化と復号化できるためです。他のキーの使用は機能しません。

デジタル署名は、非対称暗号化および復号化とは異なる方法で実装されます。

デジタル署名では、秘密鍵を使用して(送信される)メッセージのハッシュを検索し、受信者は送信者の公開鍵を使用して、メッセージが要求された送信者から実際に送信されたことを確認します。

Javaで使用されるデジタル署名アルゴリズムはECDSAです。RSAよりもECDSAを使用することには利点があります(これも非常に一般的です)。どちらも(他の非対称暗号化スキームと同様に)素数の使用に依存しています。優れたセキュリティを提供するには、素数を大きくする必要があります(約256ビットまたは512ビット)。サイズに制約があるシステムでは、ECDSAが最適です。これは、RSAによって提供されるものと同等のセキュリティを提供できますが、膨大な長さの数値を必要とするRSAとは対照的に、少数です。

ECDSAでは、署名は送信者によって生成されたペア(r、s)であり、これらの複雑な計算と(メッセージの)ハッシュが受信者によってチェックおよび検証された後です。

これを可能な限り簡単に説明できるようにする方法について調査した後、これは、署名の一致を検証するために実行される方程式の過度に単純化されたバージョンです。ECDSAの動作の詳細については、こちらのWikipediaの記事を参照してください。

if (r == [complex equation] * [value derived from s])
Then
    valid
Otherwise,
    invalid

0 == 0 * [complex equation] which is 0 == 0

しかし、ECDSAのJava実装はこれをチェックしません。したがって、r、sの両方を0として送信することができます。上記から結論できるように、方程式は、メッセージの署名に使用された秘密鍵に関係なく、常にTrueになります。これは、無実の個人であると主張する悪意のある第三者によってメッセージに署名される可能性があるため、大きなセキュリティリスクをもたらします。ライブラリのバグのため、署名は常にTrueになります。

このビデオでは詳細な説明が示されています。興味がある場合は、このビデオを参照してください。

緩和

この脆弱性の緩和策は、2022年4月の重要なパッチを適用することです。このパッチへのリンクはここにあります。

© Copyright 2021 - 2023 | hachiwiki.com | All Rights Reserved