Commit fbdb1cf
authored
Add Security Response ID (#10133)
What Does This Do
This PR adds support for extracting and emitting a unique security_response_id (UUIDv4 format) in AppSec blocking responses, generated by libddwaf v17.3.0
Implementation flow:
Extraction (WAFModule.java): When libddwaf triggers a blocking action, extract the security_response_id from actionInfo.parameters and pass it to RequestBlockingAction constructor
Propagation (Flow.java): Add securityResponseId field to RequestBlockingAction class with getter method and update all constructors (including forRedirect() factory method)
Servlet Integration: Update all blocking helper implementations to pass securityResponseId through to template rendering
Template Rendering (BlockingActionHelper.java):
- Add blockId parameter to getTemplate() method
- Replace {security_response_id} placeholder in HTML template
- Add security_response_id field in JSON template
- Append ?security_response_id=<uuid> to redirect URLs
Result: Blocking responses now include the unique identifier in all response types (JSON, HTML, redirect), enabling customers to track and debug specific blocking events.
Motivation
Per RFC-1070, libddwaf v17.3.0 generates a UUIDv4 as security_response_id in action parameters to provide unique identifiers for each blocking event. This PR implements the required changes:
Extract: Retrieve security_response_id from libddwaf action parameters in WAFModule.java
Propagate: Add blockId field to Flow.Action.RequestBlockingAction and pass it through all servlet blocking helpers
Emit:
JSON responses: Include as "security_response_id": "" field
HTML responses: Replace {security_response_id} placeholder with actual UUID
Redirect responses: Append as URL query parameter ?security_response_id=
This enables customers to uniquely identify and track specific blocking events for debugging and analysis.1 parent cce064e commit fbdb1cf
File tree
51 files changed
+983
-150
lines changed- dd-java-agent
- agent-bootstrap/src
- main
- java/datadog/trace/bootstrap/blocking
- resources/datadog/trace/bootstrap/blocking
- test/groovy/datadog/trace/bootstrap/blocking
- appsec
- src
- main/java/com/datadog/appsec
- blocking
- ddwaf
- report
- test/groovy/com/datadog/appsec
- blocking
- ddwaf
- instrumentation-testing/src/main/groovy/datadog/trace/agent/test/base
- instrumentation
- akka/akka-http/akka-http-10.0/src/main/java/datadog/trace/instrumentation/akkahttp/appsec
- grizzly
- grizzly-2.0/src/main/java/datadog/trace/instrumentation/grizzly
- grizzly-http-2.3.20/src/main/java/datadog/trace/instrumentation/grizzlyhttp232
- jetty
- jetty-common/src
- main/java/datadog/trace/instrumentation/jetty
- test/groovy/datadog/trace/instrumentation/jetty
- jetty-server
- jetty-server-10.0/src/main/java11/datadog/trace/instrumentation/jetty10
- jetty-server-9.0.4/src/main/java/datadog/trace/instrumentation/jetty904
- jetty-server-9.3/src/main/java/datadog/trace/instrumentation/jetty93
- jetty-server-9.4.21/src/main/java/datadog/trace/instrumentation/jetty9421
- liberty
- liberty-20.0/src/main/java/datadog/trace/instrumentation/liberty20
- liberty-23.0/src/main/java/datadog/trace/instrumentation/liberty23
- netty
- netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/server
- netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/server
- netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/server
- servlet
- jakarta-servlet-5.0/src/main/java/datadog/trace/instrumentation/servlet5
- javax-servlet/javax-servlet-iast/src/main/java/datadog/trace/instrumentation/servlet
- spring/spring-webmvc
- spring-webmvc-3.1/src
- latestDepTest/groovy/test
- test/groovy/test
- spring-webmvc-6.0/src/test/groovy/datadog/trace/instrumentation/springweb6
- tomcat
- tomcat-appsec/tomcat-appsec-7.0/src/main/java/datadog/trace/instrumentation/tomcat7
- tomcat-common/src/main/java/datadog/trace/instrumentation/tomcat
- undertow/undertow-common/src/main/java/datadog/trace/instrumentation/undertow
- dd-smoke-tests/appsec/springboot/src/test/groovy/datadog/smoketest/appsec
- internal-api/src/main/java/datadog/trace/api/gateway
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
51 files changed
+983
-150
lines changedLines changed: 18 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
118 | 119 | | |
119 | 120 | | |
120 | 121 | | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
121 | 127 | | |
122 | | - | |
| 128 | + | |
123 | 129 | | |
124 | | - | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
125 | 133 | | |
126 | | - | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
127 | 142 | | |
128 | 143 | | |
129 | 144 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
Lines changed: 96 additions & 50 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | | - | |
| 70 | + | |
71 | 71 | | |
72 | | - | |
73 | | - | |
74 | | - | |
| 72 | + | |
| 73 | + | |
75 | 74 | | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
80 | 79 | | |
81 | 80 | | |
82 | | - | |
| 81 | + | |
83 | 82 | | |
84 | 83 | | |
85 | 84 | | |
86 | | - | |
87 | | - | |
| 85 | + | |
| 86 | + | |
88 | 87 | | |
89 | 88 | | |
90 | 89 | | |
91 | 90 | | |
92 | 91 | | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
97 | 96 | | |
98 | 97 | | |
99 | 98 | | |
100 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
101 | 110 | | |
102 | 111 | | |
103 | | - | |
| 112 | + | |
104 | 113 | | |
105 | | - | |
106 | 114 | | |
107 | | - | |
108 | | - | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
109 | 120 | | |
110 | 121 | | |
111 | 122 | | |
112 | 123 | | |
113 | 124 | | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
118 | 129 | | |
119 | 130 | | |
120 | 131 | | |
121 | | - | |
122 | | - | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
123 | 135 | | |
124 | | - | |
125 | | - | |
126 | | - | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
127 | 142 | | |
128 | 143 | | |
129 | | - | |
130 | | - | |
131 | | - | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
132 | 148 | | |
133 | 149 | | |
134 | | - | |
| 150 | + | |
| 151 | + | |
135 | 152 | | |
136 | 153 | | |
137 | | - | |
138 | | - | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
| 154 | + | |
| 155 | + | |
143 | 156 | | |
144 | | - | |
145 | | - | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
146 | 186 | | |
147 | 187 | | |
148 | | - | |
| 188 | + | |
149 | 189 | | |
150 | | - | |
151 | 190 | | |
152 | | - | |
153 | | - | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
154 | 195 | | |
155 | 196 | | |
156 | 197 | | |
| 198 | + | |
| 199 | + | |
157 | 200 | | |
158 | 201 | | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
165 | 206 | | |
166 | 207 | | |
167 | 208 | | |
168 | 209 | | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
169 | 215 | | |
170 | 216 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
| 18 | + | |
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
92 | | - | |
| 92 | + | |
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
| |||
0 commit comments