dd-trace 2.39.0 → 2.41.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.
- package/package.json +3 -3
- package/packages/datadog-instrumentations/src/cucumber.js +5 -2
- package/packages/datadog-instrumentations/src/grpc/client.js +44 -42
- package/packages/datadog-instrumentations/src/grpc/server.js +69 -60
- package/packages/datadog-instrumentations/src/http2/client.js +25 -26
- package/packages/datadog-instrumentations/src/jest.js +3 -1
- package/packages/datadog-instrumentations/src/kafkajs.js +11 -2
- package/packages/datadog-instrumentations/src/mocha.js +5 -3
- package/packages/datadog-instrumentations/src/redis.js +48 -5
- package/packages/datadog-plugin-cypress/src/plugin.js +4 -2
- package/packages/datadog-plugin-grpc/src/client.js +29 -11
- package/packages/datadog-plugin-grpc/src/server.js +22 -6
- package/packages/datadog-plugin-http2/src/client.js +46 -29
- package/packages/datadog-plugin-kafkajs/src/producer.js +6 -1
- package/packages/datadog-plugin-openai/src/services.js +14 -10
- package/packages/datadog-plugin-router/src/index.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/command-injection-analyzer.js +3 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +7 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/ldap-injection-analyzer.js +3 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +19 -15
- package/packages/dd-trace/src/appsec/iast/analyzers/sql-injection-analyzer.js +5 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +2 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +3 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +18 -19
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +3 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +3 -0
- package/packages/dd-trace/src/appsec/iast/iast-log.js +1 -1
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +205 -0
- package/packages/dd-trace/src/appsec/iast/index.js +6 -5
- package/packages/dd-trace/src/appsec/iast/tags.js +2 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/csi-methods.js +6 -6
- package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +3 -3
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +23 -4
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +32 -16
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-telemetry.js +33 -0
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +23 -16
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +76 -37
- package/packages/dd-trace/src/appsec/iast/telemetry/iast-metric.js +101 -0
- package/packages/dd-trace/src/appsec/iast/telemetry/index.js +45 -0
- package/packages/dd-trace/src/appsec/iast/telemetry/{logs.js → log/index.js} +5 -5
- package/packages/dd-trace/src/appsec/iast/telemetry/{log_collector.js → log/log-collector.js} +1 -1
- package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +76 -0
- package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +53 -0
- package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +42 -0
- package/packages/dd-trace/src/config.js +21 -2
- package/packages/dd-trace/src/constants.js +1 -0
- package/packages/dd-trace/src/dogstatsd.js +14 -1
- package/packages/dd-trace/src/metrics.js +2 -2
- package/packages/dd-trace/src/opentracing/tracer.js +1 -0
- package/packages/dd-trace/src/plugins/ci_plugin.js +6 -1
- package/packages/dd-trace/src/plugins/outbound.js +29 -12
- package/packages/dd-trace/src/plugins/plugin.js +28 -0
- package/packages/dd-trace/src/plugins/tracing.js +33 -16
- package/packages/dd-trace/src/plugins/util/ci.js +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +55 -11
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +1 -22
- package/packages/dd-trace/src/profiling/config.js +0 -3
- package/packages/dd-trace/src/profiling/index.js +0 -2
- package/packages/dd-trace/src/profiling/profilers/wall.js +23 -11
- package/packages/diagnostics_channel/src/index.js +64 -0
- package/packages/dd-trace/src/profiling/profilers/cpu.js +0 -126
- /package/packages/dd-trace/src/appsec/iast/taint-tracking/{origin-types.js → source-types.js} +0 -0
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { storage } = require('../../../../datadog-core')
|
|
4
|
-
|
|
5
|
-
const dc = require('../../../../diagnostics_channel')
|
|
6
|
-
|
|
7
|
-
const beforeCh = dc.channel('dd-trace:storage:before')
|
|
8
|
-
const afterCh = dc.channel('dd-trace:storage:after')
|
|
9
|
-
|
|
10
|
-
function getActiveSpan () {
|
|
11
|
-
const store = storage.getStore()
|
|
12
|
-
if (!store) return
|
|
13
|
-
return store.span
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function getStartedSpans (activeSpan) {
|
|
17
|
-
const context = activeSpan.context()
|
|
18
|
-
if (!context) return
|
|
19
|
-
return context._trace.started
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function getSpanContextTags (span) {
|
|
23
|
-
return span.context()._tags
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function isWebServerSpan (tags) {
|
|
27
|
-
return tags['span.type'] === 'web'
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function endpointNameFromTags (tags) {
|
|
31
|
-
return tags['resource.name'] || [
|
|
32
|
-
tags['http.method'],
|
|
33
|
-
tags['http.route']
|
|
34
|
-
].filter(v => v).join(' ')
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
class NativeCpuProfiler {
|
|
38
|
-
constructor (options = {}) {
|
|
39
|
-
this.type = 'cpu'
|
|
40
|
-
this._frequency = options.frequency || 99
|
|
41
|
-
this._mapper = undefined
|
|
42
|
-
this._pprof = undefined
|
|
43
|
-
this._started = false
|
|
44
|
-
this._cpuProfiler = undefined
|
|
45
|
-
this._endpointCollection = options.endpointCollection
|
|
46
|
-
|
|
47
|
-
// Bind to this so the same value can be used to unsubscribe later
|
|
48
|
-
this._enter = this._enter.bind(this)
|
|
49
|
-
this._exit = this._exit.bind(this)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
_enter () {
|
|
53
|
-
if (!this._cpuProfiler) return
|
|
54
|
-
|
|
55
|
-
const active = getActiveSpan()
|
|
56
|
-
if (!active) return
|
|
57
|
-
|
|
58
|
-
const activeCtx = active.context()
|
|
59
|
-
if (!activeCtx) return
|
|
60
|
-
|
|
61
|
-
const spans = getStartedSpans(active)
|
|
62
|
-
if (!spans || !spans.length) return
|
|
63
|
-
|
|
64
|
-
const firstCtx = spans[0].context()
|
|
65
|
-
if (!firstCtx) return
|
|
66
|
-
|
|
67
|
-
const labels = {
|
|
68
|
-
'local root span id': firstCtx.toSpanId(),
|
|
69
|
-
'span id': activeCtx.toSpanId()
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (this._endpointCollection) {
|
|
73
|
-
const webServerTags = spans
|
|
74
|
-
.map(getSpanContextTags)
|
|
75
|
-
.filter(isWebServerSpan)[0]
|
|
76
|
-
|
|
77
|
-
if (webServerTags) {
|
|
78
|
-
labels['trace endpoint'] = endpointNameFromTags(webServerTags)
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
this._cpuProfiler.labels = labels
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
_exit () {
|
|
86
|
-
if (!this._cpuProfiler) return
|
|
87
|
-
this._cpuProfiler.labels = {}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
start ({ mapper } = {}) {
|
|
91
|
-
if (this._started) return
|
|
92
|
-
this._started = true
|
|
93
|
-
|
|
94
|
-
this._mapper = mapper
|
|
95
|
-
if (!this._pprof) {
|
|
96
|
-
this._pprof = require('@datadog/pprof')
|
|
97
|
-
this._cpuProfiler = new this._pprof.CpuProfiler()
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
this._cpuProfiler.start(this._frequency)
|
|
101
|
-
|
|
102
|
-
this._enter()
|
|
103
|
-
beforeCh.subscribe(this._enter)
|
|
104
|
-
afterCh.subscribe(this._exit)
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
profile () {
|
|
108
|
-
if (!this._started) return
|
|
109
|
-
return this._cpuProfiler.profile()
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
encode (profile) {
|
|
113
|
-
return this._pprof.encode(profile)
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
stop () {
|
|
117
|
-
if (!this._started) return
|
|
118
|
-
this._started = false
|
|
119
|
-
|
|
120
|
-
this._cpuProfiler.stop()
|
|
121
|
-
beforeCh.unsubscribe(this._enter)
|
|
122
|
-
afterCh.unsubscribe(this._exit)
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
module.exports = NativeCpuProfiler
|
/package/packages/dd-trace/src/appsec/iast/taint-tracking/{origin-types.js → source-types.js}
RENAMED
|
File without changes
|