datadog 2.17.0 → 2.19.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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +90 -1
  3. data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +63 -56
  4. data/ext/datadog_profiling_native_extension/collectors_stack.c +263 -76
  5. data/ext/datadog_profiling_native_extension/collectors_stack.h +20 -3
  6. data/ext/datadog_profiling_native_extension/collectors_thread_context.c +62 -12
  7. data/ext/datadog_profiling_native_extension/collectors_thread_context.h +1 -0
  8. data/ext/datadog_profiling_native_extension/extconf.rb +7 -0
  9. data/ext/datadog_profiling_native_extension/heap_recorder.c +239 -363
  10. data/ext/datadog_profiling_native_extension/heap_recorder.h +4 -6
  11. data/ext/datadog_profiling_native_extension/libdatadog_helpers.c +22 -0
  12. data/ext/datadog_profiling_native_extension/libdatadog_helpers.h +8 -5
  13. data/ext/datadog_profiling_native_extension/private_vm_api_access.c +38 -26
  14. data/ext/datadog_profiling_native_extension/private_vm_api_access.h +6 -4
  15. data/ext/datadog_profiling_native_extension/ruby_helpers.c +1 -13
  16. data/ext/datadog_profiling_native_extension/ruby_helpers.h +3 -11
  17. data/ext/datadog_profiling_native_extension/stack_recorder.c +154 -57
  18. data/ext/libdatadog_api/extconf.rb +2 -2
  19. data/ext/libdatadog_api/library_config.c +54 -12
  20. data/ext/libdatadog_api/library_config.h +6 -0
  21. data/ext/libdatadog_api/process_discovery.c +2 -7
  22. data/ext/libdatadog_extconf_helpers.rb +1 -1
  23. data/lib/datadog/appsec/api_security/lru_cache.rb +9 -2
  24. data/lib/datadog/appsec/api_security/route_extractor.rb +71 -0
  25. data/lib/datadog/appsec/api_security/sampler.rb +59 -0
  26. data/lib/datadog/appsec/api_security.rb +14 -0
  27. data/lib/datadog/appsec/assets/waf_rules/recommended.json +257 -85
  28. data/lib/datadog/appsec/assets/waf_rules/strict.json +10 -78
  29. data/lib/datadog/appsec/component.rb +30 -54
  30. data/lib/datadog/appsec/configuration/settings.rb +60 -2
  31. data/lib/datadog/appsec/context.rb +6 -6
  32. data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +1 -1
  33. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +27 -16
  34. data/lib/datadog/appsec/instrumentation/gateway/argument.rb +1 -1
  35. data/lib/datadog/appsec/processor/rule_loader.rb +5 -6
  36. data/lib/datadog/appsec/remote.rb +15 -55
  37. data/lib/datadog/appsec/security_engine/engine.rb +194 -0
  38. data/lib/datadog/appsec/security_engine/runner.rb +10 -11
  39. data/lib/datadog/appsec.rb +4 -7
  40. data/lib/datadog/core/configuration/agent_settings.rb +52 -0
  41. data/lib/datadog/core/configuration/agent_settings_resolver.rb +1 -43
  42. data/lib/datadog/core/configuration/components.rb +2 -4
  43. data/lib/datadog/core/configuration/option.rb +9 -9
  44. data/lib/datadog/core/configuration/settings.rb +42 -10
  45. data/lib/datadog/core/configuration/stable_config.rb +1 -2
  46. data/lib/datadog/core/crashtracking/tag_builder.rb +4 -22
  47. data/lib/datadog/core/process_discovery/tracer_memfd.rb +15 -0
  48. data/lib/datadog/core/process_discovery.rb +5 -1
  49. data/lib/datadog/core/remote/configuration/repository.rb +12 -0
  50. data/lib/datadog/core/tag_builder.rb +56 -0
  51. data/lib/datadog/core/telemetry/component.rb +8 -4
  52. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +1 -0
  53. data/lib/datadog/core/telemetry/event/app_started.rb +148 -40
  54. data/lib/datadog/core/telemetry/logger.rb +5 -4
  55. data/lib/datadog/core/telemetry/logging.rb +11 -5
  56. data/lib/datadog/core/transport/http/adapters/net.rb +17 -2
  57. data/lib/datadog/core/transport/http/builder.rb +2 -2
  58. data/lib/datadog/core/transport/http/env.rb +8 -0
  59. data/lib/datadog/core/utils.rb +7 -0
  60. data/lib/datadog/di/instrumenter.rb +48 -5
  61. data/lib/datadog/di/probe_notification_builder.rb +37 -42
  62. data/lib/datadog/di/probe_notifier_worker.rb +9 -1
  63. data/lib/datadog/di/serializer.rb +10 -2
  64. data/lib/datadog/di/transport/http/input.rb +10 -0
  65. data/lib/datadog/di/transport/input.rb +10 -2
  66. data/lib/datadog/di.rb +0 -6
  67. data/lib/datadog/kit/appsec/events/v2.rb +195 -0
  68. data/lib/datadog/profiling/collectors/code_provenance.rb +17 -8
  69. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -0
  70. data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -0
  71. data/lib/datadog/profiling/collectors/info.rb +41 -0
  72. data/lib/datadog/profiling/collectors/thread_context.rb +16 -1
  73. data/lib/datadog/profiling/component.rb +8 -9
  74. data/lib/datadog/profiling/exporter.rb +9 -3
  75. data/lib/datadog/profiling/ext.rb +0 -12
  76. data/lib/datadog/profiling/http_transport.rb +2 -2
  77. data/lib/datadog/profiling/profiler.rb +2 -0
  78. data/lib/datadog/profiling/scheduler.rb +2 -1
  79. data/lib/datadog/profiling/sequence_tracker.rb +44 -0
  80. data/lib/datadog/profiling/stack_recorder.rb +5 -5
  81. data/lib/datadog/profiling/tag_builder.rb +7 -37
  82. data/lib/datadog/profiling/tasks/setup.rb +2 -0
  83. data/lib/datadog/profiling.rb +1 -0
  84. data/lib/datadog/single_step_instrument.rb +9 -0
  85. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +15 -0
  86. data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +19 -12
  87. data/lib/datadog/tracing/contrib/action_pack/ext.rb +2 -0
  88. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +7 -1
  89. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +13 -0
  90. data/lib/datadog/tracing/contrib/lograge/patcher.rb +4 -2
  91. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +16 -6
  92. data/lib/datadog/tracing/contrib/rails/patcher.rb +4 -1
  93. data/lib/datadog/tracing/contrib/rails/runner.rb +61 -40
  94. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +1 -0
  95. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -2
  96. data/lib/datadog/tracing/diagnostics/environment_logger.rb +3 -1
  97. data/lib/datadog/tracing/span_event.rb +1 -1
  98. data/lib/datadog/tracing/span_operation.rb +22 -0
  99. data/lib/datadog/tracing/sync_writer.rb +1 -1
  100. data/lib/datadog/tracing/trace_operation.rb +12 -4
  101. data/lib/datadog/tracing/tracer.rb +6 -2
  102. data/lib/datadog/version.rb +1 -1
  103. data/lib/datadog.rb +7 -0
  104. metadata +14 -10
  105. data/lib/datadog/appsec/assets/waf_rules/processors.json +0 -321
  106. data/lib/datadog/appsec/assets/waf_rules/scanners.json +0 -1023
  107. data/lib/datadog/appsec/processor/rule_merger.rb +0 -171
  108. data/lib/datadog/appsec/processor.rb +0 -107
@@ -1,321 +0,0 @@
1
- [
2
- {
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",
55
- "generator": "extract_schema",
56
- "conditions": [
57
- {
58
- "operator": "equals",
59
- "parameters": {
60
- "inputs": [
61
- {
62
- "address": "waf.context.processor",
63
- "key_path": [
64
- "extract-schema"
65
- ]
66
- }
67
- ],
68
- "type": "boolean",
69
- "value": true
70
- }
71
- }
72
- ],
73
- "parameters": {
74
- "mappings": [
75
- {
76
- "inputs": [
77
- {
78
- "address": "server.request.body"
79
- }
80
- ],
81
- "output": "_dd.appsec.s.req.body"
82
- },
83
- {
84
- "inputs": [
85
- {
86
- "address": "server.request.cookies"
87
- }
88
- ],
89
- "output": "_dd.appsec.s.req.cookies"
90
- },
91
- {
92
- "inputs": [
93
- {
94
- "address": "server.request.query"
95
- }
96
- ],
97
- "output": "_dd.appsec.s.req.query"
98
- },
99
- {
100
- "inputs": [
101
- {
102
- "address": "server.request.path_params"
103
- }
104
- ],
105
- "output": "_dd.appsec.s.req.params"
106
- },
107
- {
108
- "inputs": [
109
- {
110
- "address": "server.response.body"
111
- }
112
- ],
113
- "output": "_dd.appsec.s.res.body"
114
- },
115
- {
116
- "inputs": [
117
- {
118
- "address": "graphql.server.all_resolvers"
119
- }
120
- ],
121
- "output": "_dd.appsec.s.graphql.all_resolvers"
122
- },
123
- {
124
- "inputs": [
125
- {
126
- "address": "graphql.server.resolver"
127
- }
128
- ],
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"
185
- }
186
- ],
187
- "scanners": [
188
- {
189
- "tags": {
190
- "category": "credentials"
191
- }
192
- },
193
- {
194
- "tags": {
195
- "category": "pii"
196
- }
197
- }
198
- ]
199
- },
200
- "evaluate": false,
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
320
- }
321
- ]