第7章 既知の問題
以下の項ではバージョン 7.3 の既知の問題について説明します。
7.1. CVE セキュリティー脆弱性
Fuse はミドルウェア統合プラットフォームであるため、多くのサードパーティーコンポーネントと統合される可能性があります。そのため、サードパーティーの依存関係の一部にセキュリティーの脆弱性がある可能性を常に排除することは困難です。ここでは、Fuse 7.3 のサードパーティーの依存関係に影響する既知のセキュリティー脆弱性について説明します。
- ENTESB-12489 CVE-2019-9827 - Fuse Console standalone on Amazon Web Services
-
セキュリティーの懸念があるため、スタンドアロンの Fuse アプリケーションを Amazon Web Services (AWS) にデプロイしないでください。この制限は、サポートされるすべてのスタンドアロン環境 (Spring Boot 1.x および 2.x、Karaf、および Red Hat JBoss Enterprise Application Platform) に適用されます。AWS に Fuse Console スタンドアロンをデプロイする場合は、Fuse 7.7 以降にアップグレードし、
hawtio.disableProxy
システムプロパティーをtrue
に設定して Fuse Console のプロキシーサーブレットを無効にすることが強く推奨されます。 - CVE-2017-12629 Solr/Lucene -security bypass to access sensitive data - CVE-2017-12629
Apache Solr は、Apache Lucene 検索エンジンを使用する一般的なオープンソースの検索プラットフォームです。アプリケーションが Apache Solar と Apache Lucene の組み合わせ (Camel Solr コンポーネントを使用している場合など) を使用する場合、このセキュリティー脆弱性の影響を受ける可能性があります。この脆弱性の詳細と軽減策について、リンク先のセキュリティーアドバイザリーを確認してください。
注記Fuse ランタイムは Apache Solr や Apache Lucene を直接使用 しません。統合アプリケーションで Apache Solr と Apache Lucene を一緒に使用する場合のみセキュリティー上のリスクが発生します (Camel Solr コンポーネントを使用する場合など)。
- 複数の CVE jackson-databind セキュリティー脆弱性に関連する複数の CVE
FasterXML
jackson-databind
ライブラリーを使用し、JSON コンテンツをデシリアライズして Java オブジェクトをインスタンス化するアプリケーションは、潜在的に リモートコード実行 攻撃に脆弱です。しかし、脆弱性は自動的に発生せず、適切な軽減策を講じれば回避することができます。最低でも以下の前提条件をすべて満たさなければ攻撃を実行することはできません。
jackson-databind
の JSON コンテンツのデシリアライズに対し、ポリモーフィックな型の処理を有効にする必要があります。Jackson JSON でポリモーフィックな型の処理を有効にする方法は 2 つあります。-
@JsonTypeInfo
および@JsonSubTypes
アノテーションの組み合わせを使用します。 -
ObjectMapper.enableDefaultTyping()
メソッドを呼び出します。この方法はポリモーフィックな型をグローバルで有効にするため、危険です。
-
-
現在のバージョンの
jackson-databind
によってブラックリストに指定されていない ガジェットクラス が 1 つ以上 Java クラスパスにあります。ガジェットクラスは、機密性の高い (潜在的に悪用可能な) 操作を、constructor または setter メソッド (デシリアライズ中に呼び出しできるメソッド) の実行による副次的な影響として定義します。Jackson JSON ライブラリーによって維持されるガジェットブラックリストは、リモートコード実行の脆弱性から守るための最後の手段になります。
jackson-databind
の脆弱性に関して多くの CVE が存在するのは、多数のガジェットクラスが存在するためです。ガジェットクラスの種類別に異なる CVE が存在します。アプリケーションで
jackson-databind
を使用する必要がある場合、Jackson JSON でポリモーフィックな型の処理を行わないようにし、ObjectMapper.enableDefaultTyping()
メソッドを絶対に呼び出さないことが、リスクを軽減する最も重要な対策になります。
7.2. Fuse Online
Fuse Online ディストリビューションの既知の問題は次のとおりです。
- ENTESB-10577 Apicurito does not support YAML Open API spec files
- Fuse 7.3.0 on OpenShift では、Apicurito はデフォルトで OpenAPI 仕様ファイルを YAML 形式で生成しますが、生成された YAML ファイルを再インポートできません。現在、JSON 形式のみを Apicurito にインポートできます。
- 667 'null' when using "ItemAt" transformation from List<>
Number -
ItemAt
変換を使用してList
からDouble
へマップすると、データマッパーによって例外がスローされます。 - 1558 "Save as draft" and "Publish" buttons
- Save as draft ボタンと Publish ボタンのいずれかをクリックし、手順が開始されても、両方のボタンがアクティブなままになります。
- 698 DB Connector: SQL parser doesn’t recognize parameters for LIKE
-
LIKE
キーワードが含まれる SQL ステートメント (例:DELETE FROM TODO WHERE task LIKE ‘:#param’
) では、LIKE
キーワードを:#param
などのデータマッパーパラメーターとともに使用できません。
7.3. Fuse on OpenShift
このセクションでは、OpenShift 上の Fuse アプリケーションのデプロイメントに影響する問題を取り上げます。特定のコンテナーに影響する問題の詳細は、Spring Boot、Fuse on Apache Karaf、および Fuse on JBoss EAP のセクションも参照にしてください。Fuse on OpenShift ディストリビューションの既知の問題を以下に示します。
- ENTESB-10577 Apicurito does not support YAML Open API spec files
- Fuse 7.3.0 on OpenShift では、Apicurito はデフォルトで OpenAPI 仕様ファイルを YAML 形式で生成しますが、生成された YAML ファイルを再インポートできません。現在、JSON 形式のみを Apicurito にインポートできます。
- ENTESB-9420 karaf-camel-rest-sql: Build creation stuck on "Receiving source from STDIN as archive"
- 初期のマイクロバージョンの OpenShift Container Platform (OCP) 3.10 にFuse アプリケーションをビルドまたはデプロイしようとすると、エラーが発生し、ビルドがハングする可能性があります。この問題が発生した場合、この問題が修正されている OCP 3.10.34 (またはそれ以降) にアップグレードすることが推奨されます。
- CDK-397 OCP preflight check uses docker v1 API which is no longer available
一部の古い CDK バージョンを使用すると、
minishift
の起動時に以下のエラーが発生する可能性があります。minishift start -- Starting profile 'minishift' -- Check if deprecated options are used ... OK -- Checking if https://mirror.openshift.com is reachable ... OK -- Checking if requested OpenShift version 'v3.11.16' is valid ... FAIL
この問題を回避するには、Fuse 7.3 で CDK 3.8 以上を使用します。
- ENTESB-10362 multiple class javax/activation/DataHandler from different bundles
Fuse on OpenShift にデプロイされた Karaf ベースのアプリケーションがメッセージの添付を使用する場合 (暗黙的な javax.activation パッケージの依存関係)、この問題の影響を受けます。通常、以下のようなエラーメッセージが発生します。
Caused by: java.lang.LinkageError: loader constraint violation: when resolving overridden method "org.apache.cxf.jaxrs.provider.JAXBAttachmentMarshaller.addMtomAttachment(Ljavax/activation/DataHandler;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoader) of the current class, org/apache/cxf/jaxrs/provider/JAXBAttachmentMarshaller, and its superclass loader (instance of <bootloader>), have different Class objects for the type javax/activation/DataHandler used in the signature
OpenShift にデプロイされた Karaf ベースのアプリケーションからこのようなエラーメッセージが出力された場合、アプリケーションの Maven プロジェクトを以下のように編集すると、この問題を修正できます。Maven プロジェクトで新しい
jre.properties
ファイルを以下の場所に作成します。src/main/resources/assembly/etc/jre.properties
そして、サンプルの jre.properties ファイルからコンテンツを追加します。
アプリケーションが再デプロイされたとき、このカスタム
jre.properties
ファイルは Karaf マイクロコンテナーの デフォルトの JRE プロパティーをオーバーライドします。特に、jre.properties
ファイルはデフォルトでは存在しない以下の行をjre-1.8
プロパティーに追加します。javax.activation;version="1.1", \
注記Fuse スタンドアロンの Apache Karaf はこの問題の影響を受けません。
7.4. Fuse on Spring Boot
Fuse on Spring Boot の既知の問題は次のとおりです。
- ENTESB-10486 Failing CXF tests on AIX using Karaf runtime
Fuse 7.3 GA リリースでは、IBM AIX 7.2 プラットフォーム上で Apache CXF を Spring Boot スタンドアロンコンテナーと使用するには以下の回避策が必要です。Spring Boot アプリケーションを実行するときに、Java システムプロパティー
java.version=1.8.0_131
を設定します。たとえば、Spring Boot アプリケーションを Maven プロジェクトから実行するには、以下を実行します。mvn spring-boot:run -Djava.version=1.8.0_131
7.5. Fuse on Apache Karaf
Fuse on Apache Karaf の既知の問題は次のとおりです。
- ENTESB-10487 keycloak-cxf quickstart test fails with RH-SSO 7.3.0.GA
-
Fuse 7.3 GA リリースでは、Apache Karaf のクイックスタートパッケージに
quickstarts/security/keycloak/keycloak-cxf
クイックスタートが含まれています。Red Hat Single Sign-On(RH-SSO)7.3.0.GA に対してこのクイックスタートをテストする場合は、verify-token-audience
プロパティーがetc/jaxws-keycloak.json
ファイルおよびetc/jaxrs-keycloak.json
ファイルのfalse
に設定されていることを確認する必要があります。詳細は ENTESB-10487 を参照してください。 - ENTESB-10486 Failing CXF tests on AIX using Karaf runtime
Fuse 7.3 GA リリースでは、IBM AIX 7.2 プラットフォーム上で Apache CXF を Apache Karaf コンテナーと使用するには以下の回避策が必要です。
$KARAF_HOME/etc/system.properties
ファイルを編集し、以下の行を追加します。java.version=1.8.0_131
- ENTESB-8140 Start level of hot deploy bundles is 80 by default
Fuse 7.0 GA リリースの Apache Karaf コンテナーでは、ホットデプロイバンドルの開始レベルがデフォルトで 80 になっています。これにより、同じ開始レベルを持つシステムバンドルや機能が多く存在するため、ホットデプロイバンドルに問題が発生することがあります。この問題を回避し、ホットデプロイバンドルが確実に開始するようにするには、
etc/org.apache.felix.fileinstall-deploy.cfg
ファイルを編集し、felix.fileinstall.start.level
設定を以下のように変更します。felix.fileinstall.start.level = 90
- ENTESB-7664 Installing framework-security feature kills karaf
framework-security
オプションを使用して--no-auto-refresh
OSGi 機能をインストールしないと、Apache Karaf コンテナーがシャットダウンします。以下に例を示します。feature:install -v --no-auto-refresh framework-security
7.6. Fuse on JBoss EAP
Fuse on JBoss EAP の既知の問題は次のとおりです。
- ENTESB-10400 Performance regression in camel-cbr-xpath integration example on EAP
- Fuse 7.3 on JBoss EAP での XPath と Camel の統合に影響するパフォーマンス低下がテストによって発見されました。テストケースには、指定の XPath 式に対してメッセージの内容を評価するCamel のコンテンツベースルートが関係します。
- ENTESB-10401 Performance regression in camel-cxf-proxy-xslt integration example on EAP
- Camel XSLT コンポーネントと Fuse 7.3 on JBoss EAP の統合に影響するパフォーマンス低下がテストによって発見されました。テストケースには、SOAP メッセージの CXF エンドポイントへの送信が関係し、Camel XSLT コンポーネントを介して呼び出される XSL スクリプトによってメッセージが処理されます。
- ENTESB-10402 Performance regression in Fuse Http Camel SSH integration example on EAP
- Camel SSH コンポーネントと Fuse 7.3 on JBoss EAP の統合に影響するパフォーマンス低下がテストによって発見されました。テストケースには、HTTP メッセージの Jetty HTTP エンドポイントへの 送信が関係し、SSH エンドポイントの呼び出しにメッセージが使用されます (Camel SSH コンポーネントを使用)。
7.7. Apache Camel
Apache Camel の既知の問題は次のとおりです。
- ENTESB-7469 Camel Docker component cannot use Unix socket connections on EAP
-
Fuse 7.0 より、
camel-docker
コンポーネントは UNIX ソケットではなく REST API のみを介して Docker に接続できます。 - ENTESB-5231 PHP script language does not work
- PHP の OSGi バンドルがないため、PHP スクリプト言語は Apache Karaf コンテナー上の Camel アプリケーションでサポートされません。
- ENTESB-5232 Python language does not work
- Python の OSGi バンドルがないため、Python スクリプト言語は Apache Karaf コンテナー上の Camel アプリケーションでサポートされません。
- ENTESB-2443 Google Mail API - Sending of messages and drafts is not synchronous
- メッセージまたは下書きを送信すると、応答には ID を持つ Message オブジェクトが含まれます。API への別の呼び出しを介してこのメッセージを即座に取得できない可能性があります。このような場合、待機して呼び出しを再試行する必要があります。
- ENTESB-2332 Google Drive API JSON response for changes returns bad count of items for the first page
- 変更に対する Google Drive API JSON 応答によって返される最初のページのアイテム数は適切でありません。リスト操作の maxResults を設定すると、最初のページにすべての結果が返されないことがあります。この場合、複数のページを確認して完全リストを取得する必要があります (新しいリクエストに pageToken を設定して行います)。