@contrast/agent-bundle 5.40.0 → 5.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/node_modules/@contrast/agent/package.json +12 -11
  2. package/node_modules/@contrast/agent-swc-plugin/index.js +9 -3
  3. package/node_modules/@contrast/agent-swc-plugin/methods.js +15 -1
  4. package/node_modules/@contrast/agent-swc-plugin/package.json +5 -8
  5. package/node_modules/@contrast/agent-swc-plugin/rewriter.wasm +0 -0
  6. package/node_modules/@contrast/agentify/lib/index.js +2 -2
  7. package/node_modules/@contrast/agentify/package.json +15 -14
  8. package/node_modules/@contrast/architecture-components/package.json +5 -5
  9. package/node_modules/@contrast/assess/lib/dataflow/propagation/install/util-format.js +44 -21
  10. package/node_modules/@contrast/assess/lib/dataflow/sources/install/body-parser.js +1 -1
  11. package/node_modules/@contrast/assess/lib/dataflow/sources/install/koa/koa-bodyparsers.js +3 -1
  12. package/node_modules/@contrast/assess/lib/dataflow/sources/install/qs6.js +5 -5
  13. package/node_modules/@contrast/assess/lib/dataflow/sources/install/querystring.js +2 -1
  14. package/node_modules/@contrast/assess/lib/index.d.ts +0 -1
  15. package/node_modules/@contrast/assess/lib/make-source-context.js +7 -37
  16. package/node_modules/@contrast/assess/lib/sampler/common.js +7 -11
  17. package/node_modules/@contrast/assess/package.json +12 -11
  18. package/node_modules/@contrast/common/lib/types.d.ts +7 -1
  19. package/node_modules/@contrast/common/package.json +1 -1
  20. package/node_modules/@contrast/config/lib/common.js +1 -1
  21. package/node_modules/@contrast/config/lib/config.js +49 -27
  22. package/node_modules/@contrast/config/lib/index.d.ts +2 -2
  23. package/node_modules/@contrast/config/lib/options.js +4 -4
  24. package/node_modules/@contrast/config/package.json +4 -3
  25. package/node_modules/@contrast/core/lib/sensitive-data-masking/protect-listener.js +15 -15
  26. package/node_modules/@contrast/core/package.json +6 -6
  27. package/node_modules/@contrast/deadzones/package.json +5 -5
  28. package/node_modules/@contrast/dep-hooks/package.json +3 -3
  29. package/node_modules/@contrast/esm-hooks/package.json +6 -6
  30. package/node_modules/@contrast/instrumentation/lib/index.js +0 -1
  31. package/node_modules/@contrast/instrumentation/package.json +5 -5
  32. package/node_modules/@contrast/library-analysis/lib/install/library-reporting/dep.json +298 -148
  33. package/node_modules/@contrast/library-analysis/package.json +4 -4
  34. package/node_modules/@contrast/logger/lib/serializers.js +2 -2
  35. package/node_modules/@contrast/logger/package.json +3 -3
  36. package/node_modules/@contrast/metrics/package.json +6 -6
  37. package/node_modules/@contrast/patcher/package.json +2 -2
  38. package/node_modules/@contrast/protect/lib/get-source-context.js +3 -1
  39. package/node_modules/@contrast/protect/lib/index.js +6 -1
  40. package/node_modules/@contrast/protect/lib/input-analysis/handlers.js +7 -9
  41. package/node_modules/@contrast/protect/lib/input-analysis/install/http.js +18 -19
  42. package/node_modules/@contrast/protect/lib/input-analysis/install/qs6.js +18 -17
  43. package/node_modules/@contrast/protect/lib/input-analysis/install/universal-cookie4.js +2 -3
  44. package/node_modules/@contrast/protect/lib/make-source-context.js +22 -66
  45. package/node_modules/@contrast/protect/lib/semantic-analysis/handlers.js +73 -72
  46. package/node_modules/@contrast/protect/package.json +11 -11
  47. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/index.js +7 -7
  48. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.d.ts +3 -3
  49. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/application-activity/translations.js +24 -21
  50. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.d.ts +11 -11
  51. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/index.js +76 -86
  52. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.d.ts +1 -2
  53. package/node_modules/@contrast/reporter/lib/reporters/contrast-ui/endpoints/traces/translations.js +8 -2
  54. package/node_modules/@contrast/reporter/lib/reporters/security-logger/index.d.ts +2 -2
  55. package/node_modules/@contrast/reporter/lib/reporters/security-logger/index.js +22 -20
  56. package/node_modules/@contrast/reporter/package.json +7 -7
  57. package/node_modules/@contrast/rewriter/lib/index.js +2 -2
  58. package/node_modules/@contrast/rewriter/package.json +6 -6
  59. package/node_modules/@contrast/route-coverage/lib/index.js +1 -9
  60. package/node_modules/@contrast/route-coverage/lib/install/express/express5.js +17 -19
  61. package/node_modules/@contrast/route-coverage/lib/install/hapi.js +9 -2
  62. package/node_modules/@contrast/route-coverage/package.json +8 -8
  63. package/node_modules/@contrast/scopes/package.json +5 -5
  64. package/node_modules/@contrast/sec-obs/lib/traces/http.js +2 -2
  65. package/node_modules/@contrast/sec-obs/lib/traces/http.test.js +17 -0
  66. package/node_modules/@contrast/sec-obs/lib/traces/outbound-service-call.js +2 -2
  67. package/node_modules/@contrast/sec-obs/lib/traces/outbound-service-call.test.js +17 -0
  68. package/node_modules/@contrast/sec-obs/package.json +9 -9
  69. package/node_modules/@contrast/sources/lib/index.js +109 -0
  70. package/node_modules/@contrast/sources/lib/index.test.js +120 -0
  71. package/node_modules/@contrast/{route-coverage/lib/normalized-url-mapper.js → sources/lib/normalized-uri-mapper.js} +10 -3
  72. package/node_modules/@contrast/sources/lib/normalized-uri-mapper.test.js +59 -0
  73. package/node_modules/@contrast/{sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/constants.js → sources/lib/req-data.js} +0 -6
  74. package/node_modules/@contrast/sources/lib/source-info.js +183 -0
  75. package/node_modules/@contrast/sources/lib/source-info.test.js +68 -0
  76. package/node_modules/@contrast/sources/package.json +16 -0
  77. package/node_modules/@contrast/telemetry/package.json +6 -6
  78. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.d.ts +2831 -77
  79. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js +2831 -77
  80. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_attributes.js.map +1 -1
  81. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.d.ts +415 -98
  82. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js +415 -98
  83. package/node_modules/@opentelemetry/semantic-conventions/build/esm/experimental_metrics.js.map +1 -1
  84. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.d.ts +106 -0
  85. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js +106 -0
  86. package/node_modules/@opentelemetry/semantic-conventions/build/esm/stable_attributes.js.map +1 -1
  87. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.d.ts +1 -1
  88. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js +1 -1
  89. package/node_modules/@opentelemetry/semantic-conventions/build/esm/version.js.map +1 -1
  90. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.d.ts +2831 -77
  91. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js +2831 -77
  92. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_attributes.js.map +1 -1
  93. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.d.ts +415 -98
  94. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js +415 -98
  95. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/experimental_metrics.js.map +1 -1
  96. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.d.ts +106 -0
  97. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js +106 -0
  98. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/stable_attributes.js.map +1 -1
  99. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.d.ts +1 -1
  100. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js +1 -1
  101. package/node_modules/@opentelemetry/semantic-conventions/build/esnext/version.js.map +1 -1
  102. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.d.ts +2831 -77
  103. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js +2858 -103
  104. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_attributes.js.map +1 -1
  105. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.d.ts +415 -98
  106. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js +420 -102
  107. package/node_modules/@opentelemetry/semantic-conventions/build/src/experimental_metrics.js.map +1 -1
  108. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.d.ts +106 -0
  109. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js +106 -0
  110. package/node_modules/@opentelemetry/semantic-conventions/build/src/stable_attributes.js.map +1 -1
  111. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.d.ts +1 -1
  112. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js +1 -1
  113. package/node_modules/@opentelemetry/semantic-conventions/build/src/version.js.map +1 -1
  114. package/node_modules/@opentelemetry/semantic-conventions/package.json +3 -3
  115. package/node_modules/@swc/types/index.d.ts +3 -2
  116. package/node_modules/@swc/types/package.json +1 -1
  117. package/node_modules/@types/node/README.md +2 -2
  118. package/node_modules/@types/node/crypto.d.ts +17 -1
  119. package/node_modules/@types/node/fs/promises.d.ts +7 -3
  120. package/node_modules/@types/node/fs.d.ts +11 -1
  121. package/node_modules/@types/node/http.d.ts +4 -19
  122. package/node_modules/@types/node/http2.d.ts +13 -11
  123. package/node_modules/@types/node/inspector.d.ts +163 -6
  124. package/node_modules/@types/node/module.d.ts +24 -0
  125. package/node_modules/@types/node/package.json +4 -89
  126. package/node_modules/@types/node/perf_hooks.d.ts +14 -0
  127. package/node_modules/@types/node/repl.d.ts +11 -1
  128. package/node_modules/@types/node/sqlite.d.ts +0 -1
  129. package/node_modules/@types/node/stream/web.d.ts +4 -0
  130. package/node_modules/@types/node/stream.d.ts +17 -6
  131. package/node_modules/@types/node/test.d.ts +16 -1
  132. package/node_modules/@types/node/timers.d.ts +0 -2
  133. package/node_modules/@types/node/url.d.ts +1 -1
  134. package/node_modules/@types/node/util.d.ts +6 -2
  135. package/node_modules/@types/node/worker_threads.d.ts +12 -0
  136. package/node_modules/@types/node/zlib.d.ts +8 -2
  137. package/node_modules/axios/CHANGELOG.md +17 -0
  138. package/node_modules/axios/README.md +1 -4
  139. package/node_modules/axios/dist/axios.js +39 -5
  140. package/node_modules/axios/dist/axios.js.map +1 -1
  141. package/node_modules/axios/dist/axios.min.js +2 -2
  142. package/node_modules/axios/dist/axios.min.js.map +1 -1
  143. package/node_modules/axios/dist/browser/axios.cjs +46 -9
  144. package/node_modules/axios/dist/browser/axios.cjs.map +1 -1
  145. package/node_modules/axios/dist/esm/axios.js +46 -9
  146. package/node_modules/axios/dist/esm/axios.js.map +1 -1
  147. package/node_modules/axios/dist/esm/axios.min.js +2 -2
  148. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  149. package/node_modules/axios/dist/node/axios.cjs +46 -9
  150. package/node_modules/axios/dist/node/axios.cjs.map +1 -1
  151. package/node_modules/axios/index.d.cts +13 -2
  152. package/node_modules/axios/lib/core/Axios.js +2 -2
  153. package/node_modules/axios/lib/core/mergeConfig.js +1 -1
  154. package/node_modules/axios/lib/env/data.js +1 -1
  155. package/node_modules/axios/lib/helpers/throttle.js +1 -1
  156. package/node_modules/axios/lib/helpers/toURLEncodedForm.js +4 -3
  157. package/node_modules/axios/lib/utils.js +36 -0
  158. package/node_modules/axios/package.json +5 -5
  159. package/node_modules/deepmerge/.editorconfig +7 -0
  160. package/node_modules/deepmerge/.eslintcache +1 -0
  161. package/node_modules/deepmerge/changelog.md +167 -0
  162. package/node_modules/deepmerge/dist/cjs.js +133 -0
  163. package/node_modules/deepmerge/dist/umd.js +139 -0
  164. package/node_modules/deepmerge/index.d.ts +20 -0
  165. package/node_modules/deepmerge/index.js +106 -0
  166. package/node_modules/deepmerge/license.txt +21 -0
  167. package/node_modules/deepmerge/package.json +42 -0
  168. package/node_modules/deepmerge/readme.md +264 -0
  169. package/node_modules/deepmerge/rollup.config.js +22 -0
  170. package/node_modules/follow-redirects/package.json +1 -1
  171. package/node_modules/form-data/CHANGELOG.md +601 -0
  172. package/node_modules/form-data/{Readme.md → README.md} +4 -4
  173. package/node_modules/form-data/lib/form_data.js +2 -6
  174. package/node_modules/form-data/package.json +22 -6
  175. package/node_modules/nan/.github/workflows/ci.yml +8 -10
  176. package/node_modules/nan/.pre-commit-config.yaml +8 -0
  177. package/node_modules/nan/CHANGELOG.md +5 -1
  178. package/node_modules/nan/README.md +4 -4
  179. package/node_modules/nan/nan.h +16 -12
  180. package/node_modules/nan/nan_callbacks.h +13 -0
  181. package/node_modules/nan/nan_callbacks_12_inl.h +16 -2
  182. package/node_modules/nan/nan_callbacks_pre_12_inl.h +6 -2
  183. package/node_modules/nan/nan_maybe_43_inl.h +1 -1
  184. package/node_modules/nan/nan_maybe_pre_43_inl.h +1 -1
  185. package/node_modules/nan/nan_scriptorigin.h +11 -9
  186. package/node_modules/nan/nan_typedarray_contents.h +1 -1
  187. package/node_modules/nan/package.json +2 -2
  188. package/node_modules/undici-types/agent.d.ts +4 -0
  189. package/node_modules/undici-types/client-stats.d.ts +15 -0
  190. package/node_modules/undici-types/client.d.ts +6 -3
  191. package/node_modules/undici-types/mock-agent.d.ts +3 -0
  192. package/node_modules/undici-types/package.json +1 -1
  193. package/node_modules/undici-types/pool.d.ts +2 -0
  194. package/node_modules/undici-types/proxy-agent.d.ts +1 -0
  195. package/node_modules/yaml/README.md +2 -20
  196. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +1 -1
  197. package/node_modules/yaml/dist/stringify/stringifyString.js +1 -1
  198. package/node_modules/yaml/package.json +2 -1
  199. package/package.json +3 -2
  200. package/node_modules/@contrast/agentify/lib/sources.js +0 -95
  201. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/LICENSE +0 -12
  202. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/constants.d.ts +0 -385
  203. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/constants.js +0 -270
  204. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/index.d.ts +0 -40
  205. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/index.js +0 -228
  206. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/primordials.d.ts +0 -65
  207. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/primordials.js +0 -66
  208. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/types.d.ts +0 -383
  209. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/lib/types.js +0 -30
  210. package/node_modules/@contrast/sec-obs/node_modules/@contrast/common/package.json +0 -23
  211. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/LICENSE +0 -12
  212. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/README.md +0 -44
  213. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/common.js +0 -131
  214. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/config.js +0 -290
  215. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/index.d.ts +0 -328
  216. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/index.js +0 -29
  217. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/options.js +0 -836
  218. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/lib/validators.js +0 -23
  219. package/node_modules/@contrast/sec-obs/node_modules/@contrast/config/package.json +0 -27
  220. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/LICENSE +0 -12
  221. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/README.md +0 -98
  222. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/agent-info.js +0 -36
  223. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/app-info.js +0 -233
  224. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/build-id.js +0 -51
  225. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/capture-stacktrace.js +0 -256
  226. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/contrast-methods.js +0 -155
  227. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/index.d.ts +0 -52
  228. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/ioc/core.js +0 -95
  229. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/is-agent-path.js +0 -37
  230. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/messages.js +0 -28
  231. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/index.js +0 -63
  232. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/protect-listener.js +0 -111
  233. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/sensitive-data-masking/server-settings-listener.js +0 -44
  234. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/cloud-provider-metadata.js +0 -146
  235. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/index.js +0 -225
  236. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/linux-os-info.js +0 -137
  237. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/lib/system-info/utils.js +0 -35
  238. package/node_modules/@contrast/sec-obs/node_modules/@contrast/core/package.json +0 -33
  239. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/LICENSE +0 -12
  240. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/README.md +0 -94
  241. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-handler-registry.d.ts +0 -121
  242. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-handler-registry.js +0 -206
  243. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.d.ts +0 -72
  244. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/export-hook-descriptor.js +0 -88
  245. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/handler-invoker.d.ts +0 -46
  246. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/handler-invoker.js +0 -106
  247. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/helpers.d.ts +0 -28
  248. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/helpers.js +0 -66
  249. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/index.d.ts +0 -115
  250. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/index.js +0 -208
  251. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/package-finder.d.ts +0 -43
  252. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/lib/package-finder.js +0 -79
  253. package/node_modules/@contrast/sec-obs/node_modules/@contrast/dep-hooks/package.json +0 -29
  254. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/LICENSE +0 -12
  255. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/README.md +0 -270
  256. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/index.d.ts +0 -16
  257. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/index.js +0 -132
  258. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/serializers.d.ts +0 -33
  259. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/serializers.js +0 -75
  260. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/utils.d.ts +0 -15
  261. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/lib/utils.js +0 -34
  262. package/node_modules/@contrast/sec-obs/node_modules/@contrast/logger/package.json +0 -28
  263. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/LICENSE +0 -12
  264. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/README.md +0 -51
  265. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/lib/index.d.ts +0 -101
  266. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/lib/index.js +0 -544
  267. package/node_modules/@contrast/sec-obs/node_modules/@contrast/patcher/package.json +0 -25
  268. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/LICENSE +0 -12
  269. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/README.md +0 -6
  270. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/cache.js +0 -318
  271. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/index.js +0 -216
  272. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/lib/rewrite-is-deadzoned.js +0 -143
  273. package/node_modules/@contrast/sec-obs/node_modules/@contrast/rewriter/package.json +0 -30
  274. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/LICENSE +0 -12
  275. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/constants.js +0 -26
  276. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/index.d.ts +0 -46
  277. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/index.js +0 -70
  278. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/bluebird.js +0 -128
  279. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/index.js +0 -34
  280. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb-core.js +0 -83
  281. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb3.js +0 -89
  282. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb4.js +0 -80
  283. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mongodb6.js +0 -46
  284. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/mysql.js +0 -151
  285. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/install/redis.js +0 -79
  286. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/lib/utils.js +0 -35
  287. package/node_modules/@contrast/sec-obs/node_modules/@contrast/scopes/package.json +0 -28
  288. package/node_modules/@types/node/ts5.1/compatibility/disposable.d.ts +0 -12
  289. package/node_modules/@types/node/ts5.1/index.d.ts +0 -98
  290. package/node_modules/form-data/README.md.bak +0 -355
@@ -1,7 +1,7 @@
1
- import { ProtectMessage } from '@contrast/common';
1
+ import { RequestStore } from '@contrast/common';
2
2
  import { AttackModel } from '../../types';
3
- export declare function handleProtectMessage(protectMsg: ProtectMessage): {
3
+ export declare function handleProtectMessage(store: RequestStore): {
4
4
  userAgent: string | null;
5
5
  attackModel: AttackModel | null;
6
- };
6
+ } | null;
7
7
  //# sourceMappingURL=translations.d.ts.map
@@ -166,8 +166,8 @@ const xxeSemanticAnalysisDetailsBuilder = (el) => {
166
166
  }, exploitMetadata);
167
167
  return exploitMetadata;
168
168
  };
169
- const buildRequestObject = (reqData) => {
170
- const searchParams = new URLSearchParams(reqData.queries);
169
+ const buildRequestObject = (sourceInfo) => {
170
+ const searchParams = new URLSearchParams(sourceInfo.queries);
171
171
  const parameters = {};
172
172
  for (const [key, value] of searchParams) {
173
173
  if (parameters[key]) {
@@ -178,14 +178,14 @@ const buildRequestObject = (reqData) => {
178
178
  }
179
179
  }
180
180
  const headers = {};
181
- for (let i = 0; i < reqData.headers.length; i += 2) {
182
- headers[reqData.headers[i]] = StringPrototypeSplit.call(reqData.headers[i + 1], /[,;]+/);
181
+ for (let i = 0; i < sourceInfo.rawHeaders.length; i += 2) {
182
+ headers[sourceInfo.rawHeaders[i]] = StringPrototypeSplit.call(sourceInfo.rawHeaders[i + 1], /[,;]+/);
183
183
  }
184
184
  return {
185
- version: reqData.httpVersion,
186
- method: reqData.method,
187
- uri: reqData.uriPath,
188
- queryString: reqData.queries,
185
+ version: sourceInfo.httpVersion,
186
+ method: sourceInfo.method,
187
+ uri: sourceInfo.uriPath,
188
+ queryString: sourceInfo.queries,
189
189
  parameters,
190
190
  headers,
191
191
  };
@@ -247,26 +247,27 @@ const buildProtectionRules = (results, requestPayload, time, isBlockMode, detail
247
247
  return;
248
248
  return accumulator;
249
249
  };
250
- const buildDefendPayload = (protect) => {
251
- const requestPayload = buildRequestObject(protect.reqData);
250
+ const buildDefendPayload = (store) => {
251
+ const { sourceInfo, protect } = store;
252
+ const requestPayload = buildRequestObject(store.sourceInfo);
252
253
  const time = Date.now();
253
254
  let hasAttack = false;
254
255
  const defendObject = {
255
- source: { ip: protect.reqData.ip },
256
+ source: { ip: store.sourceInfo.ip },
256
257
  protectionRules: {},
257
258
  };
258
- const sqlInjection = protect.resultsMap[common_1.Rule.SQL_INJECTION];
259
+ const sqlInjection = store.protect.resultsMap[common_1.Rule.SQL_INJECTION];
259
260
  if (sqlInjection) {
260
- const isBlockMode = protect.policy[common_1.Rule.SQL_INJECTION] === 'block';
261
+ const isBlockMode = store.protect.policy[common_1.Rule.SQL_INJECTION] === 'block';
261
262
  const protectionRules = buildProtectionRules(sqlInjection, requestPayload, time, isBlockMode, sqlInjectionDetailsBuilder);
262
263
  if (protectionRules) {
263
264
  defendObject.protectionRules[common_1.Rule.SQL_INJECTION] = protectionRules;
264
265
  hasAttack = true;
265
266
  }
266
267
  }
267
- const cmdInjection = protect.resultsMap[common_1.Rule.CMD_INJECTION];
268
+ const cmdInjection = store.protect.resultsMap[common_1.Rule.CMD_INJECTION];
268
269
  if (cmdInjection) {
269
- const isBlockMode = protect.policy[common_1.Rule.CMD_INJECTION] === 'block';
270
+ const isBlockMode = store.protect.policy[common_1.Rule.CMD_INJECTION] === 'block';
270
271
  const protectionRules = buildProtectionRules(cmdInjection, requestPayload, time, isBlockMode, cmdInjectionDetailsBuilder);
271
272
  if (protectionRules) {
272
273
  defendObject.protectionRules[common_1.Rule.CMD_INJECTION] = protectionRules;
@@ -442,10 +443,10 @@ const buildDefendPayload = (protect) => {
442
443
  }
443
444
  const botBlocker = protect.resultsMap[common_1.Rule.BOT_BLOCKER];
444
445
  if (botBlocker) {
445
- const uaIdx = protect.reqData.headers.indexOf('user-agent');
446
+ const uaIdx = sourceInfo.rawHeaders.indexOf('user-agent');
446
447
  const protectionRules = buildProtectionRules(botBlocker, requestPayload, time, true, (result) => ({
447
448
  bot: result?.idsList?.[0],
448
- userAgent: protect.reqData.headers[uaIdx + 1],
449
+ userAgent: sourceInfo.rawHeaders[uaIdx + 1],
449
450
  }));
450
451
  if (protectionRules) {
451
452
  defendObject.protectionRules[common_1.Rule.BOT_BLOCKER] = protectionRules;
@@ -454,16 +455,18 @@ const buildDefendPayload = (protect) => {
454
455
  }
455
456
  return hasAttack ? defendObject : null;
456
457
  };
457
- function handleProtectMessage(protectMsg) {
458
+ function handleProtectMessage(store) {
459
+ if (!store.sourceInfo || !store.protect)
460
+ return null;
458
461
  const attackers = {
459
462
  userAgent: null,
460
463
  attackModel: null,
461
464
  };
462
- const userAgentIndex = protectMsg.reqData.headers.findIndex((el) => el === 'user-agent');
465
+ const userAgentIndex = store.sourceInfo.rawHeaders.findIndex((el) => el === 'user-agent');
463
466
  attackers.userAgent = userAgentIndex != -1
464
- ? protectMsg.reqData.headers[userAgentIndex + 1]
467
+ ? store.sourceInfo.rawHeaders[userAgentIndex + 1]
465
468
  : null;
466
- attackers.attackModel = buildDefendPayload(protectMsg);
469
+ attackers.attackModel = buildDefendPayload(store);
467
470
  return attackers;
468
471
  }
469
472
  exports.handleProtectMessage = handleProtectMessage;
@@ -2,21 +2,22 @@ import { AxiosInstance } from 'axios';
2
2
  import { RequestStore } from '@contrast/common';
3
3
  import BaseReporter, { Core } from '../../../base';
4
4
  import NgEndpoint from '../ng-endpoint';
5
- export declare enum States {
6
- INCOMPLETE = "INCOMPLETE",
7
- COMPLETE = "COMPLETE"
8
- }
9
- export type Accum = {
10
- messages: any[];
11
- request?: any;
5
+ export type AbstractFinding = {
6
+ events?: any[];
7
+ properties?: any;
8
+ ruleId: string;
9
+ time: number;
12
10
  routes?: any[];
13
- state: States;
11
+ };
12
+ export type SourceFindingsAccum = {
13
+ findings: AbstractFinding[];
14
+ request?: any;
14
15
  store: RequestStore;
15
16
  timestamp: number;
16
17
  };
17
18
  export default class Traces extends NgEndpoint {
18
19
  hashSet: Set<any>;
19
- accumMap: Map<RequestStore, Accum>;
20
+ findingsAccum: Map<RequestStore, SourceFindingsAccum>;
20
21
  reporter: BaseReporter;
21
22
  inProd: boolean;
22
23
  eventDetail: string;
@@ -26,8 +27,7 @@ export default class Traces extends NgEndpoint {
26
27
  initMessageListeners(): void;
27
28
  initIntervals(): void;
28
29
  getStore(msg: any): RequestStore | null;
29
- getAccum(store: RequestStore): Accum;
30
- initiateCompletenessCondition(accum: Accum): void;
30
+ getFindingsAccum(msg: any): SourceFindingsAccum | null;
31
31
  put(): Promise<void>;
32
32
  filter(): Promise<null | any[]>;
33
33
  }
@@ -40,26 +40,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
41
41
  };
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
- exports.States = void 0;
44
43
  const common_1 = require("@contrast/common");
45
44
  const ng_endpoint_1 = __importDefault(require("../ng-endpoint"));
46
45
  const tx = __importStar(require("./translations"));
47
46
  const { StringPrototypeSplit } = common_1.primordials;
48
- var States;
49
- (function (States) {
50
- States["INCOMPLETE"] = "INCOMPLETE";
51
- States["COMPLETE"] = "COMPLETE";
52
- })(States || (exports.States = States = {}));
53
- // wait this long after request finishes before reporting in case findings occur in async activity
54
- const REPORT_WAIT_MS = 3000;
55
- const PROD = 'PRODUCTION';
47
+ const FINDING_QUEUE_FLUSH_INTERVAL_MS = 2000;
48
+ const DEDUPE_HASH_RESET_INTERVAL = 3000;
56
49
  class Traces extends ng_endpoint_1.default {
57
50
  constructor(core, uiReporter) {
58
51
  super(core, { ...uiReporter, url: '/api/ng/traces' });
59
52
  this.hashSet = new Set();
60
- this.accumMap = new Map();
53
+ this.findingsAccum = new Map();
61
54
  this.reporter = uiReporter;
62
- this.inProd = this.core.config.getEffectiveValue('server.environment') === PROD;
55
+ this.inProd = this.core.config.getEffectiveValue('server.environment') === common_1.ServerEnvironment.PRODUCTION;
63
56
  this.eventDetail = this.core.config.getEffectiveValue('assess.probabilistic_sampling.event_detail');
64
57
  this.initMessageListeners();
65
58
  this.initIntervals();
@@ -67,80 +60,76 @@ class Traces extends ng_endpoint_1.default {
67
60
  initMessageListeners() {
68
61
  this.reporter.subscribeWithLock(common_1.Event.SERVER_SETTINGS_UPDATE, (msg) => {
69
62
  // reset based on effective value
70
- this.inProd = this.core.config.getEffectiveValue('server.environment') === PROD;
63
+ this.inProd = this.core.config.getEffectiveValue('server.environment') === common_1.ServerEnvironment.PRODUCTION;
71
64
  });
72
65
  this.reporter.subscribeWithLock(common_1.Event.ASSESS_DATAFLOW_FINDING, (msg) => {
73
- const { ruleId, sinkEvent } = msg;
74
- const store = this.getStore(msg);
75
- if (!store)
66
+ const accum = this.getFindingsAccum(msg);
67
+ if (!accum)
76
68
  return;
77
- this.getAccum(store).messages.push({
69
+ const { store: { route } } = accum;
70
+ const { ruleId, sinkEvent } = msg;
71
+ accum.findings.push({
78
72
  events: tx.getTraceEvents(sinkEvent, this.inProd, this.eventDetail),
79
73
  properties: sinkEvent.properties,
74
+ routes: route ? tx.getRoutes(route, this.inProd) : undefined,
80
75
  ruleId: ruleId === common_1.Rule.NOSQL_INJECTION_MONGO ? common_1.Rule.NOSQL_INJECTION : ruleId,
81
76
  time: Date.now(),
82
77
  });
83
78
  });
84
79
  this.reporter.subscribeWithLock(common_1.Event.ASSESS_RESPONSE_SCANNING_FINDING, (msg) => {
85
- const { ruleId, vulnerabilityMetadata } = msg;
86
- const store = this.getStore(msg);
87
- if (!store)
80
+ const accum = this.getFindingsAccum(msg);
81
+ if (!accum)
88
82
  return;
89
- this.getAccum(store).messages.push({
83
+ const { store: { route } } = accum;
84
+ const { ruleId, vulnerabilityMetadata } = msg;
85
+ accum.findings.push({
90
86
  properties: vulnerabilityMetadata,
87
+ routes: route ? tx.getRoutes(route, this.inProd) : undefined,
91
88
  ruleId,
92
89
  time: Date.now(),
93
90
  });
94
91
  });
95
92
  this.reporter.subscribeWithLock(common_1.Event.ASSESS_SESSION_CONFIGURATION_FINDING, (msg) => {
96
- const { ruleId, sinkEvent, properties } = msg;
97
- const store = this.getStore(msg);
98
- if (!store)
93
+ const accum = this.getFindingsAccum(msg);
94
+ if (!accum)
99
95
  return;
100
- this.getAccum(store).messages.push({
96
+ const { store: { route } } = accum;
97
+ const { ruleId, sinkEvent, properties } = msg;
98
+ accum.findings.push({
101
99
  events: tx.getTraceEvents(sinkEvent, this.inProd, this.eventDetail),
102
100
  properties,
101
+ routes: route ? tx.getRoutes(route, this.inProd) : undefined,
103
102
  ruleId,
104
103
  time: Date.now(),
105
104
  });
106
105
  });
107
106
  this.reporter.subscribeWithLock(common_1.Event.ASSESS_CRYPTO_ANALYSIS_FINDING, (msg) => {
108
- const { ruleId, finding } = msg;
109
- const store = this.getStore(msg);
110
- if (!store)
107
+ const accum = this.getFindingsAccum(msg);
108
+ if (!accum)
111
109
  return;
112
- this.getAccum(store).messages.push({
110
+ const { store: { route } } = accum;
111
+ const { ruleId, finding } = msg;
112
+ accum.findings.push({
113
113
  events: [tx.getCryptoEvent(finding)],
114
+ routes: route ? tx.getRoutes(route, this.inProd) : undefined,
114
115
  ruleId,
115
116
  time: Date.now(),
116
117
  });
117
118
  });
118
- this.reporter.subscribeWithLock(common_1.Event.RESPONSE_FINISH, (store) => {
119
- const { route, assess } = store;
120
- // this event is emitted by agentify and is feature agnostic,
121
- // so we need to check if the current request has assess enabled.
122
- if (!assess?.policy)
123
- return;
124
- const accum = this.getAccum(store);
125
- if (route) {
126
- accum.routes = tx.getRoutes(route, this.inProd);
127
- }
128
- if (store?.assess?.reqData) {
129
- accum.request = tx.getRequest(store, this.inProd);
130
- }
131
- this.initiateCompletenessCondition(accum);
132
- });
133
119
  this.reporter.subscribeWithLock(common_1.Event.UNINSTALL, () => {
134
120
  // should we log that we're dropping this data?
135
121
  this.hashSet.clear();
136
- this.accumMap.clear();
122
+ this.findingsAccum.clear();
137
123
  });
138
124
  }
139
125
  initIntervals() {
126
+ this.reporter.setInterval(() => {
127
+ this.put();
128
+ }, FINDING_QUEUE_FLUSH_INTERVAL_MS);
140
129
  this.reporter.setInterval(() => {
141
130
  // this will take a little bit of pressure off of TS /preflight if we can dedupe
142
131
  this.hashSet.clear();
143
- }, 3000);
132
+ }, DEDUPE_HASH_RESET_INTERVAL);
144
133
  }
145
134
  getStore(msg) {
146
135
  const store = this.core.scopes.sources.getStore();
@@ -151,23 +140,27 @@ class Traces extends ng_endpoint_1.default {
151
140
  }, 'skipping traces accumulation - no source info during event handling');
152
141
  return null;
153
142
  }
154
- getAccum(store) {
155
- let meta = this.accumMap.get(store);
156
- if (!meta) {
157
- meta = {
158
- messages: [],
159
- state: States.INCOMPLETE,
143
+ getFindingsAccum(msg) {
144
+ const store = this.getStore(msg);
145
+ if (!store?.assess?.policy)
146
+ return null;
147
+ let accum = this.findingsAccum.get(store);
148
+ if (!accum) {
149
+ accum = {
150
+ findings: [],
151
+ request: null,
160
152
  store,
161
- timestamp: Date.now(),
153
+ timestamp: Date.now()
162
154
  };
163
- this.accumMap.set(store, meta);
155
+ this.findingsAccum.set(store, accum);
164
156
  }
165
- return meta;
166
- }
167
- initiateCompletenessCondition(accum) {
168
- setTimeout(() => {
169
- accum.state = States.COMPLETE;
170
- }, REPORT_WAIT_MS).unref();
157
+ if (accum.request) {
158
+ // todo: make sure standardNormalizedUri value is up-to-date given latest store data
159
+ }
160
+ else {
161
+ accum.request = tx.getRequest(store, this.inProd);
162
+ }
163
+ return accum;
171
164
  }
172
165
  async put() {
173
166
  const filtered = await this.filter();
@@ -201,36 +194,33 @@ class Traces extends ng_endpoint_1.default {
201
194
  }
202
195
  }
203
196
  async filter() {
204
- const complete = [];
205
- for (const accum of this.accumMap.values()) {
206
- if (accum.state === States.COMPLETE) {
207
- this.accumMap.delete(accum.store);
208
- // flatten
209
- accum.messages.forEach(({ ruleId, events, properties, time }) => {
210
- const traceData = {
211
- ruleId,
212
- properties,
213
- events,
214
- routes: accum.routes,
215
- request: accum.request,
216
- time
217
- };
218
- const hash = tx.getEventHash(traceData);
219
- if (!this.hashSet.has(hash)) {
220
- this.hashSet.add(hash);
221
- complete.push({ ...traceData, hash });
222
- }
223
- });
224
- }
197
+ const findingsToFilter = [];
198
+ for (const accum of this.findingsAccum.values()) {
199
+ accum.findings.forEach(({ events, properties, routes, ruleId, time }) => {
200
+ const traceData = {
201
+ ruleId,
202
+ properties,
203
+ events,
204
+ routes,
205
+ request: accum.request,
206
+ time
207
+ };
208
+ const hash = tx.getEventHash(traceData);
209
+ if (!this.hashSet.has(hash)) {
210
+ this.hashSet.add(hash);
211
+ findingsToFilter.push({ ...traceData, hash });
212
+ }
213
+ });
225
214
  }
226
- if (!complete.length)
215
+ this.findingsAccum.clear();
216
+ if (!findingsToFilter.length)
227
217
  return null;
228
218
  try {
229
219
  const res = await this.client({
230
220
  method: 'put',
231
221
  url: 'api/ng/preflight',
232
222
  data: {
233
- messages: complete.map((traceData, i) => {
223
+ messages: findingsToFilter.map((traceData, i) => {
234
224
  const { ruleId, routes, hash } = traceData;
235
225
  return {
236
226
  appLanguage: 'Node',
@@ -246,14 +236,14 @@ class Traces extends ng_endpoint_1.default {
246
236
  tags: this.core.config.assess.tags || '',
247
237
  }
248
238
  });
249
- const itemsToReport = [];
239
+ const findingsToReport = [];
250
240
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
251
241
  // @ts-ignore
252
242
  for (const idx of StringPrototypeSplit.call(res.data, ',')) {
253
- const item = complete[Number(idx)];
254
- item && itemsToReport.push(item);
243
+ const item = findingsToFilter[Number(idx)];
244
+ item && findingsToReport.push(item);
255
245
  }
256
- return itemsToReport;
246
+ return findingsToReport;
257
247
  }
258
248
  catch (err) {
259
249
  this.core.logger.error({ err }, 'failed put request to preflight');
@@ -1,4 +1,3 @@
1
- import { RequestStore } from '@contrast/common';
2
1
  import { Signature, TraceEvent } from './types';
3
2
  export declare function getTaintRanges(tags: Record<string, number[]>): Record<string, string>[];
4
3
  export declare function getEventAction(event: any): string;
@@ -16,7 +15,7 @@ export declare function getRoutes(route: any, prod?: boolean): {
16
15
  signature: any;
17
16
  }[];
18
17
  export declare function maskSensitiveRequestData(req: any): any;
19
- export declare function getRequest(store: RequestStore, prod?: boolean): any;
18
+ export declare function getRequest(store: any, prod?: boolean): any;
20
19
  export declare function maskSensitiveTraceData(event: any): any;
21
20
  export declare function getTraceEvents(sinkEvent: any, prod: boolean, eventDetail: string): TraceEvent[];
22
21
  //# sourceMappingURL=translations.d.ts.map
@@ -272,10 +272,16 @@ function maskSensitiveRequestData(req) {
272
272
  }
273
273
  exports.maskSensitiveRequestData = maskSensitiveRequestData;
274
274
  function getRequest(store, prod) {
275
- const { assess: { reqData: { method, headers: reqHeaders, httpVersion, queries: queryString, uriPath: uri, } }, route, } = store;
275
+ const {
276
276
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
277
277
  // @ts-ignore
278
- const headers = Object.entries(reqHeaders).reduce((acc, [key, val]) => Object.assign(acc, { [key]: StringPrototypeSplit.call(val, ';') }), {});
278
+ sourceInfo: { method, rawHeaders, httpVersion, queries: queryString, uriPath: uri, }, route, } = store;
279
+ const headers = {};
280
+ for (let idx = 0; idx < rawHeaders.length - 1; idx += 2) {
281
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
282
+ // @ts-ignore
283
+ headers[rawHeaders[idx]] = StringPrototypeSplit.call(rawHeaders[idx + 1], ';');
284
+ }
279
285
  const request = {
280
286
  body: undefined,
281
287
  headers,
@@ -27,8 +27,8 @@ export default class SecurityLogger extends BaseReporter {
27
27
  private buildMetadata;
28
28
  private handleProtectResult;
29
29
  install(): Promise<void>;
30
- handleAssessEvent(msg: RequestStore): void;
31
- handleProtectEvent(msg: RequestStore): void;
30
+ handleAssessEvent(store: RequestStore): void;
31
+ handleProtectEvent(store: RequestStore): void;
32
32
  }
33
33
  export {};
34
34
  //# sourceMappingURL=index.d.ts.map
@@ -98,8 +98,8 @@ class SecurityLogger extends base_1.default {
98
98
  });
99
99
  });
100
100
  if (core.config.protect.enable) {
101
- this.subscribeWithLock(common_1.Event.PROTECT, (msg) => {
102
- this.handleProtectEvent(msg);
101
+ this.subscribeWithLock(common_1.Event.PROTECT, (store) => {
102
+ this.handleProtectEvent(store);
103
103
  });
104
104
  }
105
105
  }
@@ -142,25 +142,27 @@ class SecurityLogger extends base_1.default {
142
142
  });
143
143
  }
144
144
  }
145
- buildMetadata(reqData, outcome) {
145
+ buildMetadata(sourceInfo, outcome) {
146
146
  return {
147
- src: reqData.ip,
147
+ src: sourceInfo.ip,
148
148
  spt: '-', // do we have port data?
149
- requestMethod: reqData.method,
150
- request: reqData.uriPath,
149
+ requestMethod: sourceInfo.method,
150
+ request: sourceInfo.uriPath,
151
151
  app: this.appInfo.name,
152
152
  outcome,
153
153
  };
154
154
  }
155
- handleProtectResult(protect, rule, result) {
156
- const mode = protect.policy[rule] || common_1.ProtectRuleMode.OFF;
155
+ handleProtectResult(store, rule, result) {
156
+ if (!store?.protect && !store?.sourceInfo)
157
+ return;
158
+ const mode = store.protect?.policy[rule] || common_1.ProtectRuleMode.OFF;
157
159
  if (mode === common_1.ProtectRuleMode.OFF)
158
160
  return;
159
161
  if (rule === common_1.Rule.BOT_BLOCKER) {
160
162
  const level = this.loggerConfig.syslog.severity_blocked;
161
163
  this.log(level, {
162
164
  bbi: 'Contrast Bot Blocker',
163
- ...this.buildMetadata(protect.reqData, 'success'),
165
+ ...this.buildMetadata(store.sourceInfo, 'success'),
164
166
  }, messages.botBlocker(result));
165
167
  return;
166
168
  }
@@ -193,25 +195,25 @@ class SecurityLogger extends base_1.default {
193
195
  }
194
196
  this.log(level, {
195
197
  pri: result.mappedId,
196
- ...this.buildMetadata(protect.reqData, outcome),
198
+ ...this.buildMetadata(store.sourceInfo, outcome),
197
199
  }, message(result));
198
200
  }
199
201
  async install() { }
200
202
  /* c8 ignore next 3 */
201
- handleAssessEvent(msg) {
203
+ handleAssessEvent(store) {
202
204
  // Assess NYI
203
205
  }
204
- handleProtectEvent(msg) {
205
- if (!msg.protect)
206
+ handleProtectEvent(store) {
207
+ if (!store.protect || !store.sourceInfo)
206
208
  return;
207
- const { protect } = msg;
209
+ const { protect, sourceInfo } = store;
208
210
  const virtualPatchResults = protect.resultsMap[common_1.Rule.VIRTUAL_PATCH];
209
211
  if (virtualPatchResults) {
210
212
  virtualPatchResults.forEach((result) => {
211
213
  const level = this.loggerConfig.syslog.severity_blocked;
212
214
  this.log(level, {
213
215
  vpi: result.uuid,
214
- ...this.buildMetadata(protect.reqData, 'success'),
216
+ ...this.buildMetadata(sourceInfo, 'success'),
215
217
  }, messages.virtualPatch(result));
216
218
  });
217
219
  }
@@ -221,24 +223,24 @@ class SecurityLogger extends base_1.default {
221
223
  const level = this.loggerConfig.syslog.severity_blocked;
222
224
  this.log(level, {
223
225
  bli: result.uuid,
224
- ...this.buildMetadata(protect.reqData, 'success'),
225
- }, messages.ipDenyList(protect.reqData.ip, result));
226
+ ...this.buildMetadata(sourceInfo, 'success'),
227
+ }, messages.ipDenyList(sourceInfo.ip, result));
226
228
  });
227
229
  }
228
230
  const { commonResultsMap, hardeningResultsMap, semanticResultsMap } = (0, common_1.groupResultsMap)(protect.resultsMap);
229
231
  Object.entries(commonResultsMap).forEach(([rule, results]) => {
230
232
  results.forEach((result) => {
231
- this.handleProtectResult(protect, rule, result);
233
+ this.handleProtectResult(store, rule, result);
232
234
  });
233
235
  });
234
236
  Object.entries(hardeningResultsMap).forEach(([rule, results]) => {
235
237
  results.forEach((result) => {
236
- this.handleProtectResult(protect, rule, result);
238
+ this.handleProtectResult(store, rule, result);
237
239
  });
238
240
  });
239
241
  Object.entries(semanticResultsMap).forEach(([rule, results]) => {
240
242
  results.forEach((result) => {
241
- this.handleProtectResult(protect, rule, result);
243
+ this.handleProtectResult(store, rule, result);
242
244
  });
243
245
  });
244
246
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/reporter",
3
- "version": "1.51.2",
3
+ "version": "1.53.0",
4
4
  "description": "Subscribes to agent messages and reports them",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
@@ -21,13 +21,13 @@
21
21
  "test": "bash ../scripts/test.sh"
22
22
  },
23
23
  "dependencies": {
24
- "@contrast/common": "1.34.2",
25
- "@contrast/config": "1.49.2",
26
- "@contrast/core": "1.54.2",
27
- "@contrast/logger": "1.27.2",
24
+ "@contrast/common": "1.35.0",
25
+ "@contrast/config": "1.50.0",
26
+ "@contrast/core": "1.55.0",
27
+ "@contrast/logger": "1.28.0",
28
28
  "@contrast/perf": "1.3.1",
29
- "@contrast/scopes": "1.24.2",
30
- "axios": "^1.7.4",
29
+ "@contrast/scopes": "1.25.0",
30
+ "axios": "^1.11.0",
31
31
  "crc-32": "^1.2.2",
32
32
  "safe-stable-stringify": "^2.4.1",
33
33
  "sonic-boom": "^3.2.0"
@@ -200,9 +200,9 @@ module.exports = function init(core) {
200
200
  parseSync('');
201
201
  } catch (cause) {
202
202
  // @ts-expect-error TS hates errors.
203
- throw cause.message === 'Bindings not found.'
203
+ throw cause.message === 'Failed to load native binding'
204
204
  ? new Error(
205
- `Contrast cannot detect the correct precompiled dependencies for the current environment: ${platform()}-${arch()}. This typically occurs when deploying an installation from one environment to a different execution environment.`,
205
+ `Contrast cannot detect the correct precompiled dependencies for the current environment: ${platform()}-${arch()}. This typically occurs when deploying an installation from one environment to a different execution environment or when the \`--omit=optional\` or \`--no-optional\` flags are provided to \`npm install\`.`,
206
206
  // @ts-expect-error `cause` requires ts to target es2022 or above, which corresponds to Node 17+, despite being added to Node in 16.9.
207
207
  { cause },
208
208
  )
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/rewriter",
3
- "version": "1.30.2",
3
+ "version": "1.31.0",
4
4
  "description": "A transpilation tool mainly used for instrumentation",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Contrast Security <nodejs@contrastsecurity.com> (https://www.contrastsecurity.com)",
@@ -20,11 +20,11 @@
20
20
  "test": "bash ../scripts/test.sh"
21
21
  },
22
22
  "dependencies": {
23
- "@contrast/agent-swc-plugin": "3.0.0",
24
- "@contrast/common": "1.34.2",
25
- "@contrast/config": "1.49.2",
26
- "@contrast/core": "1.54.2",
27
- "@contrast/logger": "1.27.2",
23
+ "@contrast/agent-swc-plugin": "3.1.0",
24
+ "@contrast/common": "1.35.0",
25
+ "@contrast/config": "1.50.0",
26
+ "@contrast/core": "1.55.0",
27
+ "@contrast/logger": "1.28.0",
28
28
  "@swc/core": "1.11.24"
29
29
  }
30
30
  }