From 0de8a857625e9822745b1eb2a9a6714421a43bc1 Mon Sep 17 00:00:00 2001 From: idawda Date: Mon, 2 Dec 2024 16:05:25 +0530 Subject: [PATCH 1/3] Add an API in Agent to check if Security is enabled --- .../main/java/com/newrelic/api/agent/security/Agent.java | 8 +++++++- .../main/java/com/newrelic/api/agent/security/Agent.java | 5 +++++ .../java/com/newrelic/api/agent/security/NoOpAgent.java | 5 +++++ .../com/newrelic/api/agent/security/SecurityAgent.java | 2 ++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/newrelic-security-agent/src/main/java/com/newrelic/api/agent/security/Agent.java b/newrelic-security-agent/src/main/java/com/newrelic/api/agent/security/Agent.java index 546b634ca..ceab956cf 100644 --- a/newrelic-security-agent/src/main/java/com/newrelic/api/agent/security/Agent.java +++ b/newrelic-security-agent/src/main/java/com/newrelic/api/agent/security/Agent.java @@ -889,7 +889,6 @@ public void setApplicationConnectionConfig(int port, String scheme) { AppServerInfo appServerInfo = AppServerInfoHelper.getAppServerInfo(); ServerConnectionConfiguration serverConnectionConfiguration = new ServerConnectionConfiguration(port, scheme); appServerInfo.getConnectionConfiguration().put(port, serverConnectionConfiguration); - logger.log(LogLevel.FINER, String.format("Unconfirmed connection configuration for port %d and scheme %s added.", port, scheme), this.getClass().getName()); // verifyConnectionAndPut(port, scheme, appServerInfo); } @@ -1079,4 +1078,11 @@ public void reportURLMapping() { SchedulerHelper.getInstance().scheduleURLMappingPosting(AgentUtils::sendApplicationURLMappings); } + @Override + public boolean isSecurityEnabled() { + if (config == null && !NewRelic.getAgent().getConfig().getValue(IUtilConstants.NR_SECURITY_ENABLED, false)) { + return false; + } + return true; + } } \ No newline at end of file diff --git a/newrelic-security-api-test-impl/src/main/java/com/newrelic/api/agent/security/Agent.java b/newrelic-security-api-test-impl/src/main/java/com/newrelic/api/agent/security/Agent.java index de8c94f3e..b49a5fb6f 100644 --- a/newrelic-security-api-test-impl/src/main/java/com/newrelic/api/agent/security/Agent.java +++ b/newrelic-security-api-test-impl/src/main/java/com/newrelic/api/agent/security/Agent.java @@ -223,4 +223,9 @@ public boolean recordExceptions(SecurityMetaData securityMetaData, Throwable exc public void reportURLMapping() { } + + @Override + public boolean isSecurityEnabled() { + return true; + } } \ No newline at end of file diff --git a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/NoOpAgent.java b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/NoOpAgent.java index 429737aa2..ac3ce7baa 100644 --- a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/NoOpAgent.java +++ b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/NoOpAgent.java @@ -153,4 +153,9 @@ public void reportURLMapping() { } + @Override + public boolean isSecurityEnabled() { + return false; + } + } diff --git a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/SecurityAgent.java b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/SecurityAgent.java index 3d3f9f642..379cbc7eb 100644 --- a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/SecurityAgent.java +++ b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/SecurityAgent.java @@ -80,4 +80,6 @@ void reportIASTScanFailure(SecurityMetaData securityMetaData, String apiId, Thro boolean recordExceptions(SecurityMetaData securityMetaData, Throwable exception); void reportURLMapping(); + + boolean isSecurityEnabled(); } From 89d2a61849ec0b75fe6928961fd6f855148ac6b2 Mon Sep 17 00:00:00 2001 From: idawda Date: Mon, 2 Dec 2024 16:39:43 +0530 Subject: [PATCH 2/3] Collect URL Mappings only if Security Agent is enabled --- .../apache/struts2/StrutsHelper.java | 3 +++ .../apache/tomcat10/HttpServletHelper.java | 3 +++ .../apache/tomcat7/HttpServletHelper.java | 3 +++ .../apache/wicket6/WicketHelper.java | 4 ++++ .../apache/wicket7/WicketHelper.java | 4 ++++ .../apache/wicket8/WicketHelper.java | 4 ++++ .../java/security/cxf/jaxrs/CXFHelper.java | 3 +++ .../grails13/GrailsHelper.java | 3 +++ .../instrumentation/grails2/GrailsHelper.java | 3 +++ .../instrumentation/grails3/GrailsHelper.java | 3 +++ .../grpc/BindableService_Instrumentation.java | 3 +++ .../grpc/BindableService_Instrumentation.java | 3 +++ .../grpc/BindableService_Instrumentation.java | 3 +++ .../instrumentation/jersey/JerseyHelper.java | 3 +++ .../jetty11/HttpServletHelper.java | 3 +++ .../jetty9/HttpServletHelper.java | 3 +++ .../instrumentation/mule36/MuleHelper.java | 3 +++ .../instrumentation/mule37/MuleHelper.java | 3 +++ .../HttpServerRoutes_Instrumentation.java | 3 +++ .../HttpServerRoutes_Instrumentation.java | 3 +++ .../GeneratedRouter_Instrumentation.scala | 4 ++++ .../GeneratedRouter_Instrumentation.scala | 4 ++++ .../GeneratedRouter_Instrumentation.scala | 4 ++++ .../resteasy2/RestEasyHelper.java | 5 +++-- .../resteasy3/RestEasyHelper.java | 3 +++ .../resteasy4/RestEasyHelper.java | 3 +++ .../servlet24/HttpServletHelper.java | 3 +++ .../servlet30/HttpServletHelper.java | 3 +++ .../servlet5/HttpServletHelper.java | 4 +++- .../servlet6/HttpServletHelper.java | 3 +++ .../reactive/result/method/SpringHelper.java | 3 +++ .../web/servlet/handler310/SpringHelper.java | 3 +++ .../web/servlet/handler530/SpringHelper.java | 3 +++ .../web/servlet/handler6/SpringHelper.java | 3 +++ .../HttpContext_Instrumentation.java | 8 +++++-- .../HttpServer_Instrumentation.java | 3 +++ .../helpers/VertxApiEndpointUtils.java | 21 +++++++++++++++++++ 37 files changed, 138 insertions(+), 5 deletions(-) diff --git a/instrumentation-security/apache-struts2/src/main/java/com/newrelic/agent/security/instrumentation/apache/struts2/StrutsHelper.java b/instrumentation-security/apache-struts2/src/main/java/com/newrelic/agent/security/instrumentation/apache/struts2/StrutsHelper.java index 6b509fe1d..fe769e599 100644 --- a/instrumentation-security/apache-struts2/src/main/java/com/newrelic/agent/security/instrumentation/apache/struts2/StrutsHelper.java +++ b/instrumentation-security/apache-struts2/src/main/java/com/newrelic/agent/security/instrumentation/apache/struts2/StrutsHelper.java @@ -19,6 +19,9 @@ public class StrutsHelper { public static void gatherURLMappings(RuntimeConfiguration runtimeConfig) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map> namespaces = runtimeConfig.getActionConfigs(); for (Map.Entry> namespace : namespaces.entrySet()) { String url = namespace.getKey(); diff --git a/instrumentation-security/apache-tomcat-10/src/main/java/com/newrelic/agent/security/instrumentation/apache/tomcat10/HttpServletHelper.java b/instrumentation-security/apache-tomcat-10/src/main/java/com/newrelic/agent/security/instrumentation/apache/tomcat10/HttpServletHelper.java index f27ae5e0c..609372043 100644 --- a/instrumentation-security/apache-tomcat-10/src/main/java/com/newrelic/agent/security/instrumentation/apache/tomcat10/HttpServletHelper.java +++ b/instrumentation-security/apache-tomcat-10/src/main/java/com/newrelic/agent/security/instrumentation/apache/tomcat10/HttpServletHelper.java @@ -20,6 +20,9 @@ public class HttpServletHelper { public static void gatherURLMappings(ServletContext servletContext) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map servletRegistrations = servletContext.getServletRegistrations(); getJSPMappings(servletContext, SEPARATOR); diff --git a/instrumentation-security/apache-tomcat-7/src/main/java/com/newrelic/agent/security/instrumentation/apache/tomcat7/HttpServletHelper.java b/instrumentation-security/apache-tomcat-7/src/main/java/com/newrelic/agent/security/instrumentation/apache/tomcat7/HttpServletHelper.java index c585c7b6c..0a79dcb33 100644 --- a/instrumentation-security/apache-tomcat-7/src/main/java/com/newrelic/agent/security/instrumentation/apache/tomcat7/HttpServletHelper.java +++ b/instrumentation-security/apache-tomcat-7/src/main/java/com/newrelic/agent/security/instrumentation/apache/tomcat7/HttpServletHelper.java @@ -19,6 +19,9 @@ public class HttpServletHelper { public static void gatherURLMappings(ServletContext servletContext) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map servletRegistrations = servletContext.getServletRegistrations(); getJSPMappings(servletContext, SEPARATOR); diff --git a/instrumentation-security/apache-wicket-6.4/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket6/WicketHelper.java b/instrumentation-security/apache-wicket-6.4/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket6/WicketHelper.java index 8a79ce975..ce6739f39 100644 --- a/instrumentation-security/apache-wicket-6.4/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket6/WicketHelper.java +++ b/instrumentation-security/apache-wicket-6.4/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket6/WicketHelper.java @@ -1,5 +1,6 @@ package com.newrelic.agent.security.instrumentation.apache.wicket6; +import com.newrelic.api.agent.security.NewRelicSecurity; import com.newrelic.api.agent.security.instrumentation.helpers.URLMappingsHelper; import com.newrelic.api.agent.security.schema.ApplicationURLMapping; @@ -13,6 +14,9 @@ public class WicketHelper { public static void getMappings(String path, String handler, boolean isPackageMapper) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } String finalPath = path + (isPackageMapper ? SEPARATOR + WILDCARD : ""); URLMappingsHelper.addApplicationURLMapping(new ApplicationURLMapping(WILDCARD, finalPath, handler)); } catch (Exception ignored){ diff --git a/instrumentation-security/apache-wicket-7.0/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket7/WicketHelper.java b/instrumentation-security/apache-wicket-7.0/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket7/WicketHelper.java index 954fb676b..027a319aa 100644 --- a/instrumentation-security/apache-wicket-7.0/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket7/WicketHelper.java +++ b/instrumentation-security/apache-wicket-7.0/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket7/WicketHelper.java @@ -1,5 +1,6 @@ package com.newrelic.agent.security.instrumentation.apache.wicket7; +import com.newrelic.api.agent.security.NewRelicSecurity; import com.newrelic.api.agent.security.instrumentation.helpers.URLMappingsHelper; import com.newrelic.api.agent.security.schema.ApplicationURLMapping; @@ -10,6 +11,9 @@ public class WicketHelper { public static void getMappings(String path, String handler, boolean isPackageMapper) { try{ + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } if(!path.startsWith(SEPARATOR)) { path = SEPARATOR + path; } diff --git a/instrumentation-security/apache-wicket-8.0/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket8/WicketHelper.java b/instrumentation-security/apache-wicket-8.0/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket8/WicketHelper.java index 9510e5958..09ee2fd58 100644 --- a/instrumentation-security/apache-wicket-8.0/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket8/WicketHelper.java +++ b/instrumentation-security/apache-wicket-8.0/src/main/java/com/newrelic/agent/security/instrumentation/apache/wicket8/WicketHelper.java @@ -1,5 +1,6 @@ package com.newrelic.agent.security.instrumentation.apache.wicket8; +import com.newrelic.api.agent.security.NewRelicSecurity; import com.newrelic.api.agent.security.instrumentation.helpers.URLMappingsHelper; import com.newrelic.api.agent.security.schema.ApplicationURLMapping; @@ -10,6 +11,9 @@ public class WicketHelper { public static void getMappings(String path, String handler, boolean isPackageMapper) { try{ + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } if(!path.startsWith(SEPARATOR)) { path = SEPARATOR + path; } diff --git a/instrumentation-security/cxf-jaxrs/src/main/java/com/newrelic/agent/java/security/cxf/jaxrs/CXFHelper.java b/instrumentation-security/cxf-jaxrs/src/main/java/com/newrelic/agent/java/security/cxf/jaxrs/CXFHelper.java index 5a61ca480..19c2a456e 100644 --- a/instrumentation-security/cxf-jaxrs/src/main/java/com/newrelic/agent/java/security/cxf/jaxrs/CXFHelper.java +++ b/instrumentation-security/cxf-jaxrs/src/main/java/com/newrelic/agent/java/security/cxf/jaxrs/CXFHelper.java @@ -19,6 +19,9 @@ public class CXFHelper { public static void gatherURLMapping(List classResourceInfo) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } for (ClassResourceInfo classResource: classResourceInfo){ resources(classResource.getURITemplate().getValue(), classResource); } diff --git a/instrumentation-security/grails-1.3/src/main/java/com/newrelic/agent/security/instrumentation/grails13/GrailsHelper.java b/instrumentation-security/grails-1.3/src/main/java/com/newrelic/agent/security/instrumentation/grails13/GrailsHelper.java index 51ffd541f..6b068175b 100644 --- a/instrumentation-security/grails-1.3/src/main/java/com/newrelic/agent/security/instrumentation/grails13/GrailsHelper.java +++ b/instrumentation-security/grails-1.3/src/main/java/com/newrelic/agent/security/instrumentation/grails13/GrailsHelper.java @@ -15,6 +15,9 @@ public class GrailsHelper { public static void gatherUrlMappings(Map uri2viewMap, String handler) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } for (String path : uri2viewMap.keySet()) { URLMappingsHelper.addApplicationURLMapping(new ApplicationURLMapping(WILDCARD, path, handler)); } diff --git a/instrumentation-security/grails-2.0/src/main/java/com/newrelic/agent/security/instrumentation/grails2/GrailsHelper.java b/instrumentation-security/grails-2.0/src/main/java/com/newrelic/agent/security/instrumentation/grails2/GrailsHelper.java index 32edabbb1..5fcfcb3d4 100644 --- a/instrumentation-security/grails-2.0/src/main/java/com/newrelic/agent/security/instrumentation/grails2/GrailsHelper.java +++ b/instrumentation-security/grails-2.0/src/main/java/com/newrelic/agent/security/instrumentation/grails2/GrailsHelper.java @@ -14,6 +14,9 @@ public class GrailsHelper { public static void gatherUrlMappings( Map uri2viewMap, String handler) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } for (String path : uri2viewMap.keySet()) { URLMappingsHelper.addApplicationURLMapping(new ApplicationURLMapping(URLMappingsHelper.WILDCARD, path, handler)); } diff --git a/instrumentation-security/grails-3.0/src/main/java/com/newrelic/agent/security/instrumentation/grails3/GrailsHelper.java b/instrumentation-security/grails-3.0/src/main/java/com/newrelic/agent/security/instrumentation/grails3/GrailsHelper.java index b1823ac2b..44b5ccef6 100644 --- a/instrumentation-security/grails-3.0/src/main/java/com/newrelic/agent/security/instrumentation/grails3/GrailsHelper.java +++ b/instrumentation-security/grails-3.0/src/main/java/com/newrelic/agent/security/instrumentation/grails3/GrailsHelper.java @@ -16,6 +16,9 @@ public class GrailsHelper { public static void gatherUrlMappings(Map actions, String handler, String controller) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } String path = StringUtils.prependIfMissing(controller, StringUtils.SEPARATOR); for (String action : actions.keySet()) { String finalPath = StringUtils.appendIfMissing(path, StringUtils.SEPARATOR) + action; diff --git a/instrumentation-security/grpc-1.22.0/src/main/java/io/grpc/BindableService_Instrumentation.java b/instrumentation-security/grpc-1.22.0/src/main/java/io/grpc/BindableService_Instrumentation.java index 2b4be8dd3..2f2213f5b 100644 --- a/instrumentation-security/grpc-1.22.0/src/main/java/io/grpc/BindableService_Instrumentation.java +++ b/instrumentation-security/grpc-1.22.0/src/main/java/io/grpc/BindableService_Instrumentation.java @@ -14,6 +14,9 @@ public class BindableService_Instrumentation { public ServerServiceDefinition bindService() { ServerServiceDefinition returnValue = Weaver.callOriginal(); + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return returnValue; + } try { String handler = this.getClass().getName(); for (ServerMethodDefinition serverMethod : returnValue.getMethods()) { diff --git a/instrumentation-security/grpc-1.4.0/src/main/java/io/grpc/BindableService_Instrumentation.java b/instrumentation-security/grpc-1.4.0/src/main/java/io/grpc/BindableService_Instrumentation.java index edeafd068..1957ec532 100644 --- a/instrumentation-security/grpc-1.4.0/src/main/java/io/grpc/BindableService_Instrumentation.java +++ b/instrumentation-security/grpc-1.4.0/src/main/java/io/grpc/BindableService_Instrumentation.java @@ -14,6 +14,9 @@ public class BindableService_Instrumentation { public ServerServiceDefinition bindService() { ServerServiceDefinition returnValue = Weaver.callOriginal(); + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return returnValue; + } try { String handler = this.getClass().getName(); for (ServerMethodDefinition serverMethod : returnValue.getMethods()) { diff --git a/instrumentation-security/grpc-1.40.0/src/main/java/io/grpc/BindableService_Instrumentation.java b/instrumentation-security/grpc-1.40.0/src/main/java/io/grpc/BindableService_Instrumentation.java index c1cb1f4e5..ec086a5f8 100644 --- a/instrumentation-security/grpc-1.40.0/src/main/java/io/grpc/BindableService_Instrumentation.java +++ b/instrumentation-security/grpc-1.40.0/src/main/java/io/grpc/BindableService_Instrumentation.java @@ -14,6 +14,9 @@ public class BindableService_Instrumentation { public ServerServiceDefinition bindService() { ServerServiceDefinition returnValue = Weaver.callOriginal(); + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return returnValue; + } try { String handler = this.getClass().getName(); for (ServerMethodDefinition serverMethod : returnValue.getMethods()) { diff --git a/instrumentation-security/jersey/src/main/java/com/newrelic/agent/security/instrumentation/jersey/JerseyHelper.java b/instrumentation-security/jersey/src/main/java/com/newrelic/agent/security/instrumentation/jersey/JerseyHelper.java index cd9fab6a0..0b65bc342 100644 --- a/instrumentation-security/jersey/src/main/java/com/newrelic/agent/security/instrumentation/jersey/JerseyHelper.java +++ b/instrumentation-security/jersey/src/main/java/com/newrelic/agent/security/instrumentation/jersey/JerseyHelper.java @@ -22,6 +22,9 @@ public class JerseyHelper { public static void gatherUrlMappings(ResourceModel resourceModel) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } List resources = resourceModel.getResources(); if(resources != null){ extractMappingsFromResources(resources, EMPTY); diff --git a/instrumentation-security/jetty-11/src/main/java/com/newrelic/agent/security/instrumentation/jetty11/HttpServletHelper.java b/instrumentation-security/jetty-11/src/main/java/com/newrelic/agent/security/instrumentation/jetty11/HttpServletHelper.java index bd8ca5aed..d630ac63e 100644 --- a/instrumentation-security/jetty-11/src/main/java/com/newrelic/agent/security/instrumentation/jetty11/HttpServletHelper.java +++ b/instrumentation-security/jetty-11/src/main/java/com/newrelic/agent/security/instrumentation/jetty11/HttpServletHelper.java @@ -207,6 +207,9 @@ public static void postProcessSecurityHook(HttpServletRequest request, HttpServl } public static void gatherURLMappings(ServletContext servletContext) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map servletRegistrations = servletContext.getServletRegistrations(); getJSPMappings(servletContext, SEPARATOR); diff --git a/instrumentation-security/jetty-9/src/main/java/com/newrelic/agent/security/instrumentation/jetty9/HttpServletHelper.java b/instrumentation-security/jetty-9/src/main/java/com/newrelic/agent/security/instrumentation/jetty9/HttpServletHelper.java index 685b15fbf..3fe31fd53 100644 --- a/instrumentation-security/jetty-9/src/main/java/com/newrelic/agent/security/instrumentation/jetty9/HttpServletHelper.java +++ b/instrumentation-security/jetty-9/src/main/java/com/newrelic/agent/security/instrumentation/jetty9/HttpServletHelper.java @@ -209,6 +209,9 @@ public static void postProcessSecurityHook(HttpServletRequest request, HttpServl } public static void gatherURLMappings(ServletContext servletContext) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map servletRegistrations = servletContext.getServletRegistrations(); getJSPMappings(servletContext, SEPARATOR); diff --git a/instrumentation-security/mule-3.6/src/main/java/com/newrelic/agent/security/instrumentation/mule36/MuleHelper.java b/instrumentation-security/mule-3.6/src/main/java/com/newrelic/agent/security/instrumentation/mule36/MuleHelper.java index 4683aab38..cd3de3386 100644 --- a/instrumentation-security/mule-3.6/src/main/java/com/newrelic/agent/security/instrumentation/mule36/MuleHelper.java +++ b/instrumentation-security/mule-3.6/src/main/java/com/newrelic/agent/security/instrumentation/mule36/MuleHelper.java @@ -116,6 +116,9 @@ public static String getNrSecCustomAttribName() { public static void gatherURLMappings(HttpListener messageSource, List messageProcessors) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } String path = messageSource.getPath(); String handlerClass = null; for (MessageProcessor processor: messageProcessors){ diff --git a/instrumentation-security/mule-3.7/src/main/java/com/newrelic/agent/security/instrumentation/mule37/MuleHelper.java b/instrumentation-security/mule-3.7/src/main/java/com/newrelic/agent/security/instrumentation/mule37/MuleHelper.java index a17bae1b4..dc81513ce 100644 --- a/instrumentation-security/mule-3.7/src/main/java/com/newrelic/agent/security/instrumentation/mule37/MuleHelper.java +++ b/instrumentation-security/mule-3.7/src/main/java/com/newrelic/agent/security/instrumentation/mule37/MuleHelper.java @@ -115,6 +115,9 @@ public static String getNrSecCustomAttribName(String customAttribute) { public static void gatherURLMappings(HttpListener messageSource, List messageProcessors) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } String path = messageSource.getPath(); String handlerClass = null; for (MessageProcessor processor: messageProcessors){ diff --git a/instrumentation-security/netty-reactor-0.7.0/src/main/java/reactor/ipc/netty/http/server/HttpServerRoutes_Instrumentation.java b/instrumentation-security/netty-reactor-0.7.0/src/main/java/reactor/ipc/netty/http/server/HttpServerRoutes_Instrumentation.java index 5e8e059bc..ae5e7d5b9 100644 --- a/instrumentation-security/netty-reactor-0.7.0/src/main/java/reactor/ipc/netty/http/server/HttpServerRoutes_Instrumentation.java +++ b/instrumentation-security/netty-reactor-0.7.0/src/main/java/reactor/ipc/netty/http/server/HttpServerRoutes_Instrumentation.java @@ -23,6 +23,9 @@ public HttpServerRoutes_Instrumentation route( Predicate condition, String className){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } className = StringUtils.substringBefore(className, URLMappingsHelper.SEPARATOR); ApplicationURLMapping mapping; if (condition instanceof HttpPredicate){ diff --git a/instrumentation-security/netty-reactor-0.8.0/src/main/java/reactor/netty/http/server/HttpServerRoutes_Instrumentation.java b/instrumentation-security/netty-reactor-0.8.0/src/main/java/reactor/netty/http/server/HttpServerRoutes_Instrumentation.java index 3856957e9..1300b1435 100644 --- a/instrumentation-security/netty-reactor-0.8.0/src/main/java/reactor/netty/http/server/HttpServerRoutes_Instrumentation.java +++ b/instrumentation-security/netty-reactor-0.8.0/src/main/java/reactor/netty/http/server/HttpServerRoutes_Instrumentation.java @@ -23,6 +23,9 @@ public HttpServerRoutes_Instrumentation route(Predicate condition, String className){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } className = StringUtils.substringBefore(className, URLMappingsHelper.SEPARATOR); ApplicationURLMapping mapping; if (condition instanceof HttpPredicate){ diff --git a/instrumentation-security/play-2.13_2.7/src/main/scala/com/newrelic/agent/security/instrumentation/play2_13/GeneratedRouter_Instrumentation.scala b/instrumentation-security/play-2.13_2.7/src/main/scala/com/newrelic/agent/security/instrumentation/play2_13/GeneratedRouter_Instrumentation.scala index 4dabe9884..88817afbc 100644 --- a/instrumentation-security/play-2.13_2.7/src/main/scala/com/newrelic/agent/security/instrumentation/play2_13/GeneratedRouter_Instrumentation.scala +++ b/instrumentation-security/play-2.13_2.7/src/main/scala/com/newrelic/agent/security/instrumentation/play2_13/GeneratedRouter_Instrumentation.scala @@ -1,5 +1,6 @@ package com.newrelic.agent.security.instrumentation.play2_13 +import com.newrelic.api.agent.security.NewRelicSecurity import com.newrelic.api.agent.security.instrumentation.helpers.URLMappingsHelper import com.newrelic.api.agent.security.schema.{ApplicationURLMapping, StringUtils} import com.newrelic.api.agent.weaver.{MatchType, Weave, Weaver} @@ -21,6 +22,9 @@ abstract class GeneratedRouter_Instrumentation { } private def gatherURLMappings(): Unit = { + if (!NewRelicSecurity.getAgent.isSecurityEnabled) { + return + } val iterator = documentation.iterator while (iterator.hasNext) { val doc = iterator.next diff --git a/instrumentation-security/play-2.4/src/main/scala/com/newrelic/agent/security/instrumentation/play24/GeneratedRouter_Instrumentation.scala b/instrumentation-security/play-2.4/src/main/scala/com/newrelic/agent/security/instrumentation/play24/GeneratedRouter_Instrumentation.scala index 3a69e0ce6..9094d3dfa 100644 --- a/instrumentation-security/play-2.4/src/main/scala/com/newrelic/agent/security/instrumentation/play24/GeneratedRouter_Instrumentation.scala +++ b/instrumentation-security/play-2.4/src/main/scala/com/newrelic/agent/security/instrumentation/play24/GeneratedRouter_Instrumentation.scala @@ -1,5 +1,6 @@ package com.newrelic.agent.security.instrumentation.play24 +import com.newrelic.api.agent.security.NewRelicSecurity import com.newrelic.api.agent.security.instrumentation.helpers.URLMappingsHelper import com.newrelic.api.agent.security.schema.{ApplicationURLMapping, StringUtils} import com.newrelic.api.agent.weaver.{MatchType, Weave, Weaver} @@ -19,6 +20,9 @@ abstract class GeneratedRouter_Instrumentation { } private def gatherURLMappings(): Unit = { + if (!NewRelicSecurity.getAgent.isSecurityEnabled) { + return + } val iterator = documentation.iterator while (iterator.hasNext) { val doc = iterator.next diff --git a/instrumentation-security/play-2.6/src/main/scala/com/newrelic/agent/security/instrumentation/play26/GeneratedRouter_Instrumentation.scala b/instrumentation-security/play-2.6/src/main/scala/com/newrelic/agent/security/instrumentation/play26/GeneratedRouter_Instrumentation.scala index 3d67607aa..acc644017 100644 --- a/instrumentation-security/play-2.6/src/main/scala/com/newrelic/agent/security/instrumentation/play26/GeneratedRouter_Instrumentation.scala +++ b/instrumentation-security/play-2.6/src/main/scala/com/newrelic/agent/security/instrumentation/play26/GeneratedRouter_Instrumentation.scala @@ -1,5 +1,6 @@ package com.newrelic.agent.security.instrumentation.play26 +import com.newrelic.api.agent.security.NewRelicSecurity import com.newrelic.api.agent.security.instrumentation.helpers.URLMappingsHelper import com.newrelic.api.agent.security.schema.{ApplicationURLMapping, StringUtils} import com.newrelic.api.agent.weaver.{MatchType, Weave, Weaver} @@ -20,6 +21,9 @@ abstract class GeneratedRouter_Instrumentation { } private def gatherURLMappings(): Unit = { + if (!NewRelicSecurity.getAgent.isSecurityEnabled) { + return + } val iterator = documentation.iterator while (iterator.hasNext) { val doc = iterator.next diff --git a/instrumentation-security/resteasy-2.2/src/main/java/com/newrelic/agent/security/instrumentation/resteasy2/RestEasyHelper.java b/instrumentation-security/resteasy-2.2/src/main/java/com/newrelic/agent/security/instrumentation/resteasy2/RestEasyHelper.java index 43efac8a5..b843b6da6 100644 --- a/instrumentation-security/resteasy-2.2/src/main/java/com/newrelic/agent/security/instrumentation/resteasy2/RestEasyHelper.java +++ b/instrumentation-security/resteasy-2.2/src/main/java/com/newrelic/agent/security/instrumentation/resteasy2/RestEasyHelper.java @@ -6,8 +6,6 @@ import com.newrelic.api.agent.security.schema.ApplicationURLMapping; import com.newrelic.api.agent.security.schema.StringUtils; import com.newrelic.api.agent.security.utils.logging.LogLevel; -import com.newrelic.api.agent.security.schema.SecurityMetaData; -import com.newrelic.api.agent.security.utils.logging.LogLevel; import org.jboss.resteasy.core.ResourceInvoker; import org.jboss.resteasy.core.ResourceLocator; import org.jboss.resteasy.core.ResourceMethod; @@ -22,6 +20,9 @@ public class RestEasyHelper { public static void gatherUrlMappings(String path, ResourceInvoker invoker) { try{ + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } List subResourceList = Collections.emptyList(); if (NewRelicSecurity.isHookProcessingActive()) { subResourceList = NewRelicSecurity.getAgent().getSecurityMetaData().getCustomAttribute(RESTEASY_SUB_RESOURCE_LIST, List.class); diff --git a/instrumentation-security/resteasy-3/src/main/java/com/newrelic/agent/security/instrumentation/resteasy3/RestEasyHelper.java b/instrumentation-security/resteasy-3/src/main/java/com/newrelic/agent/security/instrumentation/resteasy3/RestEasyHelper.java index 721c54b7e..dd4bba778 100644 --- a/instrumentation-security/resteasy-3/src/main/java/com/newrelic/agent/security/instrumentation/resteasy3/RestEasyHelper.java +++ b/instrumentation-security/resteasy-3/src/main/java/com/newrelic/agent/security/instrumentation/resteasy3/RestEasyHelper.java @@ -19,6 +19,9 @@ public class RestEasyHelper { private static final String ROUTE_DETECTION_COMPLETED = "ROUTE_DETECTION_COMPLETED"; public static void gatherUrlMappings(String path, ResourceInvoker invoker) { try{ + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } if(invoker instanceof ResourceMethodInvoker) { ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) invoker; String handler = methodInvoker.getResourceClass().getName(); diff --git a/instrumentation-security/resteasy-4/src/main/java/com/newrelic/agent/security/instrumentation/resteasy4/RestEasyHelper.java b/instrumentation-security/resteasy-4/src/main/java/com/newrelic/agent/security/instrumentation/resteasy4/RestEasyHelper.java index 0f7f11e84..53ede32ee 100644 --- a/instrumentation-security/resteasy-4/src/main/java/com/newrelic/agent/security/instrumentation/resteasy4/RestEasyHelper.java +++ b/instrumentation-security/resteasy-4/src/main/java/com/newrelic/agent/security/instrumentation/resteasy4/RestEasyHelper.java @@ -19,6 +19,9 @@ public class RestEasyHelper { private static final String ROUTE_DETECTION_COMPLETED = "ROUTE_DETECTION_COMPLETED"; public static void gatherUrlMappings(String path, ResourceInvoker invoker) { try{ + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } if(invoker instanceof ResourceMethodInvoker) { ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) invoker; String handler = methodInvoker.getResourceClass().getName(); diff --git a/instrumentation-security/servlet-2.4/src/main/java/com/newrelic/agent/security/instrumentation/servlet24/HttpServletHelper.java b/instrumentation-security/servlet-2.4/src/main/java/com/newrelic/agent/security/instrumentation/servlet24/HttpServletHelper.java index 272fe95d2..f87934e7f 100644 --- a/instrumentation-security/servlet-2.4/src/main/java/com/newrelic/agent/security/instrumentation/servlet24/HttpServletHelper.java +++ b/instrumentation-security/servlet-2.4/src/main/java/com/newrelic/agent/security/instrumentation/servlet24/HttpServletHelper.java @@ -124,6 +124,9 @@ private static String getNrSecCustomAttribName() { public static void gatherURLMappings(ServletContext servletContext) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map servletRegistrations = servletContext.getServletRegistrations(); getJSPMappings(servletContext, SEPARATOR); diff --git a/instrumentation-security/servlet-3.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet30/HttpServletHelper.java b/instrumentation-security/servlet-3.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet30/HttpServletHelper.java index 69fce5348..1d49d76df 100644 --- a/instrumentation-security/servlet-3.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet30/HttpServletHelper.java +++ b/instrumentation-security/servlet-3.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet30/HttpServletHelper.java @@ -19,6 +19,9 @@ public class HttpServletHelper { public static final String SERVLET_3_0 = "SERVLET-3.0"; public static void gatherURLMappings(ServletContext servletContext) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map servletRegistrations = servletContext.getServletRegistrations(); getJSPMappings(servletContext, SEPARATOR); diff --git a/instrumentation-security/servlet-5.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet5/HttpServletHelper.java b/instrumentation-security/servlet-5.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet5/HttpServletHelper.java index b87171180..a31ac351e 100644 --- a/instrumentation-security/servlet-5.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet5/HttpServletHelper.java +++ b/instrumentation-security/servlet-5.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet5/HttpServletHelper.java @@ -14,7 +14,6 @@ import java.util.Collection; import java.util.Enumeration; -import java.util.Iterator; import java.util.Map; public class HttpServletHelper { @@ -125,6 +124,9 @@ private static String getNrSecCustomAttribName() { public static void gatherURLMappings(ServletContext servletContext) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map servletRegistrations = servletContext.getServletRegistrations(); getJSPMappings(servletContext, SEPARATOR); diff --git a/instrumentation-security/servlet-6.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet6/HttpServletHelper.java b/instrumentation-security/servlet-6.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet6/HttpServletHelper.java index 9f198294e..6626d2127 100644 --- a/instrumentation-security/servlet-6.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet6/HttpServletHelper.java +++ b/instrumentation-security/servlet-6.0/src/main/java/com/newrelic/agent/security/instrumentation/servlet6/HttpServletHelper.java @@ -125,6 +125,9 @@ private static String getNrSecCustomAttribName() { public static void gatherURLMappings(ServletContext servletContext) { try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } Map servletRegistrations = servletContext.getServletRegistrations(); getJSPMappings(servletContext, SEPARATOR); diff --git a/instrumentation-security/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/SpringHelper.java b/instrumentation-security/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/SpringHelper.java index 1f50b12bc..18bad7864 100644 --- a/instrumentation-security/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/SpringHelper.java +++ b/instrumentation-security/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/SpringHelper.java @@ -18,6 +18,9 @@ public class SpringHelper { public static final String SPRING_WEBFLUX = "SPRING-WEBFLUX"; public static void gatherURLMappings(T mapping, Method method){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } RequestMappingInfo mappingInfo = (RequestMappingInfo) mapping; PatternsRequestCondition patternsCondition = mappingInfo.getPatternsCondition(); if (patternsCondition != null) { diff --git a/instrumentation-security/spring-webmvc-3.1.0/src/main/java/org/springframework/web/servlet/handler310/SpringHelper.java b/instrumentation-security/spring-webmvc-3.1.0/src/main/java/org/springframework/web/servlet/handler310/SpringHelper.java index 39893acf8..550ba01f5 100644 --- a/instrumentation-security/spring-webmvc-3.1.0/src/main/java/org/springframework/web/servlet/handler310/SpringHelper.java +++ b/instrumentation-security/spring-webmvc-3.1.0/src/main/java/org/springframework/web/servlet/handler310/SpringHelper.java @@ -18,6 +18,9 @@ public class SpringHelper { public static final String SPRING_WEBMVC_310 = "SPRING-WEBMVC-3.1.0"; public static void gatherURLMappings(T mapping, Method method){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } RequestMappingInfo mappingInfo = (RequestMappingInfo) mapping; PatternsRequestCondition patternsCondition = mappingInfo.getPatternsCondition(); if (patternsCondition != null) { diff --git a/instrumentation-security/spring-webmvc-5.3.0/src/main/java/org/springframework/web/servlet/handler530/SpringHelper.java b/instrumentation-security/spring-webmvc-5.3.0/src/main/java/org/springframework/web/servlet/handler530/SpringHelper.java index 473266ed6..3ed375ea9 100644 --- a/instrumentation-security/spring-webmvc-5.3.0/src/main/java/org/springframework/web/servlet/handler530/SpringHelper.java +++ b/instrumentation-security/spring-webmvc-5.3.0/src/main/java/org/springframework/web/servlet/handler530/SpringHelper.java @@ -20,6 +20,9 @@ public class SpringHelper { public static final String SPRING_WEBMVC_530 = "SPRING-WEBMVC-5.3.0"; public static void gatherURLMappings(T mapping, Method method){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } RequestMappingInfo mappingInfo = (RequestMappingInfo) mapping; PatternsRequestCondition patternsCondition = mappingInfo.getPatternsCondition(); PathPatternsRequestCondition pathPatternsCondition = mappingInfo.getPathPatternsCondition(); diff --git a/instrumentation-security/spring-webmvc-6.0.0/src/main/java/org/springframework/web/servlet/handler6/SpringHelper.java b/instrumentation-security/spring-webmvc-6.0.0/src/main/java/org/springframework/web/servlet/handler6/SpringHelper.java index 1b1076c90..6d9c26bd1 100644 --- a/instrumentation-security/spring-webmvc-6.0.0/src/main/java/org/springframework/web/servlet/handler6/SpringHelper.java +++ b/instrumentation-security/spring-webmvc-6.0.0/src/main/java/org/springframework/web/servlet/handler6/SpringHelper.java @@ -20,6 +20,9 @@ public class SpringHelper { public static final String SPRING_WEBMVC_600 = "SPRING-WEBMVC-6.0.0"; public static void gatherURLMappings(T mapping, Method method){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } RequestMappingInfo mappingInfo = (RequestMappingInfo) mapping; PatternsRequestCondition patternsCondition = mappingInfo.getPatternsCondition(); PathPatternsRequestCondition pathPatternsCondition = mappingInfo.getPathPatternsCondition(); diff --git a/instrumentation-security/sun-net-httpserver/src/main/java/com/sun/net/httpserver/HttpContext_Instrumentation.java b/instrumentation-security/sun-net-httpserver/src/main/java/com/sun/net/httpserver/HttpContext_Instrumentation.java index f59f9c94d..dcd4ded10 100644 --- a/instrumentation-security/sun-net-httpserver/src/main/java/com/sun/net/httpserver/HttpContext_Instrumentation.java +++ b/instrumentation-security/sun-net-httpserver/src/main/java/com/sun/net/httpserver/HttpContext_Instrumentation.java @@ -1,5 +1,6 @@ package com.sun.net.httpserver; +import com.newrelic.api.agent.security.NewRelicSecurity; import com.newrelic.api.agent.security.instrumentation.helpers.URLMappingsHelper; import com.newrelic.api.agent.security.schema.ApplicationURLMapping; import com.newrelic.api.agent.weaver.MatchType; @@ -12,10 +13,13 @@ public abstract class HttpContext_Instrumentation { public abstract String getPath(); public void setHandler (HttpHandler h) { + Weaver.callOriginal(); try { - Weaver.callOriginal(); - } finally { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } URLMappingsHelper.addApplicationURLMapping(new ApplicationURLMapping(HttpServerHelper.HTTP_METHOD, getPath(), h.getClass().getName())); + } catch (Exception e){ } } diff --git a/instrumentation-security/sun-net-httpserver/src/main/java/com/sun/net/httpserver/HttpServer_Instrumentation.java b/instrumentation-security/sun-net-httpserver/src/main/java/com/sun/net/httpserver/HttpServer_Instrumentation.java index 7da8e2a4f..31d383fa0 100644 --- a/instrumentation-security/sun-net-httpserver/src/main/java/com/sun/net/httpserver/HttpServer_Instrumentation.java +++ b/instrumentation-security/sun-net-httpserver/src/main/java/com/sun/net/httpserver/HttpServer_Instrumentation.java @@ -16,6 +16,9 @@ public class HttpServer_Instrumentation { public HttpContext createContext (String path, HttpHandler handler){ HttpContext context = Weaver.callOriginal(); try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return context; + } URLMappingsHelper.addApplicationURLMapping(new ApplicationURLMapping(HttpServerHelper.HTTP_METHOD, path, handler.getClass().getName())); } catch (Exception e){ NewRelicSecurity.getAgent().log(LogLevel.WARNING, String.format(GenericHelper.ERROR_WHILE_GETTING_APP_ENDPOINTS, HttpServerHelper.SUN_NET_HTTPSERVER, e.getMessage()), e, this.getClass().getName()); diff --git a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/VertxApiEndpointUtils.java b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/VertxApiEndpointUtils.java index 47de7398a..2e3d4b716 100644 --- a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/VertxApiEndpointUtils.java +++ b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/VertxApiEndpointUtils.java @@ -50,6 +50,9 @@ private void addRouteImpl(int routerHashCode, int routeHashCode) throws Exceptio public void addRouteImpl(int routerHashCode, int routeHashCode, String path, String pattern, String method){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } addRouteImpl(routerHashCode, routeHashCode); if (!routes.containsKey(routerHashCode)){ return; @@ -74,6 +77,9 @@ public void addRouteImpl(int routerHashCode, int routeHashCode, String path, Str public void addHandlerClass(int routerHashCode, int routeHashCode, String handlerName){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } if (!routes.containsKey(routerHashCode)){ return; } @@ -87,6 +93,9 @@ public void addHandlerClass(int routerHashCode, int routeHashCode, String handle public void resolveSubRoutes(int parentRouterHashCode, int childRouterHashCode, String path){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } if (path == null || !routes.containsKey(childRouterHashCode) || !routes.containsKey(parentRouterHashCode)){ return; } @@ -107,6 +116,9 @@ public void resolveSubRoutes(int parentRouterHashCode, int childRouterHashCode, } public void generateAPIEndpoints(int routerHashCode){ + if (!NewRelicSecurity.getAgent().isSecurityEnabled()){ + return; + } if (!routes.containsKey(routerHashCode)){ return; } @@ -131,6 +143,9 @@ public void generateAPIEndpoints(int routerHashCode){ public void removeRouteImpl(int routerHashCode, int routeHashCode){ try { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } if (routes.containsKey(routerHashCode) && routes.get(routerHashCode).containsKey(routeHashCode)){ VertxRoute route = routes.get(routerHashCode).remove(routeHashCode); if (route != null && !URLMappingsHelper.getApplicationURLMappings().isEmpty()){ @@ -154,6 +169,9 @@ public String getPath(String path, Object pattern) { } public void routeDetection(String path, Pattern pattern) { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } if (NewRelicSecurity.isHookProcessingActive()){ String route = StringUtils.EMPTY; if (path != null){ @@ -170,6 +188,9 @@ public void routeDetection(String path, Pattern pattern) { } public void generateAPIEndpointsIfNotPresent(int routeHashCode) { + if (!NewRelicSecurity.getAgent().isSecurityEnabled()) { + return; + } for (Map.Entry> routesSet : routes.entrySet()) { if (routesSet.getValue().containsKey(routeHashCode)) { generateAPIEndpoints(routesSet.getKey()); From 99c951687a30b4c0881e4ea0e033b0845d1f3e7f Mon Sep 17 00:00:00 2001 From: idawda Date: Fri, 17 Jan 2025 16:43:24 +0530 Subject: [PATCH 3/3] NR-355142: Fix false API reported for jetty app --- .../instrumentation/helpers/URLMappingsHelper.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/URLMappingsHelper.java b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/URLMappingsHelper.java index d38c4c8f7..1c5da011f 100644 --- a/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/URLMappingsHelper.java +++ b/newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/URLMappingsHelper.java @@ -22,7 +22,7 @@ public class URLMappingsHelper { public static final String subResourceSegment = "/*"; - private static Set mappings = ConcurrentHashMap.newKeySet(); + private static final Set mappings = ConcurrentHashMap.newKeySet(); private static final Set defaultHandlers = new HashSet() {{ add("org.eclipse.jetty.jsp.JettyJspServlet"); @@ -47,15 +47,17 @@ public class URLMappingsHelper { add("org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet"); add("org.codehaus.groovy.grails.web.pages.GroovyPagesServlet"); add("org.codehaus.groovy.grails.web.servlet.ErrorHandlingServlet"); + add("org.eclipse.jetty.ee9.servlet.NoJspServlet"); + add("org.eclipse.jetty.ee9.servlet.DefaultServlet"); }}; public static Set getApplicationURLMappings() { return mappings; } - private static Set handlers = ConcurrentHashMap.newKeySet(); + private static final Set handlers = ConcurrentHashMap.newKeySet(); - private static Set routeSegments = new TreeSet<>(new RouteComparator()); + private static final Set routeSegments = new TreeSet<>(new RouteComparator()); public static Set getHandlersHash() { return handlers;