JWT 検証の強化、Java 26 サポートなど 26.0.0.4
このリリースでは、JOSE ヘッダーから JWT 署名アルゴリズムを選択するサポートを導入し、Java 26 のサポートを追加しました。また、セキュリティ強化のためデフォルトの LTPA 鍵パスワードを削除し、ファイル転送の制限とセキュリティ脆弱性の修正が含まれています。
Open Liberty 26.0.0.4 の内容:
修正されたバグの一覧は、26.0.0.4 のリリースノートで確認できます。
その他の情報は、過去の Open Liberty GA リリースブログ記事をチェックしてください。
26.0.0.4 を使いアプリを開発・実行するには
Mavenを使っている場合は、`pom.xml`に以下を含めてください:
<plugin>
<groupId>io.openliberty.tools</groupId>
<artifactId>liberty-maven-plugin</artifactId>
<version>3.12.0</version>
</plugin>
Gradleを使っている場合は、`build.gradle`に以下のように含めてください:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'io.openliberty.tools:liberty-gradle-plugin:4.0.0'
}
}
apply plugin: 'liberty'
さらに、コンテナイメージを使う場合はこちら:
FROM icr.io/appcafe/open-liberty
あるいは、ダウンロードページをご覧ください。
IntelliJ IDEA、Visual Studio Code、Eclipse IDE に対しても、Open Liberty の開発者ツールを使って IDE 内からの開発・テスト・デバッグ・アプリ管理が可能です。
26.0.0.4 のファイル転送の変更
restConnector-2.0 機能によって提供される Liberty の FileService MBean に、新たに blocklist 属性が追加されました。この属性は server.xml ファイル内の <blockDir> 設定要素で構成されます。この属性のデフォルト値は ${server.output.dir}/resources/security です。この動作変更により、セキュリティ脆弱性 CVE-2025-14915 が解決され、デフォルトの FileTransfer アクセスが ${server.output.dir}/resources/security に制限されます。
${server.output.dir}/resources/security への FileTransfer アクセスが必要な場合は、空のブロックリストを設定することで元の動作を復元できます。
詳細については、ドキュメントを参照してください。
デフォルト LTPA 鍵パスワードの削除
セキュリティ脆弱性 CVE-2025-14917 を解決するため、デフォルトの LTPA 鍵パスワードが削除されました。
以前は、<ltpa /> 要素で keysPassword 属性が定義されていない場合、LTPA 鍵のデフォルトパスワードが使用されていました。この変更により、デフォルトパスワードはサポートされなくなりました。
既存のサーバーで、LTPA 鍵パスワードが server.xml ファイルで設定されていない場合、server.env ファイルの keystore_password が使用されます。この値は ltpa.keys ファイル内の LTPA 鍵を再暗号化します。LTPA 鍵自体は影響を受けません。keystore_password は、server create コマンドで --no-password オプションを使用しない限り、サーバー作成時に server.env ファイルに設定されます。
server.xml ファイルの <ltpa /> 要素で keysPassword が定義されておらず、server.env ファイルで keystore_password が定義されていない場合、LTPA サービスは失敗します。
次のエラーメッセージが表示されます:
CWWKS4118E: LTPA configuration error. A keysPassword attribute is not configured on the <ltpa /> element, the 'ltpa_keys_password' environment variable is not set, and the 'keystore_password' environment variable is not set.
LTPA 鍵パスワードが設定されていることを確認するには、次の手順を実行してください:
-
server.xmlファイルの<ltpa />要素にkeysPassword属性が提供されているかどうかを確認します(例:<ltpa keysPassword="myKeysPassword" />)。-
提供されている場合、この更新は影響せず、それ以上のアクションは必要ありません。
-
提供されていない場合は、追加*しないで*次のステップに進んでください。
-
-
server.envファイルにkeystore_password環境変数が存在するかどうかを確認します(例:keystore_password=myKeystorePassword)。-
存在する場合、サーバー起動時に
keystore_passwordを使用して、以前デフォルトのkeysPasswordで暗号化されていた LTPA 鍵を再暗号化します。 -
存在しない場合は、次のステップに進んでください。
-
-
server.envファイルに次の環境変数を追加します(新しいサーバー用の次のセクションで説明するltpa_keys_passwordでは*なく*、ここではkeystore_passwordを使用してください):keystore_password=your-desired-password-
サーバー起動時に
keystore_passwordを使用して、以前デフォルトのkeysPasswordで暗号化されていた LTPA 鍵を再暗号化します。
-
新しいサーバーの場合、サーバー作成時に新しい ltpa_keys_password がランダムに生成されます。これは、server create コマンドで --no-password オプションが指定されない限り、server.env ファイルに保存されます。<ltpa /> 要素で keysPassword 属性が定義されていない場合、ランダムに生成された ltpa_keys_password が使用されます。
詳細については、LTPA 設定要素を参照してください。
JOSE ヘッダーからの JWT 署名および復号化アルゴリズムの選択サポート
JSON Web Token (JWT) は、さまざまな暗号署名アルゴリズムを使用して署名できます。このリリースでは、JWT Consumer、MicroProfile JWT、OpenID Connect Client、Social Media Login 機能が、JOSE ヘッダーから JWT 署名アルゴリズムを選択することをサポートします。このサポートにより、トークンヘッダーに基づいて異なる署名アルゴリズムを使用できるようになります。
以前は、server.xml ファイルの各設定に対して、1 つの署名アルゴリズム(例:RS256)のみを設定できました。受信した JWT が異なるアルゴリズムで署名されている場合、検証は失敗していました。この更新により、JWT ヘッダーの署名アルゴリズムを検証に使用できるようになります。これにより、単一の設定内で異なる署名アルゴリズムを使用する柔軟性が提供されます。
使用方法
ヘッダーからの署名アルゴリズム選択を有効にするには、signatureAlgorithm 属性を FROM_HEADER に設定し、オプションで allowedSignatureAlgorithms 属性を設定して許可するアルゴリズムを指定します。
allowedSignatureAlgorithms が設定されていない場合、デフォルトリストには Open Liberty がサポートするすべての署名アルゴリズムが含まれます:RS256、RS384、RS512、HS256、HS384、HS512、ES256、ES384、ES512。
非対称アルゴリズムとトラストストア設定で FROM_HEADER を使用する場合、公開鍵には対応するアルゴリズムのプレフィックスを付ける必要があります(例:RS256_keyalias)。検証中、サーバーは JWT のヘッダーで指定されたアルゴリズムで始まるエイリアスをトラストストアで検索します。アルゴリズムのプレフィックスが付いたエイリアスが見つからない場合、クライアントは trustedAlias 属性(jwtConsumer の場合)または trustAliasName 属性(openidConnectClient、oidcLogin、mpJwt の場合)で指定されたエイリアスの使用にフォールバックします(設定されている場合)。
サポートされている要素にこれらの設定を適用する方法の例については、次の server.xml ファイル設定を参照してください:
<jwtConsumer
signatureAlgorithm="FROM_HEADER"
allowedSignatureAlgorithms="RS256, ES384, HS512"
...
/>
<mpJwt
signatureAlgorithm="FROM_HEADER"
allowedSignatureAlgorithms="RS256, ES384, HS512"
...
/>
<openidConnectClient
signatureAlgorithm="FROM_HEADER"
allowedSignatureAlgorithms="RS256, ES384, HS512"
...
/>
<oidcLogin
signatureAlgorithm="FROM_HEADER"
allowedSignatureAlgorithms="RS256, ES384, HS512"
...
/>
詳細情報
サーバー設定:
ドキュメント:
Java 26 のサポート
Java 26 は、以前のバージョンに比べて新機能と拡張機能を導入した最新の Java リリースです。このリリースは長期サポート(LTS)リリースではありません。
Java 26 には 10 の新機能(JEP)があります。5 つはテスト機能で、5 つは完全に提供されています。
テスト機能:
提供された機能:
Java 26 の新しい変更 JEP 500(「Prepare to Make Final Mean Final」)は、深いリフレクションを使用する際に final フィールドの変更を制限することで、final フィールドの真の不変性の強制を開始します。 Java 26 では、このような変更は引き続き機能しますが、デフォルトで実行時警告をトリガーし、開発者がより厳格な強制に備えることができます。 将来のリリースでは、例外をスローする可能性が高く、final を真に不変にします。
開発者は、JVM フラグ(例:--illegal-final-field-mutation=deny)を使用して、この厳格な動作を早期に選択し、問題を早期に検出できます。
この変更により、プログラムの正確性、セキュリティ、および JVM 最適化が向上します。
今すぐこれらの変更を活用して、アプリケーションとマイクロサービスが Java 26 でどのように動作するかを評価する時間を増やしてください。
IBM Semeru Runtime 26 または Temurin 26 の最新リリースをダウンロードし、Open Liberty 26.0.0.4 をダウンロードしてインストールすることで、今日から始めることができます。Liberty サーバーの server.env ファイルを更新し、JAVA_HOME を Java 26 インストールディレクトリに設定してテストを開始してください。
Java 26 の詳細については、Java 26 の リリースノートページおよび API Javadoc ページを参照してください。
displayCustomizedExceptionText プロパティ
このリリースでは、displayCustomizedExceptionText 設定のドキュメントとテストが追加されました。これにより、ユーザーは Liberty のデフォルトエラーメッセージ(SRVE0218E: Forbidden や SRVE0232E: An exception occurred など)を、より明確なユーザー定義メッセージでオーバーライドできます。
この機能は、シンプルな server.xml ファイル設定を通じて有効化され、カスタムメッセージを特定の HTTP ステータスコード(403 および 500)にマッピングできます。
テストにより、これらのカスタムメッセージがサポートされているすべてのプラットフォームで Liberty のデフォルトを正しく置き換えることが確認され、設定されたテキストがすべてのシナリオで一貫して返されることが確認されます。
<webContainer displaycustomizedexceptiontext="Custom error message"/>
このリリースでのセキュリティ脆弱性 (CVE) 修正
| CVE | CVSS スコア | 脆弱性内容 | 影響を受けるバージョン | 備考 |
|---|---|---|---|---|
6.5 |
権限昇格 |
17.0.0.3-26.0.0.3 |
restConnector-2.0 機能に影響 |
|
6.7 |
セキュリティの弱体化 |
17.0.0.3-26.0.0.3 |
appSecurity-1.0、appSecurity-2.0、appSecurity-3.0、appSecurity-4.0、appSecurity-5.0 機能に影響 |
|
5.4 |
サーバーサイドリクエストフォージェリ (SSRF) |
17.0.0.3-26.0.0.3 |
samlWeb-2.0 機能に影響 |
|
8.7 |
プロトタイプ汚染 |
17.0.0.3-26.0.0.3 |
openapi-3.1、mpOpenAPI-1.0、mpOpenAPI-1.1、mpOpenAPI-2.0、mpOpenAPI-3.0、mpOpenAPI-3.1、mpOpenAPI-4.0、mpOpenAPI-4.1 機能に影響 |
過去の脆弱性修正の一覧については、Open Liberty の セキュリティ脆弱性 (CVE) のリストを参照してください。
Open Liberty 26.0.0.4 を今すぐ入手
このバージョンはMaven、Gradle、Docker、またはアーカイブからダウンロード可能です。