@contrast/agent-bundle 5.40.0 → 5.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/node_modules/@contrast/agent/package.json +11 -11
- package/node_modules/@contrast/agent-swc-plugin/index.js +9 -3
- package/node_modules/@contrast/agent-swc-plugin/methods.js +15 -1
- package/node_modules/@contrast/agent-swc-plugin/package.json +5 -8
- package/node_modules/@contrast/agent-swc-plugin/rewriter.wasm +0 -0
- package/node_modules/@contrast/agentify/lib/index.js +2 -2
- package/node_modules/@contrast/agentify/package.json +15 -14
- package/node_modules/@contrast/architecture-components/package.json +5 -5
- package/node_modules/@contrast/assess/lib/dataflow/propagation/install/util-format.js +44 -21
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/body-parser.js +1 -1
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-bodyparsers.js +3 -1
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/qs6.js +5 -5
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/querystring.js +2 -1
- package/node_modules/@contrast/assess/lib/index.d.ts +0 -1
- package/node_modules/@contrast/assess/lib/make-source-context.js +7 -37
- package/node_modules/@contrast/assess/lib/sampler/common.js +7 -11
- package/node_modules/@contrast/assess/package.json +12 -11
- package/node_modules/@contrast/common/lib/types.d.ts +7 -1
- package/node_modules/@contrast/common/package.json +1 -1
- package/node_modules/@contrast/config/lib/common.js +1 -1
- package/node_modules/@contrast/config/lib/config.js +49 -27
- package/node_modules/@contrast/config/lib/index.d.ts +2 -2
- package/node_modules/@contrast/config/lib/options.js +4 -4
- package/node_modules/@contrast/config/package.json +4 -3
- package/node_modules/@contrast/core/lib/sensitive-data-masking/protect-listener.js +15 -15
- package/node_modules/@contrast/core/package.json +6 -6
- package/node_modules/@contrast/deadzones/package.json +5 -5
- package/node_modules/@contrast/dep-hooks/package.json +3 -3
- package/node_modules/@contrast/esm-hooks/package.json +6 -6
- package/node_modules/@contrast/instrumentation/lib/index.js +0 -1
- package/node_modules/@contrast/instrumentation/package.json +5 -5
- package/node_modules/@contrast/library-analysis/lib/install/library-reporting/dep.json +298 -148
- package/node_modules/@contrast/library-analysis/package.json +4 -4
- package/node_modules/@contrast/logger/lib/serializers.js +2 -2
- package/node_modules/@contrast/logger/package.json +3 -3
- package/node_modules/@contrast/metrics/package.json +6 -6
- package/node_modules/@contrast/patcher/package.json +2 -2
- package/node_modules/@contrast/protect/lib/get-source-context.js +3 -1
- package/node_modules/@contrast/protect/lib/index.js +6 -1
- package/node_modules/@contrast/protect/lib/input-analysis/handlers.js +7 -9
- package/node_modules/@contrast/protect/lib/input-analysis/install/http.js +18 -19
- package/node_modules/@contrast/protect/lib/input-analysis/install/qs6.js +18 -17
- package/node_modules/@contrast/protect/lib/input-analysis/install/universal-cookie4.js +2 -3
- package/node_modules/@contrast/protect/lib/make-source-context.js +22 -66
- package/node_modules/@contrast/protect/lib/semantic-analysis/handlers.js +73 -72
- package/node_modules/@contrast/protect/package.json +11 -11
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/index.js +7 -7
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.d.ts +3 -3
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.js +24 -21
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.js +1 -1
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.d.ts +1 -2
- package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.js +8 -2
- package/node_modules/@contrast/reporter/lib/reporters/security-logger/index.d.ts +2 -2
- package/node_modules/@contrast/reporter/lib/reporters/security-logger/index.js +22 -20
- package/node_modules/@contrast/reporter/package.json +7 -7
- package/node_modules/@contrast/rewriter/lib/index.js +2 -2
- package/node_modules/@contrast/rewriter/package.json +6 -6
- package/node_modules/@contrast/route-coverage/lib/index.js +1 -9
- package/node_modules/@contrast/route-coverage/lib/install/express/express5.js +17 -19
- package/node_modules/@contrast/route-coverage/package.json +8 -8
- package/node_modules/@contrast/scopes/package.json +5 -5
- package/node_modules/@contrast/sec-obs/lib/traces/http.js +2 -2
- package/node_modules/@contrast/sec-obs/lib/traces/http.test.js +17 -0
- package/node_modules/@contrast/sec-obs/lib/traces/outbound-service-call.js +2 -2
- package/node_modules/@contrast/sec-obs/lib/traces/outbound-service-call.test.js +17 -0
- package/node_modules/@contrast/sec-obs/package.json +9 -9
- package/node_modules/@contrast/sources/lib/index.js +109 -0
- package/node_modules/@contrast/sources/lib/index.test.js +120 -0
- package/node_modules/@contrast/{route-coverage/lib/normalized-url-mapper.js → sources/lib/normalized-uri-mapper.js} +10 -3
- package/node_modules/@contrast/sources/lib/normalized-uri-mapper.test.js +59 -0
- package/node_modules/@contrast/{sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/constants.js → sources/lib/req-data.js} +0 -6
- package/node_modules/@contrast/sources/lib/source-info.js +183 -0
- package/node_modules/@contrast/sources/lib/source-info.test.js +68 -0
- package/node_modules/@contrast/sources/package.json +16 -0
- package/node_modules/@contrast/telemetry/package.json +6 -6
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts +2831 -77
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js +2831 -77
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts +415 -98
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js +415 -98
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts +106 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js +106 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts +2831 -77
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js +2831 -77
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts +415 -98
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js +415 -98
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts +106 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js +106 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts +2831 -77
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js +2858 -103
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts +415 -98
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js +420 -102
- package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts +106 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js +106 -0
- package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map +1 -1
- package/node_modules/@opentelemetry/semantic-conventions/package.json +3 -3
- package/node_modules/@types/node/README.md +2 -2
- package/node_modules/@types/node/fs.d.ts +13 -1
- package/node_modules/@types/node/http.d.ts +4 -19
- package/node_modules/@types/node/inspector.d.ts +53 -0
- package/node_modules/@types/node/package.json +2 -82
- package/node_modules/axios/CHANGELOG.md +17 -0
- package/node_modules/axios/README.md +1 -4
- package/node_modules/axios/dist/axios.js +39 -5
- package/node_modules/axios/dist/axios.js.map +1 -1
- package/node_modules/axios/dist/axios.min.js +2 -2
- package/node_modules/axios/dist/axios.min.js.map +1 -1
- package/node_modules/axios/dist/browser/axios.cjs +46 -9
- package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
- package/node_modules/axios/dist/esm/axios.js +46 -9
- package/node_modules/axios/dist/esm/axios.js.map +1 -1
- package/node_modules/axios/dist/esm/axios.min.js +2 -2
- package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
- package/node_modules/axios/dist/node/axios.cjs +46 -9
- package/node_modules/axios/dist/node/axios.cjs.map +1 -1
- package/node_modules/axios/index.d.cts +13 -2
- package/node_modules/axios/lib/core/Axios.js +2 -2
- package/node_modules/axios/lib/core/mergeConfig.js +1 -1
- package/node_modules/axios/lib/env/data.js +1 -1
- package/node_modules/axios/lib/helpers/throttle.js +1 -1
- package/node_modules/axios/lib/helpers/toURLEncodedForm.js +4 -3
- package/node_modules/axios/lib/utils.js +36 -0
- package/node_modules/axios/package.json +5 -5
- package/node_modules/deepmerge/.editorconfig +7 -0
- package/node_modules/deepmerge/.eslintcache +1 -0
- package/node_modules/deepmerge/changelog.md +167 -0
- package/node_modules/deepmerge/dist/cjs.js +133 -0
- package/node_modules/deepmerge/dist/umd.js +139 -0
- package/node_modules/deepmerge/index.d.ts +20 -0
- package/node_modules/deepmerge/index.js +106 -0
- package/node_modules/deepmerge/license.txt +21 -0
- package/node_modules/deepmerge/package.json +42 -0
- package/node_modules/deepmerge/readme.md +264 -0
- package/node_modules/deepmerge/rollup.config.js +22 -0
- package/node_modules/follow-redirects/package.json +1 -1
- package/node_modules/form-data/CHANGELOG.md +601 -0
- package/node_modules/form-data/{Readme.md → README.md} +4 -4
- package/node_modules/form-data/lib/form_data.js +2 -6
- package/node_modules/form-data/package.json +22 -6
- package/node_modules/nan/.github/workflows/ci.yml +8 -10
- package/node_modules/nan/.pre-commit-config.yaml +8 -0
- package/node_modules/nan/CHANGELOG.md +5 -1
- package/node_modules/nan/README.md +4 -4
- package/node_modules/nan/nan.h +16 -12
- package/node_modules/nan/nan_callbacks.h +13 -0
- package/node_modules/nan/nan_callbacks_12_inl.h +16 -2
- package/node_modules/nan/nan_callbacks_pre_12_inl.h +6 -2
- package/node_modules/nan/nan_maybe_43_inl.h +1 -1
- package/node_modules/nan/nan_maybe_pre_43_inl.h +1 -1
- package/node_modules/nan/nan_scriptorigin.h +11 -9
- package/node_modules/nan/nan_typedarray_contents.h +1 -1
- package/node_modules/nan/package.json +2 -2
- package/package.json +2 -2
- package/node_modules/@contrast/agentify/lib/sources.js +0 -95
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/LICENSE +0 -12
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/constants.d.ts +0 -385
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/constants.js +0 -270
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/index.d.ts +0 -40
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/index.js +0 -228
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/primordials.d.ts +0 -65
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/primordials.js +0 -66
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/types.d.ts +0 -383
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/types.js +0 -30
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/package.json +0 -23
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/LICENSE +0 -12
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/README.md +0 -44
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/common.js +0 -131
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/config.js +0 -290
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/index.d.ts +0 -328
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/index.js +0 -29
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/options.js +0 -836
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/validators.js +0 -23
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/package.json +0 -27
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/LICENSE +0 -12
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/README.md +0 -98
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/agent-info.js +0 -36
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/app-info.js +0 -233
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/build-id.js +0 -51
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/capture-stacktrace.js +0 -256
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/contrast-methods.js +0 -155
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/index.d.ts +0 -52
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/ioc/core.js +0 -95
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/is-agent-path.js +0 -37
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/messages.js +0 -28
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/index.js +0 -63
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/protect-listener.js +0 -111
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/server-settings-listener.js +0 -44
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/cloud-provider-metadata.js +0 -146
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/index.js +0 -225
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/linux-os-info.js +0 -137
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/utils.js +0 -35
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/package.json +0 -33
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/LICENSE +0 -12
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/README.md +0 -94
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-handler-registry.d.ts +0 -121
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-handler-registry.js +0 -206
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.d.ts +0 -72
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.js +0 -88
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/handler-invoker.d.ts +0 -46
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/handler-invoker.js +0 -106
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/helpers.d.ts +0 -28
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/helpers.js +0 -66
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/index.d.ts +0 -115
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/index.js +0 -208
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/package-finder.d.ts +0 -43
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/package-finder.js +0 -79
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/package.json +0 -29
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/LICENSE +0 -12
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/README.md +0 -270
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/index.d.ts +0 -16
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/index.js +0 -132
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/serializers.d.ts +0 -33
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/serializers.js +0 -75
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/utils.d.ts +0 -15
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/utils.js +0 -34
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/package.json +0 -28
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/LICENSE +0 -12
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/README.md +0 -51
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/lib/index.d.ts +0 -101
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/lib/index.js +0 -544
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/package.json +0 -25
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/LICENSE +0 -12
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/README.md +0 -6
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/cache.js +0 -318
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/index.js +0 -216
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/rewrite-is-deadzoned.js +0 -143
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/package.json +0 -30
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/LICENSE +0 -12
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/constants.js +0 -26
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/index.d.ts +0 -46
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/index.js +0 -70
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/bluebird.js +0 -128
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/index.js +0 -34
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb-core.js +0 -83
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb3.js +0 -89
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb4.js +0 -80
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb6.js +0 -46
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mysql.js +0 -151
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/redis.js +0 -79
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/utils.js +0 -35
- package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/package.json +0 -28
- package/node_modules/form-data/README.md.bak +0 -355
|
@@ -12,13 +12,14 @@
|
|
|
12
12
|
* engineered, modified, repackaged, sold, redistributed or otherwise used in a
|
|
13
13
|
* way not consistent with the End User License Agreement.
|
|
14
14
|
*/
|
|
15
|
-
|
|
15
|
+
// @ts-check
|
|
16
16
|
'use strict';
|
|
17
17
|
|
|
18
18
|
const process = require('process');
|
|
19
19
|
const path = require('path');
|
|
20
20
|
const fs = require('fs');
|
|
21
21
|
const os = require('os');
|
|
22
|
+
const merge = require('deepmerge');
|
|
22
23
|
const yaml = require('yaml');
|
|
23
24
|
const { Event, get, set, primordials: { ArrayPrototypeJoin, StringPrototypeToUpperCase, JSONParse } } = require('@contrast/common');
|
|
24
25
|
const options = require('./options');
|
|
@@ -42,12 +43,14 @@ const OS_CONFIG_DIR = os.platform() === 'win32'
|
|
|
42
43
|
const REDACTED_KEYS = ['api.api_key', 'api.service_key', 'api.token'];
|
|
43
44
|
const OVERRIDABLE_SOURCES = [DEFAULT_VALUE, CONTRAST_UI];
|
|
44
45
|
|
|
46
|
+
// Overwrites the existing array values completely rather than concatenating them.
|
|
47
|
+
const arrayMerge = (target, source, options) => source;
|
|
45
48
|
const isValid = (opt) => opt !== undefined && opt !== null && opt !== '';
|
|
46
49
|
|
|
47
50
|
module.exports = class Config {
|
|
48
51
|
constructor(core) {
|
|
49
52
|
// internals
|
|
50
|
-
this.
|
|
53
|
+
this._filepaths = [];
|
|
51
54
|
this._errors = [];
|
|
52
55
|
this._effectiveMap = new Map();
|
|
53
56
|
this._status = '';
|
|
@@ -74,6 +77,7 @@ module.exports = class Config {
|
|
|
74
77
|
disabled_rules: ''
|
|
75
78
|
};
|
|
76
79
|
this.server = {};
|
|
80
|
+
this.preinstrument = false;
|
|
77
81
|
|
|
78
82
|
// initialize
|
|
79
83
|
this._build();
|
|
@@ -138,53 +142,65 @@ module.exports = class Config {
|
|
|
138
142
|
}
|
|
139
143
|
|
|
140
144
|
/**
|
|
141
|
-
* Returns the locations to search for configuration files
|
|
142
|
-
*
|
|
145
|
+
* Returns the locations to search for configuration files as an array of
|
|
146
|
+
* arrays where each inner array contains a set of files to be merged in order of precedence.
|
|
147
|
+
* Being a function allows us to stub these locations within tests.
|
|
143
148
|
*/
|
|
144
149
|
_configDirs() {
|
|
145
|
-
return [
|
|
146
|
-
process.cwd()
|
|
150
|
+
return [[
|
|
151
|
+
process.cwd()
|
|
152
|
+
], [
|
|
147
153
|
path.resolve(OS_CONFIG_DIR, 'node'),
|
|
148
154
|
OS_CONFIG_DIR,
|
|
155
|
+
], [
|
|
149
156
|
path.resolve(HOME_CONFIG_DIR, 'node'),
|
|
150
157
|
HOME_CONFIG_DIR,
|
|
151
|
-
];
|
|
158
|
+
]];
|
|
152
159
|
}
|
|
153
160
|
|
|
154
161
|
_initFile() {
|
|
155
162
|
let fileConfig = {};
|
|
156
163
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
164
|
+
if (process.env[CONTRAST_CONFIG_PATH]) {
|
|
165
|
+
// deliberately ignore /dev/null (linux) and \\.\\nul (windows)
|
|
166
|
+
if (process.env[CONTRAST_CONFIG_PATH] === os.devNull) return fileConfig;
|
|
167
|
+
|
|
168
|
+
this._filepaths = [process.env[CONTRAST_CONFIG_PATH]];
|
|
169
|
+
} else {
|
|
170
|
+
for (const dirs of this._configDirs()) {
|
|
171
|
+
for (const dir of dirs) {
|
|
172
|
+
const currentPath = path.resolve(dir, 'contrast_security.yaml');
|
|
173
|
+
if (fs.existsSync(currentPath)) {
|
|
174
|
+
this._filepaths.push(currentPath);
|
|
175
|
+
}
|
|
165
176
|
}
|
|
177
|
+
if (this._filepaths.length > 0) break;
|
|
166
178
|
}
|
|
167
179
|
}
|
|
168
180
|
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
// deliberately ignore /dev/null (linux) and \\.\\nul (windows)
|
|
172
|
-
if (_filepath && _filepath !== os.devNull) {
|
|
181
|
+
for (const filepath of this._filepaths) {
|
|
173
182
|
let fileContents;
|
|
174
183
|
|
|
175
184
|
try {
|
|
176
|
-
fileContents = fs.readFileSync(
|
|
185
|
+
fileContents = fs.readFileSync(filepath, 'utf-8');
|
|
177
186
|
} catch (e) {
|
|
178
|
-
const err = new Error(`Unable to read Contrast configuration file: '${
|
|
187
|
+
const err = new Error(`Unable to read Contrast configuration file: '${filepath}'`);
|
|
179
188
|
err.cause = e;
|
|
180
189
|
this._errors.push(err);
|
|
181
190
|
}
|
|
182
191
|
|
|
183
192
|
if (fileContents) {
|
|
184
193
|
try {
|
|
185
|
-
|
|
194
|
+
const yamlConfig = yaml.parse(fileContents, { prettyErrors: true });
|
|
195
|
+
|
|
196
|
+
if (yamlConfig.root) {
|
|
197
|
+
this._filepaths = [filepath];
|
|
198
|
+
return yamlConfig;
|
|
199
|
+
} else {
|
|
200
|
+
fileConfig = merge(yamlConfig, fileConfig, { arrayMerge });
|
|
201
|
+
}
|
|
186
202
|
} catch (e) {
|
|
187
|
-
const err = new Error(`Contrast configuration file is malformed: '${
|
|
203
|
+
const err = new Error(`Contrast configuration file is malformed: '${filepath}'`);
|
|
188
204
|
this._errors.push(err);
|
|
189
205
|
err.cause = e;
|
|
190
206
|
}
|
|
@@ -229,7 +245,11 @@ module.exports = class Config {
|
|
|
229
245
|
}
|
|
230
246
|
|
|
231
247
|
// this is not a common config value
|
|
232
|
-
this.setValue(
|
|
248
|
+
this.setValue(
|
|
249
|
+
'preinstrument',
|
|
250
|
+
!!process.env.CONTRAST_PREINSTRUMENT,
|
|
251
|
+
process.env.CONTRAST_PREINSTRUMENT ? ConfigSource.ENVIRONMENT_VARIABLE : ConfigSource.DEFAULT_VALUE,
|
|
252
|
+
);
|
|
233
253
|
}
|
|
234
254
|
|
|
235
255
|
_redact(name, value) {
|
|
@@ -247,7 +267,7 @@ module.exports = class Config {
|
|
|
247
267
|
}
|
|
248
268
|
}
|
|
249
269
|
|
|
250
|
-
getReport({ redact = true }) {
|
|
270
|
+
getReport({ redact = true, stringify = true } = {}) {
|
|
251
271
|
const report = {
|
|
252
272
|
report_create: new Date(),
|
|
253
273
|
config: {
|
|
@@ -257,10 +277,12 @@ module.exports = class Config {
|
|
|
257
277
|
const effective_config = [], environment_variable = [], contrast_ui = [];
|
|
258
278
|
|
|
259
279
|
Array.from(this._effectiveMap.values()).forEach((v) => {
|
|
260
|
-
let { value
|
|
280
|
+
let { value } = v;
|
|
261
281
|
if (value === null) return;
|
|
282
|
+
|
|
283
|
+
const { name, canonical_name, source } = v;
|
|
262
284
|
if (redact) value = this._redact(name, value);
|
|
263
|
-
value = String(value);
|
|
285
|
+
if (stringify) value = String(value);
|
|
264
286
|
|
|
265
287
|
effective_config.push({ value, name, canonical_name, source });
|
|
266
288
|
|
|
@@ -52,7 +52,7 @@ export interface ConfigOption<T> {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export interface Config {
|
|
55
|
-
|
|
55
|
+
_filepaths: string[];
|
|
56
56
|
_effectiveMap: Map<string, EffectiveEntry<any>>;
|
|
57
57
|
_errors: Error[];
|
|
58
58
|
_status: string,
|
|
@@ -320,7 +320,7 @@ export interface Config {
|
|
|
320
320
|
};
|
|
321
321
|
getEffectiveSource(cannonicalName: string): string;
|
|
322
322
|
getEffectiveValue<T = any>(cannonicalName: string): T;
|
|
323
|
-
getReport({ redact
|
|
323
|
+
getReport(opts?: { redact?: boolean, stringify?: boolean }): any;
|
|
324
324
|
setValue<T = any>(name: string, value: T, source: string): void;
|
|
325
325
|
}
|
|
326
326
|
|
|
@@ -194,25 +194,25 @@ const options = [
|
|
|
194
194
|
},
|
|
195
195
|
{
|
|
196
196
|
name: 'api.certificate.ca_file',
|
|
197
|
-
|
|
197
|
+
desc: 'Set the absolute or relative path to a CA for communication with the Contrast UI using a self-signed certificate.',
|
|
198
198
|
arg: '<path>',
|
|
199
199
|
fn: toAbsolutePath,
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
202
|
name: 'api.certificate.cert_file',
|
|
203
|
-
|
|
203
|
+
desc: 'Set the absolute or relative path to the Certificate PEM file for communication with the Contrast UI.',
|
|
204
204
|
arg: '<path>',
|
|
205
205
|
fn: toAbsolutePath,
|
|
206
206
|
},
|
|
207
207
|
{
|
|
208
208
|
name: 'api.certificate.key_file',
|
|
209
|
-
|
|
209
|
+
desc: 'Set the absolute or relative path to the Key PEM file for communication with the Contrast UI.',
|
|
210
210
|
arg: '<path>',
|
|
211
211
|
fn: toAbsolutePath,
|
|
212
212
|
},
|
|
213
213
|
{
|
|
214
214
|
name: 'api.certificate.ignore_cert_errors',
|
|
215
|
-
|
|
215
|
+
desc: 'When set to `true`, the agent ignores certificate verification errors when the agent communicates with the Contrast UI.',
|
|
216
216
|
arg: '[true]',
|
|
217
217
|
default: false,
|
|
218
218
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrast/config",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.50.0",
|
|
4
4
|
"description": "An API for discovering Contrast agent configuration data",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
|
|
@@ -20,8 +20,9 @@
|
|
|
20
20
|
"test": "bash ../scripts/test.sh"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@contrast/common": "1.
|
|
24
|
-
"@contrast/core": "1.
|
|
23
|
+
"@contrast/common": "1.35.0",
|
|
24
|
+
"@contrast/core": "1.55.0",
|
|
25
|
+
"deepmerge": "^4.3.1",
|
|
25
26
|
"yaml": "^2.2.2"
|
|
26
27
|
}
|
|
27
28
|
}
|
|
@@ -27,8 +27,8 @@ module.exports = function (core) {
|
|
|
27
27
|
sensitiveDataMasking: { policy, getRedactedText, traverseAndMask },
|
|
28
28
|
} = core;
|
|
29
29
|
|
|
30
|
-
messages.on(Event.PROTECT, (
|
|
31
|
-
if (!
|
|
30
|
+
messages.on(Event.PROTECT, (store) => {
|
|
31
|
+
if (!store.protect || !policy.keywordSets.length || !store.sourceInfo) {
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
|
|
@@ -36,33 +36,33 @@ module.exports = function (core) {
|
|
|
36
36
|
|
|
37
37
|
const unmasked = policy.maskAttackVector ? new Set() : undefined;
|
|
38
38
|
if (policy.maskHttpBody) {
|
|
39
|
-
|
|
39
|
+
store.protect.parsedBody = `${CONTRAST_REDACTED}-body`;
|
|
40
40
|
} else {
|
|
41
|
-
traverseAndMask(
|
|
41
|
+
traverseAndMask(store.protect?.parsedBody, unmasked);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
traverseAndMask(
|
|
45
|
-
traverseAndMask(
|
|
44
|
+
traverseAndMask(store.protect?.parsedCookies, unmasked);
|
|
45
|
+
traverseAndMask(store.protect?.parsedQuery, unmasked);
|
|
46
46
|
|
|
47
47
|
// Do parsed URL path params and urlPath together
|
|
48
|
-
const params =
|
|
48
|
+
const params = store.protect?.parsedParams;
|
|
49
49
|
if (params) {
|
|
50
50
|
for (const [key, value] of Object.entries(params)) {
|
|
51
51
|
const redactedText = getRedactedText(key);
|
|
52
52
|
if (redactedText) {
|
|
53
53
|
const encoded = encodeURIComponent(value);
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
store.sourceInfo.uriPath = StringPrototypeReplace.call(
|
|
55
|
+
store.sourceInfo.uriPath,
|
|
56
56
|
encoded,
|
|
57
57
|
redactedText
|
|
58
58
|
);
|
|
59
|
-
|
|
59
|
+
store.protect.parsedParams[key] = redactedText;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
// raw headers
|
|
65
|
-
const headers =
|
|
65
|
+
const headers = store.sourceInfo.rawHeaders;
|
|
66
66
|
for (let i = 0; i <= headers.length - 2; i += 2) {
|
|
67
67
|
const key = headers[i];
|
|
68
68
|
|
|
@@ -73,20 +73,20 @@ module.exports = function (core) {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
// raw queries
|
|
76
|
-
if (
|
|
77
|
-
const searchParams = new URLSearchParams(
|
|
76
|
+
if (store.sourceInfo?.queries) {
|
|
77
|
+
const searchParams = new URLSearchParams(store.sourceInfo.queries);
|
|
78
78
|
for (const [key] of searchParams) {
|
|
79
79
|
const redactedText = getRedactedText(key);
|
|
80
80
|
if (redactedText) {
|
|
81
81
|
searchParams.set(key, redactedText);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
store.sourceInfo.queries = searchParams.toString();
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
if (policy.maskAttackVector) {
|
|
88
88
|
// attack values
|
|
89
|
-
const inputAnalysis = Object.entries(
|
|
89
|
+
const inputAnalysis = Object.entries(store.protect?.resultsMap);
|
|
90
90
|
for (const [, results] of inputAnalysis) {
|
|
91
91
|
for (const result of results) {
|
|
92
92
|
const redactedText = getRedactedText(result.key);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrast/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.55.0",
|
|
4
4
|
"description": "Preconfigured Contrast agent core services and models",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
"test": "bash ../scripts/test.sh"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@contrast/common": "1.
|
|
23
|
-
"@contrast/config": "1.
|
|
22
|
+
"@contrast/common": "1.35.0",
|
|
23
|
+
"@contrast/config": "1.50.0",
|
|
24
24
|
"@contrast/find-package-json": "^1.1.0",
|
|
25
25
|
"@contrast/fn-inspect": "^4.3.0",
|
|
26
|
-
"@contrast/logger": "1.
|
|
27
|
-
"@contrast/patcher": "1.
|
|
26
|
+
"@contrast/logger": "1.28.0",
|
|
27
|
+
"@contrast/patcher": "1.27.0",
|
|
28
28
|
"@contrast/perf": "1.3.1",
|
|
29
29
|
"@tsxper/crc32": "^2.1.3",
|
|
30
|
-
"axios": "^1.
|
|
30
|
+
"axios": "^1.11.0",
|
|
31
31
|
"semver": "^7.6.0"
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrast/deadzones",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.27.0",
|
|
4
4
|
"description": "Configures Contrast agent services and instrumentation within an application",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"test": "bash ../scripts/test.sh"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@contrast/common": "1.
|
|
24
|
-
"@contrast/dep-hooks": "1.
|
|
25
|
-
"@contrast/patcher": "1.
|
|
26
|
-
"@contrast/scopes": "1.
|
|
23
|
+
"@contrast/common": "1.35.0",
|
|
24
|
+
"@contrast/dep-hooks": "1.24.0",
|
|
25
|
+
"@contrast/patcher": "1.27.0",
|
|
26
|
+
"@contrast/scopes": "1.25.0"
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrast/dep-hooks",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.24.0",
|
|
4
4
|
"description": "Post hooks for Module.prototype.require",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"test": "bash ../scripts/test.sh"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@contrast/common": "1.
|
|
24
|
+
"@contrast/common": "1.35.0",
|
|
25
25
|
"@contrast/find-package-json": "^1.1.0",
|
|
26
|
-
"@contrast/logger": "1.
|
|
26
|
+
"@contrast/logger": "1.28.0",
|
|
27
27
|
"semver": "^7.6.3"
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrast/esm-hooks",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.29.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Support for loading and instrumenting ECMAScript modules",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"test": "bash ../scripts/test.sh"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@contrast/common": "1.
|
|
26
|
-
"@contrast/config": "1.
|
|
27
|
-
"@contrast/core": "1.
|
|
25
|
+
"@contrast/common": "1.35.0",
|
|
26
|
+
"@contrast/config": "1.50.0",
|
|
27
|
+
"@contrast/core": "1.55.0",
|
|
28
28
|
"@contrast/find-package-json": "^1.1.0",
|
|
29
|
-
"@contrast/logger": "1.
|
|
30
|
-
"@contrast/rewriter": "1.
|
|
29
|
+
"@contrast/logger": "1.28.0",
|
|
30
|
+
"@contrast/rewriter": "1.31.0"
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrast/instrumentation",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.34.0",
|
|
4
4
|
"description": "Shared hooks and patches between Protect and Assess components",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"test": "bash ../scripts/test.sh"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@contrast/common": "1.
|
|
24
|
-
"@contrast/dep-hooks": "1.
|
|
25
|
-
"@contrast/logger": "1.
|
|
26
|
-
"@contrast/patcher": "1.
|
|
23
|
+
"@contrast/common": "1.35.0",
|
|
24
|
+
"@contrast/dep-hooks": "1.24.0",
|
|
25
|
+
"@contrast/logger": "1.28.0",
|
|
26
|
+
"@contrast/patcher": "1.27.0"
|
|
27
27
|
}
|
|
28
28
|
}
|