diff --git a/libs/agent-sm/agent/src/main/java/org/opensearch/javaagent/Agent.java b/libs/agent-sm/agent/src/main/java/org/opensearch/javaagent/Agent.java index 6f3098eae655f..5a8eccf91fb96 100644 --- a/libs/agent-sm/agent/src/main/java/org/opensearch/javaagent/Agent.java +++ b/libs/agent-sm/agent/src/main/java/org/opensearch/javaagent/Agent.java @@ -74,11 +74,18 @@ public static void agentmain(String agentArguments, Instrumentation instrumentat } private static AgentBuilder createAgentBuilder() throws Exception { - final Junction socketType = ElementMatchers.isSubTypeOf(SocketChannel.class) - .or(ElementMatchers.isSubTypeOf(Socket.class)); - final Junction pathType = ElementMatchers.isSubTypeOf(Files.class); - final Junction fileChannelType = ElementMatchers.isSubTypeOf(FileChannel.class); - final Junction fileSystemProviderType = ElementMatchers.isSubTypeOf(FileSystemProvider.class); + final Junction socketType = ElementMatchers.nameStartsWith(Socket.class.getPackageName() + ".") + .or(ElementMatchers.nameStartsWith("sun.nio.ch.")) + .or(ElementMatchers.nameStartsWith("sun.security.ssl.")) + .and(ElementMatchers.isSubTypeOf(SocketChannel.class).or(ElementMatchers.isSubTypeOf(Socket.class))); + final Junction pathType = ElementMatchers.named(Files.class.getName()); + final Junction fileChannelType = ElementMatchers.nameStartsWith(FileChannel.class.getPackageName() + ".") + .or(ElementMatchers.nameStartsWith("sun.nio.ch.")) + .and(ElementMatchers.isSubTypeOf(FileChannel.class)); + final Junction fileSystemProviderType = ElementMatchers.nameStartsWith("sun.nio.fs.") + .or(ElementMatchers.nameStartsWith("jdk.nio.zipfs.")) + .or(ElementMatchers.nameStartsWith("jdk.internal.jrtfs.")) + .and(ElementMatchers.isSubTypeOf(FileSystemProvider.class)); final AgentBuilder.Transformer socketTransformer = (b, typeDescription, classLoader, module, pd) -> b.visit( Advice.to(SocketChannelInterceptor.class) @@ -102,13 +109,13 @@ private static AgentBuilder createAgentBuilder() throws Exception { .transform(socketTransformer) .type(pathType.or(fileChannelType).or(fileSystemProviderType)) .transform(fileTransformer) - .type(ElementMatchers.is(java.lang.System.class)) + .type(ElementMatchers.named(java.lang.System.class.getName())) .transform( (b, typeDescription, classLoader, module, pd) -> b.visit( Advice.to(SystemExitInterceptor.class).on(ElementMatchers.named("exit")) ) ) - .type(ElementMatchers.is(java.lang.Runtime.class)) + .type(ElementMatchers.named(java.lang.Runtime.class.getName())) .transform( (b, typeDescription, classLoader, module, pd) -> b.visit( Advice.to(RuntimeHaltInterceptor.class).on(ElementMatchers.named("halt")) @@ -117,7 +124,7 @@ private static AgentBuilder createAgentBuilder() throws Exception { // Only apply the transformation when running on JDK-24 or above if (Runtime.version().feature() >= 24) { - builder = builder.type(ElementMatchers.is(Subject.class)).transform(subjectTransformer); + builder = builder.type(ElementMatchers.named(Subject.class.getName())).transform(subjectTransformer); } return builder;