@contrast/agent-bundle 5.39.1 → 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/lib/start-agent.js +50 -40
- 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/string/replace.js +6 -3
- package/node_modules/@contrast/assess/lib/dataflow/propagation/install/util-format.js +44 -21
- package/node_modules/@contrast/assess/lib/dataflow/sources/index.js +1 -1
- package/node_modules/@contrast/assess/lib/dataflow/sources/install/{body-parser1.js → body-parser.js} +2 -2
- 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/constants.d.ts +6 -0
- package/node_modules/@contrast/common/lib/constants.js +8 -1
- 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 +3 -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 +300 -152
- package/node_modules/@contrast/library-analysis/lib/install/library-reporting/index.js +9 -2
- package/node_modules/@contrast/library-analysis/lib/install/library-reporting/utils.js +54 -43
- 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/index.js +1 -1
- package/node_modules/@contrast/protect/lib/input-analysis/install/{body-parser1.js → body-parser.js} +1 -1
- 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/routes-observed.js +2 -1
- 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.d.ts +2 -0
- package/node_modules/@contrast/route-coverage/lib/index.js +15 -17
- package/node_modules/@contrast/route-coverage/lib/install/express/express5.js +489 -202
- package/node_modules/@contrast/route-coverage/package.json +9 -9
- 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/buffer.d.ts +5 -0
- package/node_modules/@types/node/dns/promises.d.ts +11 -10
- package/node_modules/@types/node/dns.d.ts +18 -19
- 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/@types/node/stream/web.d.ts +4 -0
- 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/{path-to-regexp/LICENSE → deepmerge/license.txt} +1 -1
- 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 +5 -3
- package/node_modules/@contrast/agentify/lib/sources.js +0 -94
- package/node_modules/@contrast/route-coverage/lib/install/http.js +0 -44
- 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
- package/node_modules/path-to-regexp/Readme.md +0 -216
- package/node_modules/path-to-regexp/dist/index.d.ts +0 -136
- package/node_modules/path-to-regexp/dist/index.js +0 -403
- package/node_modules/path-to-regexp/dist/index.js.map +0 -1
- package/node_modules/path-to-regexp/package.json +0 -62
|
@@ -31,23 +31,22 @@ class RouteAnalysisMonitor {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* @param {
|
|
35
|
-
* @param {string}
|
|
34
|
+
* @param {import('@contrast/common').SourceInfo} sourceInfo
|
|
35
|
+
* @param {string} sourceInfo.normalizedUri
|
|
36
36
|
* @returns {AnalysisInfo}
|
|
37
37
|
*/
|
|
38
|
-
getAnalysisInfo({ method,
|
|
39
|
-
const normalizedUrl = this._core.routeCoverage.uriPathToNormalizedUrl(uriPath);
|
|
38
|
+
getAnalysisInfo({ method, normalizedUri }) {
|
|
40
39
|
const now = Date.now();
|
|
41
40
|
|
|
42
|
-
if (
|
|
43
|
-
const key = `${method}:${
|
|
41
|
+
if (normalizedUri) {
|
|
42
|
+
const key = `${method}:${normalizedUri}`;
|
|
44
43
|
let routeMeta = this._normalCache.get(key);
|
|
45
44
|
|
|
46
45
|
// not in cache, not paused
|
|
47
46
|
if (!routeMeta) {
|
|
48
47
|
routeMeta = {
|
|
49
48
|
pauseEnd: now + this._ttl,
|
|
50
|
-
normalizedUrl,
|
|
49
|
+
normalizedUrl: normalizedUri,
|
|
51
50
|
};
|
|
52
51
|
this._normalCache.set(key, routeMeta);
|
|
53
52
|
|
|
@@ -64,8 +63,6 @@ class RouteAnalysisMonitor {
|
|
|
64
63
|
|
|
65
64
|
// was in cache and still paused
|
|
66
65
|
return { paused: true, ...routeMeta };
|
|
67
|
-
} else {
|
|
68
|
-
// todo - handle "dynamic" routes
|
|
69
66
|
}
|
|
70
67
|
|
|
71
68
|
return this._defaultAnalysisInfo;
|
|
@@ -105,7 +102,6 @@ class ProbabilisticSampler extends BaseSampler {
|
|
|
105
102
|
|
|
106
103
|
getSampleInfo(sourceInfo) {
|
|
107
104
|
const { baseline, base_probability } = this.opts;
|
|
108
|
-
const { reqData } = sourceInfo.store.assess;
|
|
109
105
|
|
|
110
106
|
if (this.baseline < baseline) {
|
|
111
107
|
this.baseline++;
|
|
@@ -119,7 +115,7 @@ class ProbabilisticSampler extends BaseSampler {
|
|
|
119
115
|
|
|
120
116
|
// check route monitoring before sampling
|
|
121
117
|
if (canSample) {
|
|
122
|
-
const routeInfo = this.routeMonitor?.getAnalysisInfo(
|
|
118
|
+
const routeInfo = this.routeMonitor?.getAnalysisInfo(sourceInfo);
|
|
123
119
|
|
|
124
120
|
if (routeInfo) {
|
|
125
121
|
// don't sample if analysis is paused
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrast/assess",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.59.0",
|
|
4
4
|
"description": "Contrast service providing framework-agnostic Assess support",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
|
|
@@ -20,17 +20,18 @@
|
|
|
20
20
|
"test": "bash ../scripts/test.sh"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@contrast/common": "1.
|
|
24
|
-
"@contrast/config": "1.
|
|
25
|
-
"@contrast/core": "1.
|
|
26
|
-
"@contrast/dep-hooks": "1.
|
|
23
|
+
"@contrast/common": "1.35.0",
|
|
24
|
+
"@contrast/config": "1.50.0",
|
|
25
|
+
"@contrast/core": "1.55.0",
|
|
26
|
+
"@contrast/dep-hooks": "1.24.0",
|
|
27
27
|
"@contrast/distringuish": "^5.1.0",
|
|
28
|
-
"@contrast/instrumentation": "1.
|
|
29
|
-
"@contrast/logger": "1.
|
|
30
|
-
"@contrast/patcher": "1.
|
|
31
|
-
"@contrast/rewriter": "1.
|
|
32
|
-
"@contrast/route-coverage": "1.
|
|
33
|
-
"@contrast/scopes": "1.
|
|
28
|
+
"@contrast/instrumentation": "1.34.0",
|
|
29
|
+
"@contrast/logger": "1.28.0",
|
|
30
|
+
"@contrast/patcher": "1.27.0",
|
|
31
|
+
"@contrast/rewriter": "1.31.0",
|
|
32
|
+
"@contrast/route-coverage": "1.46.0",
|
|
33
|
+
"@contrast/scopes": "1.25.0",
|
|
34
|
+
"@contrast/sources": "1.1.0",
|
|
34
35
|
"semver": "^7.6.0"
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare enum Event {
|
|
2
2
|
RESPONSE_FINISH = "response-finish",
|
|
3
|
+
SERVER_LISTENING = "server-listening",
|
|
3
4
|
ROUTE_COVERAGE_DISCOVERY_FINISHED = "route-coverage-discovery-finished",
|
|
4
5
|
ARCHITECTURE_COMPONENT = "architecture-component",
|
|
5
6
|
ASSESS_DATAFLOW_FINDING = "assess-dataflow-findings",
|
|
@@ -188,6 +189,11 @@ export declare enum DataflowTag {
|
|
|
188
189
|
COOKIE = "COOKIE",
|
|
189
190
|
WEAK_URL_ENCODED = "WEAK_URL_ENCODED"
|
|
190
191
|
}
|
|
192
|
+
export declare enum ServerEnvironment {
|
|
193
|
+
QA = "QA",
|
|
194
|
+
PRODUCTION = "PRODUCTION",
|
|
195
|
+
DEVELOPMENT = "DEVELOPMENT"
|
|
196
|
+
}
|
|
191
197
|
export declare const BLOCKING_MODES: readonly ["block", "block_at_perimeter"];
|
|
192
198
|
export declare const FS_METHODS: readonly [{
|
|
193
199
|
readonly name: "access";
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
* way not consistent with the End User License Agreement.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.URI_REGEXES = exports.symbols = exports.agentLibIDListTypes = exports.FS_METHODS = exports.BLOCKING_MODES = exports.DataflowTag = exports.ExclusionType = exports.InputType = exports.SessionConfigurationRule = exports.ResponseScanningRule = exports.Rule = exports.ProtectRuleMode = exports.Event = void 0;
|
|
17
|
+
exports.URI_REGEXES = exports.symbols = exports.agentLibIDListTypes = exports.FS_METHODS = exports.BLOCKING_MODES = exports.ServerEnvironment = exports.DataflowTag = exports.ExclusionType = exports.InputType = exports.SessionConfigurationRule = exports.ResponseScanningRule = exports.Rule = exports.ProtectRuleMode = exports.Event = void 0;
|
|
18
18
|
var Event;
|
|
19
19
|
(function (Event) {
|
|
20
20
|
// lifecycle
|
|
21
21
|
Event["RESPONSE_FINISH"] = "response-finish";
|
|
22
|
+
Event["SERVER_LISTENING"] = "server-listening";
|
|
22
23
|
Event["ROUTE_COVERAGE_DISCOVERY_FINISHED"] = "route-coverage-discovery-finished";
|
|
23
24
|
// reports
|
|
24
25
|
Event["ARCHITECTURE_COMPONENT"] = "architecture-component";
|
|
@@ -219,6 +220,12 @@ var DataflowTag;
|
|
|
219
220
|
DataflowTag["COOKIE"] = "COOKIE";
|
|
220
221
|
DataflowTag["WEAK_URL_ENCODED"] = "WEAK_URL_ENCODED";
|
|
221
222
|
})(DataflowTag || (exports.DataflowTag = DataflowTag = {}));
|
|
223
|
+
var ServerEnvironment;
|
|
224
|
+
(function (ServerEnvironment) {
|
|
225
|
+
ServerEnvironment["QA"] = "QA";
|
|
226
|
+
ServerEnvironment["PRODUCTION"] = "PRODUCTION";
|
|
227
|
+
ServerEnvironment["DEVELOPMENT"] = "DEVELOPMENT";
|
|
228
|
+
})(ServerEnvironment || (exports.ServerEnvironment = ServerEnvironment = {}));
|
|
222
229
|
exports.BLOCKING_MODES = ['block', 'block_at_perimeter'];
|
|
223
230
|
exports.FS_METHODS = [
|
|
224
231
|
{ name: 'access', promises: true, sync: true, indices: [0] },
|
|
@@ -207,7 +207,6 @@ export declare class Blocker {
|
|
|
207
207
|
block(mode: string, ruleId: string): void;
|
|
208
208
|
}
|
|
209
209
|
export interface ProtectMessage {
|
|
210
|
-
reqData: ReqData;
|
|
211
210
|
blocker: Blocker;
|
|
212
211
|
policy: Partial<Record<Rule, ProtectRuleMode>>;
|
|
213
212
|
exclusions: any[];
|
|
@@ -226,6 +225,13 @@ export interface SourceInfo {
|
|
|
226
225
|
port: number;
|
|
227
226
|
protocol: string;
|
|
228
227
|
time: number;
|
|
228
|
+
method: string;
|
|
229
|
+
rawHeaders: string[];
|
|
230
|
+
uriPath: string;
|
|
231
|
+
queries: string;
|
|
232
|
+
contentType?: string;
|
|
233
|
+
ip: string;
|
|
234
|
+
httpVersion: string;
|
|
229
235
|
}
|
|
230
236
|
/**
|
|
231
237
|
* this is known as RequestStore even though, in the future, instrumentation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contrast/common",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.35.0",
|
|
4
4
|
"description": "Shared constants and utilities for all Contrast Agent modules",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
|
|
@@ -45,7 +45,7 @@ const {
|
|
|
45
45
|
} = require('@contrast/common');
|
|
46
46
|
|
|
47
47
|
function coerceLowerCase(path) {
|
|
48
|
-
return function(remoteData) {
|
|
48
|
+
return function (remoteData) {
|
|
49
49
|
const value = get(remoteData, path);
|
|
50
50
|
if (value && isString(value)) return StringPrototypeToLowerCase.call(value);
|
|
51
51
|
};
|
|
@@ -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,
|
|
@@ -63,6 +63,7 @@ export interface Config {
|
|
|
63
63
|
args?: any[];
|
|
64
64
|
}[];
|
|
65
65
|
|
|
66
|
+
preinstrument: boolean,
|
|
66
67
|
|
|
67
68
|
api: {
|
|
68
69
|
/** Default: `true` */
|
|
@@ -319,7 +320,7 @@ export interface Config {
|
|
|
319
320
|
};
|
|
320
321
|
getEffectiveSource(cannonicalName: string): string;
|
|
321
322
|
getEffectiveValue<T = any>(cannonicalName: string): T;
|
|
322
|
-
getReport({ redact
|
|
323
|
+
getReport(opts?: { redact?: boolean, stringify?: boolean }): any;
|
|
323
324
|
setValue<T = any>(name: string, value: T, source: string): void;
|
|
324
325
|
}
|
|
325
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
|
}
|