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

Open Liberty 22.0.0.12における脆弱性と主なバグの修正

image of author image of author image of author
Michal Broz , 田中 孝清 (翻訳) , and 高宮 裕子 (翻訳) 2023年1月31日
他言語版へのリンク: English ,

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のダウンロード・ページからダウンロードしてください。

ご質問はStack Overflowに投稿してください

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

CVE

CVSSスコア

脆弱性評価

影響を受けるバージョン

ノート

CVE-2022-37734

7.5

Denial of service

17.0.0.3 - 22.0.0.11

mpGraphQL-1.0mpGraphQL-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 を使用して、getRemoteUsergetCallerPrincipalgetUserPrincipal などのプログラム API 呼び出しを行うと、Open Liberty は誤って securityName を返していました。

    この問題は解決され、getRemoteUsergetCallerPrincipal または 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 の BasicHttpAuthenticationMechanismUsernamePasswordCredential の代わりに BasicAuthenticationCredential を使用していることに起因します。このクレデンシャルオブジェクトは IdentityStorevalidate メソッドコールにパラメータとして渡されます。

    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リクエストが失敗するバグが再導入されました。

    この問題は解決され、リグレッションが再び発生しないようにするためのテストが追加されました。

  • com.ibm.ws.security.javaeesec.cdi.extensions.HttpAuthenticationMechanismsTracker.getAuthMechs(HttpAuthenticationMechanismsTracker.java:186) で断続的に NPE が発生する

    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.

  • アプリケーション停止時のMDBクラスのJavaヒープリーク

    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

    この問題は解決され、アプリケーションが停止すると、アプリケーションクラスへの参照はすべて解放されます。

  • 動的な構成更新時にデータソースの変更がJPAに伝搬されない

    サーバー実行中に <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への新しいガイドを追加し続けおり、ユーザーがそれらの機能を採択しやすくしています。 既存のガイドも、報告されたバグや問題に対処し、内容を最新に保ち、トピックの内容を拡張するために更新されます。

今すぐOpen Liberty 22.0.0.12を入手する

下記のリンクから入手できます Maven, Gradle, Docker, and as a downloadable archive.