본문으로 건너뛰기

오픈소스 추적

자바(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: 도움말 출력하고 종료합니다.