Open Liberty 22.0.0.12における脆弱性と主なバグの修正
Open Liberty 22.0.0.12 では、GraphQL Java の CVE への対応を含む、多くの重要なバグフィックスが行われました。 以下のセクションでは、このリリースで修正したバグの一部について説明しています。
もし現在進行中のJakarta EE 10、MicroProfile 6、InstantOnなどの新機能やフィーチャーに興味をお持ちでしたら ベータ版ブログ記事をご覧ください。
Open Liberty 22.0.0.12 の場合:
ランタイムに追加された新機能と合わせて、ガイドの更新も行いました。
22.0.0.12 を使用してアプリを実行する
Mavenを使う時には下記の設定を使ってください。
<dependency>
<groupId>io.openliberty</groupId>
<artifactId>openliberty-runtime</artifactId>
<version>22.0.0.12</version>
<type>zip</type>
</dependency>
Gradleの場合は、下記の設定を使ってください。
dependencies {
libertyRuntime group: 'io.openliberty', name: 'openliberty-runtime', version: '[22.0.0.12,)'
}
Dockerを使っているときは、下記のイメージを使ってください。
FROM open-liberty
または、Open Libertyのダウンロード・ページからダウンロードしてください。
このリリースにおけるセキュリティ脆弱性 (CVE) の修正
CVE |
CVSSスコア |
脆弱性評価 |
影響を受けるバージョン |
ノート |
7.5 |
Denial of service |
17.0.0.3 - 22.0.0.11 |
mpGraphQL-1.0 と mpGraphQL-2.0 フィーチャーに影響あり |
過去のセキュリティ脆弱性の修正のリストについては、Security vulnerability (CVE) listを参照してください。
主なバグ修正
以下のセクションでは、このリリースで修正したバグの一部について説明します。興味がある場合は full list of bugs fixed in 22.0.0.12を参照してください。
パーティションの再割り当て中に、MicroProfile Reactive Messaging の Kafka コネクタが内部状態を正しく更新しない可能性があります。その結果、メッセージを受信できなくなり、NullPointerException
がログに記録されます。
ログに次のようなメッセージが表示される場合があります。
java.lang.NullPointerException
at com.ibm.ws.microprofile.reactive.messaging.kafka.KafkaInput.lambda$wrapInMessageStream$10(KafkaInput.java:274)
at com.ibm.ws.microprofile.reactive.messaging.kafka.KafkaInput$$Lambda$476/0x00000000c2be7230.test(Unknown Source)
at io.smallrye.reactive.streams.stages.FilterStageFactory$$Lambda$481/0x00000000c3268d30.test(Unknown Source)
+
User provided listener com.ibm.ws.microprofile.reactive.messaging.kafka.adapter.impl.ConsumerRebalanceListenerImpl failed on invocation of onPartitionsRevoked for partitions [live-partition-test-in-0]
java.lang.NullPointerException
at com.ibm.ws.microprofile.reactive.messaging.kafka.KafkaInput.onPartitionsRevoked(KafkaInput.java:346)
at com.ibm.ws.microprofile.reactive.messaging.kafka.adapter.impl.ConsumerRebalanceListenerImpl.onPartitionsRevoked(ConsumerRebalanceListenerImpl.java:55)
at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.invokePartitionsRevoked(ConsumerCoordinator.java:315)
+ この問題は解決され、パーティションの割り当ては正しく成功し、これらのエラーは発生しません。
-
カスタム ユーザー レジストリで securityName の代わりに uniqueId を使用する方法を提供する
CustomUserRegistry
を使用して、getRemoteUser
、getCallerPrincipal
、getUserPrincipal
などのプログラム API 呼び出しを行うと、Open Liberty は誤ってsecurityName
を返していました。この問題は解決され、
getRemoteUser
、getCallerPrincipal
またはgetUserPrincipal
メソッドは正しくdisplayName
を返します。 -
同じクラスが2つ存在し、特定の機能が使用されている場合、AmbiguousResolutionExceptionが発生する
クラスがアプリケーション内に2つ存在し、CDIマネージドBeanとして使用され、特定の機能が使用されている場合、CDIは時々
AmbiguousResolutionException
を報告することがあります。Caused by: org.jboss.weld.exceptions.AmbiguousResolutionException: WELD-001318: Cannot resolve an ambiguous dependency between: - Managed Bean [class com.ibm.wssvt.acme.annuity.common.business.jaxrs.MyJAXBResolver] with qualifiers [@Any @Default], - Managed Bean [class com.ibm.wssvt.acme.annuity.common.business.jaxrs.MyJAXBResolver] with qualifiers [@Any @Default]
この問題は現在解決されています。 同じBeanが2回含まれることはなくなり、例外も発生しなくなりました。
-
アプリサーバー停止時にDynaCacheでIllegalStateExceptionが発生する
webCache-1.0
機能を有効にしてLibertyサーバーをシャットダウンしているときに、DynaCacheデーモンスレッドによってFFDCが作成されることがあります。Stack Dump = java.lang.IllegalStateException: ScheduledExecutorService service is unavailable at com.ibm.ws.cache.Scheduler.getScheduledExecutorService(Scheduler.java:93) at com.ibm.ws.cache.Scheduler.createNonDeferrable(Scheduler.java:108) at com.ibm.ws.cache.RealTimeDaemon.alarm(RealTimeDaemon.java:107) at com.ibm.ws.cache.RealTimeDaemon$2.run(RealTimeDaemon.java:111) at com.ibm.ws.cache.Scheduler$WrappedRunnable.run(Scheduler.java:130) ...
この問題は現在解決されています。 DynaCache は、Liberty サーバーが停止していて FFDC が生成されていない場合、スケジュールを作成しようとしなくなりました。
-
BasicAuthenticationリクエストに対してIdentityStoreのvalidateメソッドが呼び出されない
一部の Basic 認証リクエストは、
IdentityStore
が正しく呼び出されないことが原因で失敗します。 これは、Liberty のBasicHttpAuthenticationMechanism
がUsernamePasswordCredential
の代わりにBasicAuthenticationCredential
を使用していることに起因します。このクレデンシャルオブジェクトはIdentityStore
のvalidate
メソッドコールにパラメータとして渡されます。BasicAuthenticationCredential
クラスは、UsernamePasswordCredential
を継承しています。この場合、
IdentityStore
が正しく機能するためには、オーバーロードされたバージョンのvalidate
メソッドを持つ必要があります。 例えば下記のようなメソッドが必要です。public CredentialValidationResult validate(BasicAuthenticationCredential basicAuthenticationCredential) { return validate(new UsernamePasswordCredential(basicAuthenticationCredential.getCaller(), basicAuthenticationCredential.getPasswordAsString())); }
この問題は解決され、
validate
メソッドが呼び出され、ユーザーの認証に成功しました。 -
EJBハンドルのデシリアライズがorg.mg.CORBA.TRANSIENTで失敗する:接続を確立しようとする試みが失敗する
EJBHandle
またはHomeHandle
をデシリアライズした後、ハンドルを使用しようとすると、次のような例外が発生して失敗することがありますERROR: java.rmi.RemoteException: CORBA TRANSIENT 1095974913 No; nested exception is: org.omg.CORBA.TRANSIENT: attempt to establish connection failed: vmcid: Apache minor code: 0x1 completed: No at org.apache.yoko.rmi.impl.UtilImpl.createRemoteException(UtilImpl.java:206) at [internal classes] Caused by: org.omg.CORBA.TRANSIENT: attempt to establish connection failed: vmcid: Apache minor code: 0x1 completed: No at org.apache.yoko.orb.exceptions.Transients.create(Transients.java:85) at [internal classes] at org.apache.yoko.orb.OB.GIOPClient.access$000(GIOPClient.java:60) at org.apache.yoko.orb.OB.GIOPClient$1.create(GIOPClient.java:141) at [internal classes] ...
この問題は解決され、EJB(またはEJBHome)上のメソッド呼び出しが正しく動作するようになりました。
-
Uses constraint violationというエラーが出る
server.xml
を変更してfeatureManager
リストに機能を追加すると、org.joda.time
パッケージに関連したUses constraint violation
エラーでサーバーの起動に失敗することがあります。30-com.ibm.ws.org.apache.wss4j.ws.security.web.2.3.0.jakarta E CWWKE0702E: Could not resolve module: com.ibm.ws.org.apache.wss4j.ws.security.web.2.3.0.jakarta [330] Unresolved requirement: Import-Package: org.apache.wss4j.dom.engine; version="[2.3.0,3.0.0)" -> Export-Package: org.apache.wss4j.dom.engine; bundle-symbolic-name="com.ibm.ws.org.apache.wss4j.ws.security.dom.2.3.0.jakarta"; bundle-version="1.0.70.202210111310"; version="2.3.0"; uses:="javax.security.auth.callback,javax.xml.datatype,javax.xml.namespace,org.apache.wss4j.common.crypto,org.apache.wss4j.common.ext,org.apache.wss4j.common.saml,org.apache.wss4j.common.token,org.apache.wss4j.common.util,org.apache.wss4j.dom,org.apache.wss4j.dom.action,org.apache.wss4j.dom.callback,org.apache.wss4j.dom.handler,org.apache.wss4j.dom.message.token,org.apache.wss4j.dom.processor,org.apache.wss4j.dom.validate,org.w3c.dom" com.ibm.ws.org.apache.wss4j.ws.security.dom.2.3.0.jakarta [327] Bundle was not resolved because of a uses constraint violation. org.apache.felix.resolver.reason.ReasonException: Uses constraint violation. Unable to resolve resource com.ibm.ws.org.apache.wss4j.ws.security.dom.2.3.0.jakarta [osgi.identity; osgi.identity="com.ibm.ws.org.apache.wss4j.ws.security.dom.2.3.0.jakarta"; type="osgi.bundle"; version:Version="1.0.70.202210111310"] because it is exposed to package 'org.joda.time' from resources com.ibm.ws.org.joda.time.2.9.9 [osgi.identity; osgi.identity="com.ibm.ws.org.joda.time.2.9.9"; type="osgi.bundle"; version:Version="1.0.70.202210111212"] and com.ibm.ws.org.joda.time.1.6.2 [osgi.identity; type="osgi.bundle"; version:Version="1.0.70.202210111212"; osgi.identity="com.ibm.ws.org.joda.time.1.6.2"] via two dependency chains.
この問題は解決され、サーバーはエラーなしで正常に起動するようになりました。
-
Failed to parse Created TimeStamp in UsernameTokenValidator
CXFのアップデートに伴い、UsernameTokenにミリ秒が含まれていない場合、有効なSOAPリクエストが失敗するバグが再導入されました。
この問題は解決され、リグレッションが再び発生しないようにするためのテストが追加されました。
-
The following NPE is produced intermittently, failing to start the application:
[ERROR ] CWWKZ0002E: An exception occurred while starting the application microProfileLoginConfig_MultiLayer_NotInWebXml_MpJwtInApp. The exception message was: com.ibm.ws.container.service.state.StateChangeException: org.jboss.weld.exceptions.DefinitionException: Exception List with 1 exceptions: Exception 0 : java.lang.NullPointerException at com.ibm.ws.security.javaeesec.cdi.extensions.HttpAuthenticationMechanismsTracker.getAuthMechs(HttpAuthenticationMechanismsTracker.java:186) ...
The issue has been resolved and the web application now starts without the
CWWKZ0002E
error caused by the NPE. -
Liberty メッセージ駆動型 Bean (MDB) コードから、プールを介してアプリケーションの MDB クラスへの参照があり、アプリケーションの停止時にクリーニングされていないように見えます。 以下の参照連鎖を参照してください。
'- enterpriseBeanClass com.ibm.ejs.container.MessageEndpointFactoryImpl @ 0x8d630f50 '- ivMessageEnpointHandlerFactory com.ibm.ws.ejbcontainer.mdb.MessageEndpointHandlerPool @ 0x8d6307c8 '- discardStrategy com.ibm.ws.ejbcontainer.util.PoolImplThreadSafe @ 0x8d6301e0 '- [3] java.lang.Object[10] @ 0x8677de20 '- elementData java.util.ArrayList @ 0x817b8f10 '- pools com.ibm.ws.ejbcontainer.util.PoolManagerImpl @ 0x817b8ee8 '- poolManager com.ibm.ejs.container.EJSContainer @ 0x80f024e0
この問題は解決され、アプリケーションが停止すると、アプリケーションクラスへの参照はすべて解放されます。
-
サーバー実行中に
<datasource>
プロパティ (databaseName
,password
,portNumber
,serverName
, etc) をserver.xml
ファイルで更新すると、JPA アプリケーションに変更が反映されない。サーバー起動時にJPA ContainerはDataSourceのJNDIルックアップを行い、そのDataSourceをJPAプロバイダーであるEclipseLinkに提供します。構成の更新が行われた後、EclipseLinkはJPA Containerが提供したのと同じDataSourceを使い続けます。DataSourceServiceはConnectionFactoryを閉じないため、すべてが機能し続けます。JPAの場合、これを動作させるにはアプリケーションを再起動する必要がありますが、DataSourceServiceはアプリケーションを更新しません。
この問題は解決され、JPAアプリケーションは、構成に変更があった場合、動的に更新されるようになりました。
前回のリリースから新たに追加・更新されたガイド
Open LibertyのFeatureや機能が成長するのに合わせ、これらのトピックに関するopenliberty.ioへの新しいガイドを追加し続けおり、ユーザーがそれらの機能を採択しやすくしています。 既存のガイドも、報告されたバグや問題に対処し、内容を最新に保ち、トピックの内容を拡張するために更新されます。
-
GraphQL クライアントを使用した GraphQL クエリーの実行とミューテーションの実行
-
最近出版されたこのガイドのクラウドホスティング版を追加しました。
-
今すぐOpen Liberty 22.0.0.12を入手する
下記のリンクから入手できます Maven, Gradle, Docker, and as a downloadable archive.