datadog 2.14.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -2
  3. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +7 -6
  4. data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +3 -0
  5. data/ext/datadog_profiling_native_extension/encoded_profile.c +69 -0
  6. data/ext/datadog_profiling_native_extension/encoded_profile.h +7 -0
  7. data/ext/datadog_profiling_native_extension/http_transport.c +25 -32
  8. data/ext/datadog_profiling_native_extension/profiling.c +2 -0
  9. data/ext/datadog_profiling_native_extension/stack_recorder.c +22 -21
  10. data/ext/libdatadog_api/datadog_ruby_common.h +3 -0
  11. data/lib/datadog/appsec/assets/waf_rules/README.md +50 -5
  12. data/lib/datadog/appsec/assets/waf_rules/processors.json +239 -10
  13. data/lib/datadog/appsec/assets/waf_rules/recommended.json +0 -1344
  14. data/lib/datadog/appsec/assets/waf_rules/scanners.json +926 -17
  15. data/lib/datadog/appsec/assets/waf_rules/strict.json +0 -1344
  16. data/lib/datadog/appsec/component.rb +19 -17
  17. data/lib/datadog/appsec/compressed_json.rb +40 -0
  18. data/lib/datadog/appsec/contrib/active_record/integration.rb +1 -1
  19. data/lib/datadog/appsec/event.rb +21 -50
  20. data/lib/datadog/appsec/remote.rb +4 -0
  21. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  22. data/lib/datadog/core/telemetry/metric.rb +5 -5
  23. data/lib/datadog/core/telemetry/request.rb +1 -1
  24. data/lib/datadog/di/probe_notification_builder.rb +1 -1
  25. data/lib/datadog/di/transport/http/diagnostics.rb +0 -1
  26. data/lib/datadog/di/transport/http/input.rb +0 -1
  27. data/lib/datadog/di/transport/http.rb +0 -6
  28. data/lib/datadog/profiling/collectors/info.rb +3 -0
  29. data/lib/datadog/profiling/encoded_profile.rb +11 -0
  30. data/lib/datadog/profiling/exporter.rb +2 -3
  31. data/lib/datadog/profiling/ext.rb +0 -1
  32. data/lib/datadog/profiling/flush.rb +4 -7
  33. data/lib/datadog/profiling/http_transport.rb +10 -59
  34. data/lib/datadog/profiling/stack_recorder.rb +4 -4
  35. data/lib/datadog/profiling.rb +1 -0
  36. data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
  37. data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +17 -0
  38. data/lib/datadog/tracing/contrib/opensearch/ext.rb +9 -0
  39. data/lib/datadog/tracing/contrib/opensearch/patcher.rb +5 -1
  40. data/lib/datadog/tracing/contrib/rack/request_queue.rb +1 -1
  41. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +1 -1
  42. data/lib/datadog/tracing/span_event.rb +1 -1
  43. data/lib/datadog/version.rb +1 -1
  44. metadata +10 -6
@@ -1,6 +1,57 @@
1
1
  [
2
2
  {
3
- "id": "processor-001",
3
+ "id": "http-endpoint-fingerprint",
4
+ "generator": "http_endpoint_fingerprint",
5
+ "conditions": [
6
+ {
7
+ "operator": "exists",
8
+ "parameters": {
9
+ "inputs": [
10
+ {
11
+ "address": "waf.context.event"
12
+ },
13
+ {
14
+ "address": "server.business_logic.users.login.failure"
15
+ },
16
+ {
17
+ "address": "server.business_logic.users.login.success"
18
+ }
19
+ ]
20
+ }
21
+ }
22
+ ],
23
+ "parameters": {
24
+ "mappings": [
25
+ {
26
+ "method": [
27
+ {
28
+ "address": "server.request.method"
29
+ }
30
+ ],
31
+ "uri_raw": [
32
+ {
33
+ "address": "server.request.uri.raw"
34
+ }
35
+ ],
36
+ "body": [
37
+ {
38
+ "address": "server.request.body"
39
+ }
40
+ ],
41
+ "query": [
42
+ {
43
+ "address": "server.request.query"
44
+ }
45
+ ],
46
+ "output": "_dd.appsec.fp.http.endpoint"
47
+ }
48
+ ]
49
+ },
50
+ "evaluate": false,
51
+ "output": true
52
+ },
53
+ {
54
+ "id": "extract-content",
4
55
  "generator": "extract_schema",
5
56
  "conditions": [
6
57
  {
@@ -32,10 +83,10 @@
32
83
  {
33
84
  "inputs": [
34
85
  {
35
- "address": "server.request.headers.no_cookies"
86
+ "address": "server.request.cookies"
36
87
  }
37
88
  ],
38
- "output": "_dd.appsec.s.req.headers"
89
+ "output": "_dd.appsec.s.req.cookies"
39
90
  },
40
91
  {
41
92
  "inputs": [
@@ -56,29 +107,89 @@
56
107
  {
57
108
  "inputs": [
58
109
  {
59
- "address": "server.request.cookies"
110
+ "address": "server.response.body"
60
111
  }
61
112
  ],
62
- "output": "_dd.appsec.s.req.cookies"
113
+ "output": "_dd.appsec.s.res.body"
63
114
  },
64
115
  {
65
116
  "inputs": [
66
117
  {
67
- "address": "server.response.headers.no_cookies"
118
+ "address": "graphql.server.all_resolvers"
68
119
  }
69
120
  ],
70
- "output": "_dd.appsec.s.res.headers"
121
+ "output": "_dd.appsec.s.graphql.all_resolvers"
71
122
  },
72
123
  {
73
124
  "inputs": [
74
125
  {
75
- "address": "server.response.body"
126
+ "address": "graphql.server.resolver"
76
127
  }
77
128
  ],
78
- "output": "_dd.appsec.s.res.body"
129
+ "output": "_dd.appsec.s.graphql.resolver"
130
+ }
131
+ ],
132
+ "scanners": [
133
+ {
134
+ "tags": {
135
+ "category": "payment"
136
+ }
137
+ },
138
+ {
139
+ "tags": {
140
+ "category": "pii"
141
+ }
142
+ }
143
+ ]
144
+ },
145
+ "evaluate": false,
146
+ "output": true
147
+ },
148
+ {
149
+ "id": "extract-headers",
150
+ "generator": "extract_schema",
151
+ "conditions": [
152
+ {
153
+ "operator": "equals",
154
+ "parameters": {
155
+ "inputs": [
156
+ {
157
+ "address": "waf.context.processor",
158
+ "key_path": [
159
+ "extract-schema"
160
+ ]
161
+ }
162
+ ],
163
+ "type": "boolean",
164
+ "value": true
165
+ }
166
+ }
167
+ ],
168
+ "parameters": {
169
+ "mappings": [
170
+ {
171
+ "inputs": [
172
+ {
173
+ "address": "server.request.headers.no_cookies"
174
+ }
175
+ ],
176
+ "output": "_dd.appsec.s.req.headers"
177
+ },
178
+ {
179
+ "inputs": [
180
+ {
181
+ "address": "server.response.headers.no_cookies"
182
+ }
183
+ ],
184
+ "output": "_dd.appsec.s.res.headers"
79
185
  }
80
186
  ],
81
187
  "scanners": [
188
+ {
189
+ "tags": {
190
+ "category": "credentials"
191
+ }
192
+ },
82
193
  {
83
194
  "tags": {
84
195
  "category": "pii"
@@ -88,5 +199,123 @@
88
199
  },
89
200
  "evaluate": false,
90
201
  "output": true
202
+ },
203
+ {
204
+ "id": "http-header-fingerprint",
205
+ "generator": "http_header_fingerprint",
206
+ "conditions": [
207
+ {
208
+ "operator": "exists",
209
+ "parameters": {
210
+ "inputs": [
211
+ {
212
+ "address": "waf.context.event"
213
+ },
214
+ {
215
+ "address": "server.business_logic.users.login.failure"
216
+ },
217
+ {
218
+ "address": "server.business_logic.users.login.success"
219
+ }
220
+ ]
221
+ }
222
+ }
223
+ ],
224
+ "parameters": {
225
+ "mappings": [
226
+ {
227
+ "headers": [
228
+ {
229
+ "address": "server.request.headers.no_cookies"
230
+ }
231
+ ],
232
+ "output": "_dd.appsec.fp.http.header"
233
+ }
234
+ ]
235
+ },
236
+ "evaluate": false,
237
+ "output": true
238
+ },
239
+ {
240
+ "id": "http-network-fingerprint",
241
+ "generator": "http_network_fingerprint",
242
+ "conditions": [
243
+ {
244
+ "operator": "exists",
245
+ "parameters": {
246
+ "inputs": [
247
+ {
248
+ "address": "waf.context.event"
249
+ },
250
+ {
251
+ "address": "server.business_logic.users.login.failure"
252
+ },
253
+ {
254
+ "address": "server.business_logic.users.login.success"
255
+ }
256
+ ]
257
+ }
258
+ }
259
+ ],
260
+ "parameters": {
261
+ "mappings": [
262
+ {
263
+ "headers": [
264
+ {
265
+ "address": "server.request.headers.no_cookies"
266
+ }
267
+ ],
268
+ "output": "_dd.appsec.fp.http.network"
269
+ }
270
+ ]
271
+ },
272
+ "evaluate": false,
273
+ "output": true
274
+ },
275
+ {
276
+ "id": "session-fingerprint",
277
+ "generator": "session_fingerprint",
278
+ "conditions": [
279
+ {
280
+ "operator": "exists",
281
+ "parameters": {
282
+ "inputs": [
283
+ {
284
+ "address": "waf.context.event"
285
+ },
286
+ {
287
+ "address": "server.business_logic.users.login.failure"
288
+ },
289
+ {
290
+ "address": "server.business_logic.users.login.success"
291
+ }
292
+ ]
293
+ }
294
+ }
295
+ ],
296
+ "parameters": {
297
+ "mappings": [
298
+ {
299
+ "cookies": [
300
+ {
301
+ "address": "server.request.cookies"
302
+ }
303
+ ],
304
+ "session_id": [
305
+ {
306
+ "address": "usr.session_id"
307
+ }
308
+ ],
309
+ "user_id": [
310
+ {
311
+ "address": "usr.id"
312
+ }
313
+ ],
314
+ "output": "_dd.appsec.fp.session"
315
+ }
316
+ ]
317
+ },
318
+ "evaluate": false,
319
+ "output": true
91
320
  }
92
- ]
321
+ ]