back to all blogsすべてのブログ投稿を表示

Open Liberty 23.0.0.8におけるOpenID ConnectクライアントのPKCEサポートによる認可コード傍受攻撃の防止

image of author image of author
Michal Broz and 浅田 かおり (翻訳) 2023年8月22日
他言語版へのリンク: English ,

Open Liberty の新しい PKCE (Proof Key for Code Exchange) サポートを OpenID Connect クライアントに使用することで、特定のシナリオで発生する可能性のある認証コードの傍受攻撃を防ぐことができます。また、このリリースでは featureUtility installFeature コマンドが更新され、 インストールするフィーチャー間の依存関係をより適切に管理できるようになりました。OpenTelemetryとJaegerの使い方に関する新しいガイドもあります。

In Open Liberty 23.0.0.8:

ランタイムに追加された新しいフィーチャーや機能とともに、私たちはガイドの更新も行いました。

23.0.0.8で修正されたバグリストをご参照ください。

23.0.0.8を使用してアプリを実行する

Mavenを使うときは下記の設定をお使いください。

<dependency>
    <groupId>io.openliberty</groupId>
    <artifactId>openliberty-runtime</artifactId>
    <version>23.0.0.8</version>
    <type>zip</type>
</dependency>

Gradleの場合はこちらです。

dependencies {
    libertyRuntime group: 'io.openliberty', name: 'openliberty-runtime', version: '[23.0.0.8,)'
}

コンテナ・イメージの場合はこちらです。

FROM icr.io/appcafe/open-liberty

またはダウンロード・ページをご参照ください。

Stack Overflowで質問する

OpenID ConnectクライアントのPKCEサポートによる認証コード傍受攻撃の防止

LibertyのOpenID ConnectクライアントがProof Key for Code Exchange (PKCE) (RFC 7636)に対応しました。PKCEはOAuth 2.0仕様の拡張であり、OAuth 2.0パブリッククライアントの認証コード傍受攻撃からの保護を提供します。非常に特殊なシナリオでは、悪意のあるアプリケーションが、正当な OAuth 2.0 公開クライアントに意図された認証コードを傍受し、その認証コードを使用してクライアントに代わってアクセス・トークンや ID トークンを取得することができます。PKCE では、このような傍受攻撃を防ぐために、追加のステップとリクエスト・パラメータを導入しています。

この機能は server.xml<openidConnectClient> エレメントか <oidcLogin> エレメントの pkceCodeChallengeMethod 属性を使用して有効にします。

例えば、OpenID Connect Clientフィーチャーを使用する場合、以下の例のような設定を含めます。

    <featureManager>
        <feature>openidConnectClient-1.0</feature>
    </featureManager>
    ...
    <openidConnectClient pkceCodeChallengeMethod="S256" ... />

ソーシャルメディア・ログイン・フィーチャーを使用する場合は、以下の例のような設定を含めます。

    <featureManager>
        <feature>socialLogin-1.0</feature>
    </featureManager>
    ...
    <oidcLogin pkceCodeChallengeMethod="S256" ... />

構成オプションの詳細については、openidConnectClientエレメント および oidcLoginエレメント のドキュメントを参照してください。

featureUtility installFeature コマンドを使用する際に、十分なフィーチャーがインストールされていることを確認

コマンドラインで featureUtility installFeature <featurename> を使ってフィーチャーをインストールすると、そのフィーチャーと必要な依存関係がすべてインストールされます。

しかし、これはそのフィーチャーがサーバーの他のフィーチャーと一緒に使われたときに正しく起動することを保証するものではありません。つまり、コマンドラインで使いたい機能をすべて挙げてみたものの、featureUtility がすべての依存関係の正しいバージョンをインストールしていなかったために、それらがすべて一緒に動作しないことがわかった、ということがありえます。

この問題を防ぐために、featureUtility installFeature <featurename> を実行すると、要求された機能が必要とする依存関係のすべてのバージョンがインストールされるようになりました。

同様のコマンドである featureUtility installServerFeatures <servername> はこの問題の影響を受けず、動作も変わりません。installServerFeatures` を使用すると、指定されたサーバ構成に必要な最小限のフィーチャーを常にインストールすることができるので、フィーチャーをインストールする場合には installServerFeatures を使用することを推奨します。

詳細は以下をご参照ください。

本リリースにおけるセキュリティ脆弱性 (CVE) の修正

CVE CVSSスコア 脆弱性評価 影響を受けるバージョン ノート

CVE-2023-38737

5.9

Denial of service

22.0.0.13 - 23.0.0.7

restfulWS-3.0restfulWS-3.1フィーチャーに影響あり。

過去のセキュリティ脆弱性の修正のリストについては、Security vulnerability (CVE) listをご参照ください。

前回のリリース以降の新しいガイドと更新されたガイド

Open Libertyのフィーチャーや機能が成長し続けるにしたがい、それらのトピックに関するopenliberty.ioへの新しいガイドを引き続き追加し、できるだけ簡単に導入できるようにしています。 また、報告されたバグや問題に対処し、内容を最新に保ち、トピックを拡大するために、既存のガイドも更新しています。

  • OpenTelemetryとJaegerでmicroservicesの分散トレースを可能にする

    Observabilityカテゴリのこの新しいガイドでは、OpenTelemetryとJaegerを使ってmicroservicesで分散トレースを有効にする方法を学びます。クラウドホスト版もあります。

  • OpenShift Localを使用したOpenShiftクラスタへのマイクロサービスのデプロイ

    こちらは「Deploying microservices to OpenShift using CodeReady Containers」ガイドの新しい名称です。このアプリケーションは、MicroProfile 6 と Jakarta EE 10 のフィーチャーを使用するように更新されています。このガイドでは、oc コマンドと podman コマンドを使用して、OpenShift Local (以前は CodeReady Containers という名でした) で実行されているローカルの OpenShift クラスタに microservices をデプロイする方法を学ぶことができます。OpenShift Local には ocpodman バイナリが含まれています。

今すぐOpen Liberty 23.0.0.8を入手する