Skip to content

Commit e06a2e3

Browse files
committed
change to .trie
1 parent 9e2878f commit e06a2e3

3 files changed

Lines changed: 25 additions & 23 deletions

File tree

dd-java-agent/appsec/build.gradle

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ plugins {
99

1010
apply from: "$rootDir/gradle/java.gradle"
1111
apply from: "$rootDir/gradle/version.gradle"
12+
apply from: "$rootDir/gradle/tries.gradle"
1213

1314
dependencies {
1415
api libs.slf4j
@@ -29,6 +30,14 @@ dependencies {
2930
testImplementation libs.jackson.databind
3031
}
3132

33+
tasks.named("compileJava", JavaCompile) {
34+
dependsOn("generateClassNameTries")
35+
}
36+
37+
tasks.named("sourcesJar", Jar) {
38+
dependsOn("generateClassNameTries")
39+
}
40+
3241
tasks.named("shadowJar", ShadowJar) {
3342
exclude '**/*-dbgsym.zip'
3443
dependencies deps.excludeShared

dd-java-agent/appsec/src/main/java/com/datadog/appsec/event/data/ObjectIntrospection.java

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,40 +16,18 @@
1616
import java.lang.reflect.Modifier;
1717
import java.util.ArrayList;
1818
import java.util.Collection;
19-
import java.util.Collections;
2019
import java.util.Date;
2120
import java.util.HashMap;
22-
import java.util.HashSet;
2321
import java.util.Iterator;
2422
import java.util.List;
2523
import java.util.Map;
26-
import java.util.Set;
2724
import org.slf4j.Logger;
2825
import org.slf4j.LoggerFactory;
2926

3027
public final class ObjectIntrospection {
3128

3229
private static final Logger log = LoggerFactory.getLogger(ObjectIntrospection.class);
3330

34-
/**
35-
* Field types excluded from object introspection. Covers Groovy meta-fields and logging framework
36-
* loggers — both introduce deep, cyclic, or sensitive object graphs that are irrelevant for WAF
37-
* inspection and can trigger false positives (e.g. crs-944-130).
38-
*/
39-
private static final Set<String> EXCLUDED_FIELD_TYPES;
40-
41-
static {
42-
final Set<String> types = new HashSet<>();
43-
types.add("groovy.lang.MetaClass");
44-
types.add("org.slf4j.Logger");
45-
types.add("org.apache.logging.log4j.Logger");
46-
types.add("org.apache.logging.log4j.core.Logger");
47-
types.add("java.util.logging.Logger");
48-
types.add("org.apache.commons.logging.Log");
49-
types.add("ch.qos.logback.classic.Logger");
50-
EXCLUDED_FIELD_TYPES = Collections.unmodifiableSet(types);
51-
}
52-
5331
private static final Method trySetAccessible;
5432

5533
static {
@@ -309,7 +287,7 @@ private static Object doConversion(Object obj, int depth, State state) {
309287
if (Modifier.isStatic(f.getModifiers())) {
310288
continue;
311289
}
312-
if (EXCLUDED_FIELD_TYPES.contains(f.getType().getName())) {
290+
if (IntrospectionExcludedTypesTrie.apply(f.getType().getName()) >= 1) {
313291
continue;
314292
}
315293
String name = f.getName();
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Generates 'IntrospectionExcludedTypesTrie.java'
2+
3+
# Field types excluded from ObjectIntrospection to avoid deep/cyclic traversals
4+
# that could trigger WAF false positives (e.g. crs-944-130 java_code_injection).
5+
# 1 = exclude this field type
6+
7+
# -------- Groovy --------
8+
1 groovy.lang.MetaClass
9+
10+
# -------- Logging frameworks --------
11+
1 ch.qos.logback.*
12+
1 java.util.logging.Logger
13+
1 org.apache.commons.logging.Log
14+
1 org.apache.logging.log4j.*
15+
1 org.slf4j.*

0 commit comments

Comments
 (0)