Skip to content

Commit 381d49a

Browse files
committed
Generate all reflection events
1 parent ef528f6 commit 381d49a

File tree

3 files changed

+15
-15
lines changed

3 files changed

+15
-15
lines changed

instrumentation-security/java-reflection/src/main/java/java/lang/reflect/Method_Instrumentation.java

+13-13
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.newrelic.api.agent.security.instrumentation.helpers.GenericHelper;
55
import com.newrelic.api.agent.security.schema.AbstractOperation;
66
import com.newrelic.api.agent.security.schema.StringUtils;
7+
import com.newrelic.api.agent.security.schema.VulnerabilityCaseType;
78
import com.newrelic.api.agent.security.schema.exceptions.NewRelicSecurityException;
89
import com.newrelic.api.agent.security.schema.operation.JavaReflectionOperation;
910
import com.newrelic.api.agent.security.utils.logging.LogLevel;
@@ -45,21 +46,20 @@ private void registerExitOperation(AbstractOperation operation) {
4546

4647
private AbstractOperation preprocessSecurityHook(Object obj, Class<?> declaringClass, Class<?>[] parameterTypes, String name, Object[] args) {
4748
try {
48-
if (!NewRelicSecurity.getAgent().getSecurityMetaData().getRequest().isEmpty() && NewRelicSecurity.getAgent().getSecurityMetaData().getDeserializationInvocation() != null && NewRelicSecurity.getAgent().getSecurityMetaData().getDeserializationInvocation().getActive()) {
49-
if(StringUtils.isNotBlank(NewRelicSecurity.getAgent().getSecurityMetaData().getDeserializationInvocation().peekReadObjectInAction())
50-
&& !StringUtils.equals(name, "readObject")) {
51-
JavaReflectionOperation operation = new JavaReflectionOperation(this.getClass().getName(), "invoke", declaringClass.getName(), name, args, obj);
52-
List<String> methodNames = new ArrayList<>();
53-
for (Method method : declaringClass.getDeclaredMethods()) {
54-
if(Arrays.equals(method.getParameterTypes(), parameterTypes)) {
55-
methodNames.add(method.getName());
56-
}
57-
}
58-
operation.setDeclaredMethods(methodNames);
59-
NewRelicSecurity.getAgent().registerOperation(operation);
60-
return operation;
49+
if(NewRelicSecurity.getAgent().getSecurityMetaData().getRequest().isEmpty() || !GenericHelper.isLockAcquirePossible(VulnerabilityCaseType.REFLECTION)) {
50+
return null;
51+
}
52+
53+
JavaReflectionOperation operation = new JavaReflectionOperation(this.getClass().getName(), "invoke", declaringClass.getName(), name, args, obj);
54+
List<String> methodNames = new ArrayList<>();
55+
for (Method method : declaringClass.getDeclaredMethods()) {
56+
if(Arrays.equals(method.getParameterTypes(), parameterTypes)) {
57+
methodNames.add(method.getName());
6158
}
6259
}
60+
operation.setDeclaredMethods(methodNames);
61+
NewRelicSecurity.getAgent().registerOperation(operation);
62+
return operation;
6363
} catch (Throwable e) {
6464
if(e instanceof NewRelicSecurityException){
6565
NewRelicSecurity.getAgent().log(LogLevel.WARNING, String.format(GenericHelper.SECURITY_EXCEPTION_MESSAGE, "JAVA-REFLECTION", e.getMessage()), e, Method_Instrumentation.class.getName());

newrelic-security-agent/src/main/java/com/newrelic/agent/security/util/IUtilConstants.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public interface IUtilConstants {
3333
String SKIP_SSRF = SKIP_IAST_SCAN_PARAMETERS_IAST_DETECTION_CATEGORY + ".ssrf";
3434
String SKIP_RXSS = SKIP_IAST_SCAN_PARAMETERS_IAST_DETECTION_CATEGORY + ".rxss";
3535
String SKIP_UNSAFE_DESERIALIZATION = SKIP_IAST_SCAN_PARAMETERS_IAST_DETECTION_CATEGORY + ".unsafe_deserialization";
36-
String SKIP_INSECURE_REFLECTION = SKIP_IAST_SCAN_PARAMETERS_IAST_DETECTION_CATEGORY + ".insecure_reflection";
36+
String SKIP_UNSAFE_REFLECTION = SKIP_IAST_SCAN_PARAMETERS_IAST_DETECTION_CATEGORY + ".unsafe_reflection";
3737

3838
String RESTRICTION_CRITERIA_SCAN_TIME_SCHEDULE = "security.restriction_criteria.scan_time.schedule";
3939
String RESTRICTION_CRITERIA_SCAN_TIME_DURATION = "security.restriction_criteria.scan_time.duration";

newrelic-security-api/src/main/java/com/newrelic/api/agent/security/instrumentation/helpers/GenericHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public static boolean isLockAcquired(String nrSecCustomAttrName, int hashCode) {
5252
return false;
5353
}
5454

55-
private static boolean isLockAcquirePossible(VulnerabilityCaseType caseType) {
55+
public static boolean isLockAcquirePossible(VulnerabilityCaseType caseType) {
5656
if (!NewRelicSecurity.isHookProcessingActive()){
5757
return false;
5858
}

0 commit comments

Comments
 (0)