datadog 2.9.0 → 2.10.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +27 -1
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +2 -2
- data/ext/datadog_profiling_native_extension/collectors_stack.h +2 -2
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +2 -5
- data/ext/datadog_profiling_native_extension/heap_recorder.c +50 -92
- data/ext/datadog_profiling_native_extension/heap_recorder.h +1 -1
- data/ext/datadog_profiling_native_extension/stack_recorder.c +9 -22
- data/ext/datadog_profiling_native_extension/stack_recorder.h +1 -1
- data/lib/datadog/appsec/actions_handler.rb +27 -0
- data/lib/datadog/appsec/component.rb +14 -8
- data/lib/datadog/appsec/configuration/settings.rb +9 -0
- data/lib/datadog/appsec/context.rb +28 -8
- data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +6 -2
- data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +1 -7
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +4 -5
- data/lib/datadog/appsec/contrib/graphql/reactive/multiplex.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +15 -12
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +3 -3
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +11 -22
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +5 -4
- data/lib/datadog/appsec/contrib/rails/patcher.rb +3 -13
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +10 -8
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +3 -26
- data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +1 -1
- data/lib/datadog/appsec/ext.rb +6 -1
- data/lib/datadog/appsec/metrics/collector.rb +38 -0
- data/lib/datadog/appsec/metrics/exporter.rb +35 -0
- data/lib/datadog/appsec/metrics/telemetry.rb +23 -0
- data/lib/datadog/appsec/metrics.rb +13 -0
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +5 -4
- data/lib/datadog/appsec/monitor/reactive/set_user.rb +1 -1
- data/lib/datadog/appsec/processor.rb +4 -3
- data/lib/datadog/appsec/response.rb +18 -80
- data/lib/datadog/appsec/security_engine/result.rb +67 -0
- data/lib/datadog/appsec/security_engine/runner.rb +88 -0
- data/lib/datadog/appsec/security_engine.rb +9 -0
- data/lib/datadog/appsec.rb +14 -5
- data/lib/datadog/di/component.rb +2 -0
- data/lib/datadog/di/probe_notification_builder.rb +6 -0
- data/lib/datadog/di/redactor.rb +0 -1
- data/lib/datadog/di/remote.rb +26 -5
- data/lib/datadog/tracing/contrib/aws/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/extensions.rb +15 -3
- data/lib/datadog/tracing/contrib/http/integration.rb +3 -0
- data/lib/datadog/version.rb +1 -1
- metadata +32 -18
- data/lib/datadog/appsec/contrib/sinatra/ext.rb +0 -14
- data/lib/datadog/appsec/processor/context.rb +0 -107
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datadog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -30,20 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '3.
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 3.3.7
|
33
|
+
version: '3.4'
|
37
34
|
type: :runtime
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
38
|
- - "~>"
|
42
39
|
- !ruby/object:Gem::Version
|
43
|
-
version: '3.
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 3.3.7
|
40
|
+
version: '3.4'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: libddwaf
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,6 +66,20 @@ dependencies:
|
|
72
66
|
- - "~>"
|
73
67
|
- !ruby/object:Gem::Version
|
74
68
|
version: 14.3.1.1.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: logger
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
75
83
|
description: |
|
76
84
|
datadog is Datadog's client library for Ruby. It includes a suite of tools
|
77
85
|
which provide visibility into the performance and security of Ruby applications,
|
@@ -146,6 +154,7 @@ files:
|
|
146
154
|
- ext/libdatadog_extconf_helpers.rb
|
147
155
|
- lib/datadog.rb
|
148
156
|
- lib/datadog/appsec.rb
|
157
|
+
- lib/datadog/appsec/actions_handler.rb
|
149
158
|
- lib/datadog/appsec/assets.rb
|
150
159
|
- lib/datadog/appsec/assets/blocked.html
|
151
160
|
- lib/datadog/appsec/assets/blocked.json
|
@@ -201,7 +210,6 @@ files:
|
|
201
210
|
- lib/datadog/appsec/contrib/rails/reactive/action.rb
|
202
211
|
- lib/datadog/appsec/contrib/rails/request.rb
|
203
212
|
- lib/datadog/appsec/contrib/rails/request_middleware.rb
|
204
|
-
- lib/datadog/appsec/contrib/sinatra/ext.rb
|
205
213
|
- lib/datadog/appsec/contrib/sinatra/framework.rb
|
206
214
|
- lib/datadog/appsec/contrib/sinatra/gateway/request.rb
|
207
215
|
- lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb
|
@@ -216,11 +224,14 @@ files:
|
|
216
224
|
- lib/datadog/appsec/instrumentation.rb
|
217
225
|
- lib/datadog/appsec/instrumentation/gateway.rb
|
218
226
|
- lib/datadog/appsec/instrumentation/gateway/argument.rb
|
227
|
+
- lib/datadog/appsec/metrics.rb
|
228
|
+
- lib/datadog/appsec/metrics/collector.rb
|
229
|
+
- lib/datadog/appsec/metrics/exporter.rb
|
230
|
+
- lib/datadog/appsec/metrics/telemetry.rb
|
219
231
|
- lib/datadog/appsec/monitor.rb
|
220
232
|
- lib/datadog/appsec/monitor/gateway/watcher.rb
|
221
233
|
- lib/datadog/appsec/monitor/reactive/set_user.rb
|
222
234
|
- lib/datadog/appsec/processor.rb
|
223
|
-
- lib/datadog/appsec/processor/context.rb
|
224
235
|
- lib/datadog/appsec/processor/rule_loader.rb
|
225
236
|
- lib/datadog/appsec/processor/rule_merger.rb
|
226
237
|
- lib/datadog/appsec/rate_limiter.rb
|
@@ -230,6 +241,9 @@ files:
|
|
230
241
|
- lib/datadog/appsec/remote.rb
|
231
242
|
- lib/datadog/appsec/response.rb
|
232
243
|
- lib/datadog/appsec/sample_rate.rb
|
244
|
+
- lib/datadog/appsec/security_engine.rb
|
245
|
+
- lib/datadog/appsec/security_engine/result.rb
|
246
|
+
- lib/datadog/appsec/security_engine/runner.rb
|
233
247
|
- lib/datadog/appsec/utils.rb
|
234
248
|
- lib/datadog/appsec/utils/http.rb
|
235
249
|
- lib/datadog/appsec/utils/http/media_range.rb
|
@@ -911,9 +925,9 @@ licenses:
|
|
911
925
|
- Apache-2.0
|
912
926
|
metadata:
|
913
927
|
allowed_push_host: https://rubygems.org
|
914
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.
|
915
|
-
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.
|
916
|
-
post_install_message:
|
928
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.10.0/CHANGELOG.md
|
929
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.10.0
|
930
|
+
post_install_message:
|
917
931
|
rdoc_options: []
|
918
932
|
require_paths:
|
919
933
|
- lib
|
@@ -931,8 +945,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
931
945
|
- !ruby/object:Gem::Version
|
932
946
|
version: 2.0.0
|
933
947
|
requirements: []
|
934
|
-
rubygems_version: 3.5.
|
935
|
-
signing_key:
|
948
|
+
rubygems_version: 3.5.22
|
949
|
+
signing_key:
|
936
950
|
specification_version: 4
|
937
951
|
summary: Datadog tracing code for your Ruby applications
|
938
952
|
test_files: []
|
@@ -1,107 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Datadog
|
4
|
-
module AppSec
|
5
|
-
class Processor
|
6
|
-
# Context manages a sequence of runs
|
7
|
-
class Context
|
8
|
-
LIBDDWAF_SUCCESSFUL_EXECUTION_CODES = [:ok, :match].freeze
|
9
|
-
|
10
|
-
attr_reader :time_ns, :time_ext_ns, :timeouts, :events
|
11
|
-
|
12
|
-
def initialize(handle, telemetry:)
|
13
|
-
@context = WAF::Context.new(handle)
|
14
|
-
@telemetry = telemetry
|
15
|
-
|
16
|
-
@time_ns = 0.0
|
17
|
-
@time_ext_ns = 0.0
|
18
|
-
@timeouts = 0
|
19
|
-
@events = []
|
20
|
-
@run_mutex = Mutex.new
|
21
|
-
|
22
|
-
@libddwaf_debug_tag = "libddwaf:#{WAF::VERSION::STRING} method:ddwaf_run"
|
23
|
-
end
|
24
|
-
|
25
|
-
def run(persistent_data, ephemeral_data, timeout = WAF::LibDDWAF::DDWAF_RUN_TIMEOUT)
|
26
|
-
@run_mutex.lock
|
27
|
-
|
28
|
-
start_ns = Core::Utils::Time.get_time(:nanosecond)
|
29
|
-
|
30
|
-
persistent_data.reject! do |_, v|
|
31
|
-
next false if v.is_a?(TrueClass) || v.is_a?(FalseClass)
|
32
|
-
|
33
|
-
v.nil? ? true : v.empty?
|
34
|
-
end
|
35
|
-
|
36
|
-
ephemeral_data.reject! do |_, v|
|
37
|
-
next false if v.is_a?(TrueClass) || v.is_a?(FalseClass)
|
38
|
-
|
39
|
-
v.nil? ? true : v.empty?
|
40
|
-
end
|
41
|
-
|
42
|
-
_code, result = try_run(persistent_data, ephemeral_data, timeout)
|
43
|
-
|
44
|
-
stop_ns = Core::Utils::Time.get_time(:nanosecond)
|
45
|
-
|
46
|
-
# these updates are not thread safe and should be protected
|
47
|
-
@time_ns += result.total_runtime
|
48
|
-
@time_ext_ns += (stop_ns - start_ns)
|
49
|
-
@timeouts += 1 if result.timeout
|
50
|
-
|
51
|
-
report_execution(result)
|
52
|
-
result
|
53
|
-
ensure
|
54
|
-
@run_mutex.unlock
|
55
|
-
end
|
56
|
-
|
57
|
-
def extract_schema
|
58
|
-
return unless extract_schema?
|
59
|
-
|
60
|
-
input = {
|
61
|
-
'waf.context.processor' => {
|
62
|
-
'extract-schema' => true
|
63
|
-
}
|
64
|
-
}
|
65
|
-
|
66
|
-
_code, result = try_run(input, {}, WAF::LibDDWAF::DDWAF_RUN_TIMEOUT)
|
67
|
-
|
68
|
-
report_execution(result)
|
69
|
-
result
|
70
|
-
end
|
71
|
-
|
72
|
-
def finalize
|
73
|
-
@context.finalize
|
74
|
-
end
|
75
|
-
|
76
|
-
private
|
77
|
-
|
78
|
-
def try_run(persistent_data, ephemeral_data, timeout)
|
79
|
-
@context.run(persistent_data, ephemeral_data, timeout)
|
80
|
-
rescue WAF::LibDDWAF::Error => e
|
81
|
-
Datadog.logger.debug { "#{@libddwaf_debug_tag} execution error: #{e} backtrace: #{e.backtrace&.first(3)}" }
|
82
|
-
@telemetry.report(e, description: 'libddwaf-rb internal low-level error')
|
83
|
-
|
84
|
-
[:err_internal, WAF::Result.new(:err_internal, [], 0.0, false, [], [])]
|
85
|
-
end
|
86
|
-
|
87
|
-
def report_execution(result)
|
88
|
-
Datadog.logger.debug { "#{@libddwaf_debug_tag} execution timed out: #{result.inspect}" } if result.timeout
|
89
|
-
|
90
|
-
if LIBDDWAF_SUCCESSFUL_EXECUTION_CODES.include?(result.status)
|
91
|
-
Datadog.logger.debug { "#{@libddwaf_debug_tag} execution result: #{result.inspect}" }
|
92
|
-
else
|
93
|
-
message = "#{@libddwaf_debug_tag} execution error: #{result.status.inspect}"
|
94
|
-
|
95
|
-
Datadog.logger.debug { message }
|
96
|
-
@telemetry.error(message)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def extract_schema?
|
101
|
-
Datadog.configuration.appsec.api_security.enabled &&
|
102
|
-
Datadog.configuration.appsec.api_security.sample_rate.sample?
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|