本文へスキップ

オープンソース追跡

Javaアプリケーションで使用するフレームワークやオープンソースライブラリをエージェントを介して追跡する設定方法を提供します。 これはJavaエージェント設定ファイル(whatap.conf)ファイルにweavingオプションを追加して設定し、様々なフレームワークやライブラリバージョンに対応する方法を案内します。

たとえば、フレームワークやオープンソースでspring-boot-3.x、feign-client-11、okhttp3-4.4使用の際は、次のようにオプションを設定します。

whatap.conf
weaving=spring-boot-3.0,feign-11,okhttp3-4.4

対応オープンソースの一覧

Javaエージェントを通じて追跡しているフレームワーク、またはオープンソースに対する設定方法は以下を参照してください。

フレームワーク/オープンソースバージョン設定エージェント最低バージョン備考
apache-camel-cxfcamel-cxf-3.15以降weaving=camel-cxf-3.15v2.2.27-
apache-camel-sedacamel-seda-2.22以降weaving=camel-seda-2.22v2.2.20-
camel-seda-3.2以降weaving=camel-seda-3.2v2.2.20-
db2db2-11.5以降weaving=db2-11.5v2.2.18-
dynamodbdynamodb-1.11weaving=dynamodb-1.11v2.2.39-
dynamodb-2.25weaving=dynamodb-2.25v2.2.39-
feign-clientfeign-11以降weaving=feign-11v2.2.6-
hystrixhystrix-1.5以降weaving=hystrix-1.5v2.0_21-
kafkakafka-clients-2.4.0以降weaving=kafka-clients-2.4.0v2.2.15-
reactor-kafka-1.3以降weaving=reactor-kafka-1.3v2.2.5-
logbacklogback-1.2.8以降weaving=logback-1.2.8v2.2.28特定のappenderを除外するエージェントオプションを提供
log4j2log4j-2.17以降weaving=log4j-2.17v2.2.28特定のappenderを除外するエージェントオプションを提供
mongodb、mongodb-reactivemongodb-3.8.2以降weaving=mongodb-3.8.2v2.2.11-
mongodb-4.0.3以降weaving=mongodb-4.0.3v2.2.11-
mongodb-4.4以降weaving=mongodb-4.4v2.2.11-
mongodb-4.8以降weaving=mongodb-4.8v2.2.11-
mule frameworkmule-3.9.5以降weaving=mule-3.9.5v2.2.23-
mule-4.5以降weaving=mule-4.5v2.2.23-
okhttpokhttp-2.7以降weaving=okhttp-2.7v2.0_15-
quarkus, quarkus-reactivequarkus-reactive-1.13以降weaving=quarkus-reactive-1.13v2.2.19-
quarkus-reactive-2.10以降weaving=quarkus-reactive-2.10v2.2.19-
redis(jedis)jedis-2.9.3以降weaving=jedis-2.9.3v2.0_33-
jedis-3.2以降weaving=jedis-3.2v2.0_09-
redis(lettuce)lettuce-5.1以降weaving=lettuce-5.1v2.2.7-
lettuce-6.2以降weaving=lettuce-6.2v2.2.16-
okhttp3以降weaving=okhttp3v2.0_15-
okhttp3-4.4weaving=okhttp3-4.4v2.2.9-
rabbitmqreactor-rabbitmq-1.2以降weaving=reactor-rabbitmq-1.2v2.0_06-
retrofitretrofit-2.5以降weaving=retrofit-2.5v2.2.39okhttp設定と同時使用不可
ribbonribbonweaving=ribbonv2.2.10-
spring-bootspring-boot-2.1以降weaving=spring-boot-2.1v2.2.23kafka-clients、r2dbc-mysql、spring-cloud-gateway、spring-webflux、tomcat9、undertowを含む。
spring-boot-2.5以降weaving=spring-boot-2.5v2.2.9kafka-clients、r2dbc-mysql、redis(lettuce)、spring-cloud-gateway、spring-webflux、tomcat9、undertowを含む。
spring-boot-2.7以降weaving=spring-boot-2.7v2.2.9jasync-r2dbc-mysql、kafka-clients、r2dbc-mysql、redis(lettuce)、spring-cloud-gateway、spring-webflux、tomcat9、undertowを含む。
spring-boot-3.0以降weaving=spring-boot-3.0v2.2.9jasync-r2dbc-mysql、kafka-clients、r2dbc-mysql、redis(lettuce)、spring-cloud-gateway、spring-webflux、tomcat10、undertowを含む。
spring-boot-3.2以降weaving=spring-boot-3.2v2.2.38jasync-r2dbc-mysql、spring-kafka、spring-kafka-batch、r2dbc-mysql、redis(lettuce)、spring-cloud-gateway、spring-webflux、tomcat10、undertowを含む。
tomcattomcat9weaving=tomcat9v2.2.5-
tomcat10weaving=tomcat10v2.2.5-
undertowundertow-2.3以降weaving=undertow-2.3v2.2.14-
undertow-2.2以降weaving=undertow-2.2v2.2.39-
vertxvertx-4.5weaving=vertx-4.5v2.2.39-

JavaエージェントのCVE誤検知防止

JavaエージェントのCVE脆弱性の誤検知防止と不要なライブラリクラスの削除方法を案内します。

CVE脆弱性が検出されても、Javaエージェントが実際に脆弱ではない可能性があります。 Javaアプリケーションで使用するライブラリ情報をモニタリングするために、エージェントには様々なライブラリクラスが含まれていますが、実際に使用しないとロードされません。 Javaアプリケーションで特定のクラスがロードされる時だけ追跡クラスとメソッドが結合され、モニタリングが行われるからです。

従って、CVE脆弱性検査時にソフトウェアの名前とバージョンのみに基づいて警告が発生することがあります。 複数のライブラリが検出されても、実際にアプリケーションでそのライブラリを使用しなければ脆弱性がオープンされないため、必ずしも脆弱な状態ではありません。

もしJavaアプリケーションで該当バージョンを使用せずに追跡クラスを削除する場合は、以下のコマンドを実行してください。 ただし、Javaエージェントがアップデートされるたびに削除作業を再度実行する必要があります。

java -cp whatap.agent-X.Y.Z.jar whatap.agent.setup.RemoveWeaving -remove [weaving jar filename]
ノート

特定のライブラリクラスを削除するコマンドはJavaエージェント2.2.37バージョン以降で対応します。

使い方java -cp whatap.agent-X.Y.Z.jar whatap.agent.setup.RemoveWeaving [arguments] [weaving jar filename]

Example
java -cp whatap.agent-2.2.37.jar whatap.agent.setup.RemoveWeaving -remove spring-boot-2.5.jar spring-boot-2.7.jar

Arguments:

  • -rまたは-remove: Javaエージェントでweaving jarファイルを削除して、新しいJavaエージェントを作成します。

  • -lまたは-list: weaving jarのファイル一覧を出力します。

  • -dまたは-debug: デバッグロギング(debug logging)を有効にします。

  • -eまたは-error: エラーのフルスタックトレースの情報を表示します。

  • -hまたは-help: ヘルプを出力して終了します。