Skip to content

Commit d847652

Browse files
committed
Waf upgrade to 1.28.0
Signed-off-by: sezen.leblay <sezen.leblay@datadoghq.com>
1 parent f6e94b2 commit d847652

File tree

9 files changed

+187
-90
lines changed

9 files changed

+187
-90
lines changed
Submodule integrations-core updated 4981 files

dd-java-agent/appsec/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ dependencies {
1414
implementation project(':internal-api')
1515
implementation project(':communication')
1616
implementation project(':telemetry')
17-
implementation group: 'io.sqreen', name: 'libsqreen', version: '16.0.0'
17+
implementation group: 'io.sqreen', name: 'libsqreen', version: '17.1.0'
1818
implementation libs.moshi
1919

2020
testImplementation libs.bytebuddy

dd-java-agent/appsec/src/main/java/com/datadog/appsec/config/AppSecConfigServiceImpl.java

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@
3939
import com.datadog.ddwaf.exception.InvalidRuleSetException;
4040
import com.datadog.ddwaf.exception.UnclassifiedWafException;
4141
import com.squareup.moshi.JsonAdapter;
42-
import com.squareup.moshi.JsonReader;
43-
import com.squareup.moshi.JsonWriter;
4442
import com.squareup.moshi.Moshi;
43+
import com.squareup.moshi.Types;
4544
import datadog.remoteconfig.ConfigurationEndListener;
4645
import datadog.remoteconfig.ConfigurationPoller;
4746
import datadog.remoteconfig.PollingRateHinter;
@@ -53,7 +52,6 @@
5352
import datadog.trace.api.ConfigOrigin;
5453
import datadog.trace.api.ProductActivation;
5554
import datadog.trace.api.UserIdCollectionMode;
56-
import datadog.trace.api.telemetry.LogCollector;
5755
import datadog.trace.api.telemetry.WafMetricCollector;
5856
import java.io.ByteArrayInputStream;
5957
import java.io.FileInputStream;
@@ -68,7 +66,6 @@
6866
import java.util.Set;
6967
import java.util.concurrent.ConcurrentHashMap;
7068
import java.util.concurrent.atomic.AtomicBoolean;
71-
import javax.annotation.Nullable;
7269
import okio.Okio;
7370
import org.slf4j.Logger;
7471
import org.slf4j.LoggerFactory;
@@ -96,25 +93,10 @@ public class AppSecConfigServiceImpl implements AppSecConfigService {
9693
new WAFInitializationResultReporter();
9794
private final WAFStatsReporter statsReporter = new WAFStatsReporter();
9895

99-
private static final JsonAdapter<Object> ADAPTER =
96+
private static final JsonAdapter<Map<String, Object>> ADAPTER =
10097
new Moshi.Builder()
101-
.add(
102-
Double.class,
103-
new JsonAdapter<Number>() {
104-
@Override
105-
public Number fromJson(JsonReader reader) throws IOException {
106-
double value = reader.nextDouble();
107-
long longValue = (long) value;
108-
return value % 1 == 0 ? longValue : value;
109-
}
110-
111-
@Override
112-
public void toJson(JsonWriter writer, @Nullable Number value) throws IOException {
113-
throw new UnsupportedOperationException();
114-
}
115-
})
11698
.build()
117-
.adapter(Object.class);
99+
.adapter(Types.newParameterizedType(Map.class, String.class, Object.class));
118100

119101
private boolean hasUserWafConfig;
120102
private boolean defaultConfigActivated;
@@ -309,7 +291,6 @@ private void handleWafUpdateResultReport(String configKey, Map<String, Object> r
309291
}
310292

311293
// TODO: Send diagnostics via telemetry
312-
final LogCollector telemetryLogger = LogCollector.get();
313294

314295
initReporter.setReportForPublication(wafDiagnostics);
315296
if (wafDiagnostics.rulesetVersion != null
@@ -488,8 +469,7 @@ private static Map<String, Object> loadDefaultWafConfig() throws IOException {
488469
throw new IOException("Resource " + DEFAULT_CONFIG_LOCATION + " not found");
489470
}
490471

491-
Map<String, Object> ret =
492-
(Map<String, Object>) ADAPTER.fromJson(Okio.buffer(Okio.source(is)));
472+
Map<String, Object> ret = ADAPTER.fromJson(Okio.buffer(Okio.source(is)));
493473

494474
StandardizedLogging._initialConfigSourceAndLibddwafVersion(log, "<bundled config>");
495475
if (log.isInfoEnabled()) {
@@ -506,8 +486,7 @@ private static Map<String, Object> loadUserWafConfig(Config tracerConfig) throws
506486
return null;
507487
}
508488
try (InputStream is = new FileInputStream(filename)) {
509-
Map<String, Object> ret =
510-
(Map<String, Object>) ADAPTER.fromJson(Okio.buffer(Okio.source(is)));
489+
Map<String, Object> ret = ADAPTER.fromJson(Okio.buffer(Okio.source(is)));
511490

512491
StandardizedLogging._initialConfigSourceAndLibddwafVersion(log, filename);
513492
if (log.isInfoEnabled()) {

dd-java-agent/appsec/src/main/java/com/datadog/appsec/ddwaf/WAFModule.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import datadog.trace.api.ProductActivation;
3535
import datadog.trace.api.ProductTraceSource;
3636
import datadog.trace.api.gateway.Flow;
37-
import datadog.trace.api.sampling.PrioritySampling;
3837
import datadog.trace.api.telemetry.LogCollector;
3938
import datadog.trace.api.telemetry.WafMetricCollector;
4039
import datadog.trace.api.time.SystemTimeSource;
@@ -53,7 +52,6 @@
5352
import java.lang.reflect.UndeclaredThrowableException;
5453
import java.util.Collection;
5554
import java.util.Collections;
56-
import java.util.HashMap;
5755
import java.util.HashSet;
5856
import java.util.Iterator;
5957
import java.util.List;
@@ -81,8 +79,6 @@ public class WAFModule implements AppSecModule {
8179

8280
private static final JsonAdapter<List<WAFResultData>> RES_JSON_ADAPTER;
8381

84-
private static final Map<String, ActionInfo> DEFAULT_ACTIONS;
85-
8682
private static final String EXPLOIT_DETECTED_MSG = "Exploit detected";
8783
private boolean init = true;
8884
private String rulesetVersion;
@@ -118,12 +114,6 @@ private CtxAndAddresses(Collection<Address<?>> addressesOfInterest, WafHandle ct
118114
Moshi moshi = new Moshi.Builder().build();
119115
RES_JSON_ADAPTER = moshi.adapter(Types.newParameterizedType(List.class, WAFResultData.class));
120116

121-
Map<String, Object> actionParams = new HashMap<>();
122-
actionParams.put("status_code", 403);
123-
actionParams.put("type", "auto");
124-
actionParams.put("grpc_status_code", 10);
125-
DEFAULT_ACTIONS =
126-
Collections.singletonMap("block", new ActionInfo("block_request", actionParams));
127117
createLimitsObject();
128118
}
129119

@@ -441,9 +431,6 @@ public void onDataAvailable(
441431
}
442432
}
443433

444-
reqCtx.setKeepType(
445-
resultWithData.keep ? PrioritySampling.USER_KEEP : PrioritySampling.USER_DROP);
446-
447434
if (resultWithData.attributes != null && !resultWithData.attributes.isEmpty()) {
448435
reqCtx.reportDerivatives(resultWithData.attributes);
449436
}

dd-java-agent/appsec/src/main/java/com/datadog/appsec/gateway/AppSecRequestContext.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import datadog.trace.api.Config;
1414
import datadog.trace.api.http.StoredBodySupplier;
1515
import datadog.trace.api.internal.TraceSegment;
16-
import datadog.trace.api.sampling.PrioritySampling;
1716
import datadog.trace.util.stacktrace.StackTraceEvent;
1817
import java.io.Closeable;
1918
import java.util.*;
@@ -147,7 +146,6 @@ public class AppSecRequestContext implements DataBundle, Closeable {
147146

148147
private volatile boolean keepOpenForApiSecurityPostProcessing;
149148
private volatile Long apiSecurityEndpointHash;
150-
private volatile byte keepType = PrioritySampling.SAMPLER_KEEP;
151149

152150
private static final AtomicIntegerFieldUpdater<AppSecRequestContext> WAF_TIMEOUTS_UPDATER =
153151
AtomicIntegerFieldUpdater.newUpdater(AppSecRequestContext.class, "wafTimeouts");
@@ -363,14 +361,6 @@ public Long getApiSecurityEndpointHash() {
363361
return this.apiSecurityEndpointHash;
364362
}
365363

366-
public void setKeepType(byte keepType) {
367-
this.keepType = keepType;
368-
}
369-
370-
public byte getKeepType() {
371-
return this.keepType;
372-
}
373-
374364
void addRequestHeader(String name, String value) {
375365
if (finishedRequestHeaders) {
376366
throw new IllegalStateException("Request headers were said to be finished before");

dd-java-agent/appsec/src/main/java/com/datadog/appsec/gateway/GatewayBridge.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import static com.datadog.appsec.gateway.AppSecRequestContext.DEFAULT_REQUEST_HEADERS_ALLOW_LIST;
66
import static com.datadog.appsec.gateway.AppSecRequestContext.REQUEST_HEADERS_ALLOW_LIST;
77
import static com.datadog.appsec.gateway.AppSecRequestContext.RESPONSE_HEADERS_ALLOW_LIST;
8-
import static datadog.trace.bootstrap.instrumentation.api.Tags.SAMPLING_PRIORITY;
98

109
import com.datadog.appsec.AppSecSystem;
1110
import com.datadog.appsec.api.security.ApiSecuritySampler;
@@ -750,9 +749,6 @@ private NoopFlow onRequestEnded(RequestContext ctx_, IGSpanInfo spanInfo) {
750749

751750
// If detected any events - mark span at appsec.event
752751
if (!collectedEvents.isEmpty()) {
753-
// Set asm keep in case that root span was not available when events are detected
754-
traceSeg.setTagTop(Tags.ASM_KEEP, true);
755-
traceSeg.setTagTop(SAMPLING_PRIORITY, ctx.getKeepType());
756752
traceSeg.setTagTop(Tags.PROPAGATED_TRACE_SOURCE, ProductTraceSource.ASM);
757753
traceSeg.setTagTop("appsec.event", true);
758754
traceSeg.setTagTop("network.client.ip", ctx.getPeerAddress());

0 commit comments

Comments
 (0)