@contrast/assess 1.36.0 → 1.38.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 (91) hide show
  1. package/lib/crypto-analysis/install/crypto.js +1 -1
  2. package/lib/dataflow/propagation/install/JSON/parse.js +1 -0
  3. package/lib/dataflow/propagation/install/JSON/stringify.js +1 -0
  4. package/lib/dataflow/propagation/install/array-prototype-join.js +1 -0
  5. package/lib/dataflow/propagation/install/buffer.js +1 -0
  6. package/lib/dataflow/propagation/install/contrast-methods/number.js +1 -0
  7. package/lib/dataflow/propagation/install/contrast-methods/string.js +1 -0
  8. package/lib/dataflow/propagation/install/contrast-methods/tag.js +1 -0
  9. package/lib/dataflow/propagation/install/decode-uri-component.js +1 -0
  10. package/lib/dataflow/propagation/install/ejs/escape-xml.js +1 -0
  11. package/lib/dataflow/propagation/install/ejs/template.js +1 -0
  12. package/lib/dataflow/propagation/install/encode-uri.js +1 -0
  13. package/lib/dataflow/propagation/install/escape-html.js +1 -0
  14. package/lib/dataflow/propagation/install/escape.js +1 -0
  15. package/lib/dataflow/propagation/install/fastify-send.js +1 -0
  16. package/lib/dataflow/propagation/install/handlebars-utils-escape-expression.js +1 -0
  17. package/lib/dataflow/propagation/install/isnumeric-0.js +1 -0
  18. package/lib/dataflow/propagation/install/joi/boolean.js +2 -1
  19. package/lib/dataflow/propagation/install/joi/expression.js +2 -1
  20. package/lib/dataflow/propagation/install/joi/index.js +3 -1
  21. package/lib/dataflow/propagation/install/joi/keys.js +1 -0
  22. package/lib/dataflow/propagation/install/joi/number.js +2 -1
  23. package/lib/dataflow/propagation/install/joi/string-schema.js +3 -1
  24. package/lib/dataflow/propagation/install/joi/values.js +2 -1
  25. package/lib/dataflow/propagation/install/mongoose/schema-map.js +2 -0
  26. package/lib/dataflow/propagation/install/mongoose/schema-mixed.js +2 -0
  27. package/lib/dataflow/propagation/install/mongoose/schema-string.js +101 -1
  28. package/lib/dataflow/propagation/install/mongoose/schema-string.test.js +41 -2
  29. package/lib/dataflow/propagation/install/mustache-escape.js +1 -0
  30. package/lib/dataflow/propagation/install/mysql-connection-escape.js +3 -0
  31. package/lib/dataflow/propagation/install/parse-int.js +1 -0
  32. package/lib/dataflow/propagation/install/path/basename.js +1 -0
  33. package/lib/dataflow/propagation/install/path/dirname.js +1 -0
  34. package/lib/dataflow/propagation/install/path/extname.js +1 -0
  35. package/lib/dataflow/propagation/install/path/format.js +1 -0
  36. package/lib/dataflow/propagation/install/path/join-and-resolve.js +1 -0
  37. package/lib/dataflow/propagation/install/path/normalize.js +1 -0
  38. package/lib/dataflow/propagation/install/path/parse.js +2 -1
  39. package/lib/dataflow/propagation/install/path/relative.js +1 -0
  40. package/lib/dataflow/propagation/install/path/toNamespacedPath.js +1 -0
  41. package/lib/dataflow/propagation/install/pug/index.js +1 -0
  42. package/lib/dataflow/propagation/install/pug-runtime-escape.js +1 -0
  43. package/lib/dataflow/propagation/install/querystring/escape.js +2 -1
  44. package/lib/dataflow/propagation/install/querystring/parse.js +1 -0
  45. package/lib/dataflow/propagation/install/querystring/stringify.js +2 -1
  46. package/lib/dataflow/propagation/install/reg-exp-prototype-exec.js +1 -0
  47. package/lib/dataflow/propagation/install/send.js +1 -0
  48. package/lib/dataflow/propagation/install/sequelize/query-generator.js +1 -0
  49. package/lib/dataflow/propagation/install/sequelize/sql-string.js +1 -0
  50. package/lib/dataflow/propagation/install/sql-template-strings.js +1 -0
  51. package/lib/dataflow/propagation/install/string/concat.js +1 -1
  52. package/lib/dataflow/propagation/install/string/format-methods.js +1 -1
  53. package/lib/dataflow/propagation/install/string/html-methods.js +1 -1
  54. package/lib/dataflow/propagation/install/string/index.js +1 -1
  55. package/lib/dataflow/propagation/install/string/match-all.js +1 -1
  56. package/lib/dataflow/propagation/install/string/match.js +1 -1
  57. package/lib/dataflow/propagation/install/string/replace.js +1 -1
  58. package/lib/dataflow/propagation/install/string/slice.js +1 -1
  59. package/lib/dataflow/propagation/install/string/split.js +1 -1
  60. package/lib/dataflow/propagation/install/string/substring.js +1 -1
  61. package/lib/dataflow/propagation/install/string/trim.js +3 -3
  62. package/lib/dataflow/propagation/install/unescape.js +1 -0
  63. package/lib/dataflow/propagation/install/url/domain-parsers.js +1 -0
  64. package/lib/dataflow/propagation/install/url/parse.js +2 -1
  65. package/lib/dataflow/propagation/install/url/searchParams.js +3 -1
  66. package/lib/dataflow/propagation/install/url/url.js +2 -1
  67. package/lib/dataflow/propagation/install/util-format.js +1 -0
  68. package/lib/dataflow/propagation/install/validator/hooks.js +2 -0
  69. package/lib/dataflow/sinks/install/child-process.js +1 -1
  70. package/lib/dataflow/sinks/install/express/unvalidated-redirect.js +1 -1
  71. package/lib/dataflow/sinks/install/fastify/unvalidated-redirect.js +1 -1
  72. package/lib/dataflow/sinks/install/fs-original.js +170 -0
  73. package/lib/dataflow/sinks/install/fs.js +1 -1
  74. package/lib/dataflow/sinks/install/function.js +1 -1
  75. package/lib/dataflow/sinks/install/hapi/unvalidated-redirect.js +1 -1
  76. package/lib/dataflow/sinks/install/http/request.js +1 -1
  77. package/lib/dataflow/sinks/install/koa/unvalidated-redirect.js +1 -1
  78. package/lib/dataflow/sinks/install/libxmljs.js +1 -1
  79. package/lib/dataflow/sinks/install/marsdb.js +1 -1
  80. package/lib/dataflow/sinks/install/mongodb.js +1 -1
  81. package/lib/dataflow/sinks/install/mysql.js +1 -1
  82. package/lib/dataflow/sinks/install/postgres.js +1 -1
  83. package/lib/dataflow/sinks/install/sequelize.js +1 -1
  84. package/lib/dataflow/sinks/install/vm.js +1 -1
  85. package/lib/sampler.js +1 -1
  86. package/lib/sampler.test.js +10 -5
  87. package/lib/session-configuration/install/express-session.js +1 -1
  88. package/lib/session-configuration/install/fastify-cookie.js +1 -1
  89. package/lib/session-configuration/install/hapi.js +1 -1
  90. package/lib/session-configuration/install/koa.js +1 -1
  91. package/package.json +9 -9
@@ -42,7 +42,7 @@ module.exports = function(core) {
42
42
  depHooks,
43
43
  patcher,
44
44
  assess: {
45
- inspect, // todo: remove
45
+ inspect, // TODO NODE-3455: remove
46
46
  getSourceContext,
47
47
  eventFactory: { createSinkEvent },
48
48
  dataflow: {
@@ -41,7 +41,7 @@ module.exports = function (core) {
41
41
  patcher,
42
42
  config,
43
43
  assess: {
44
- inspect, // todo: remove
44
+ inspect, // TODO NODE-3455: remove
45
45
  getSourceContext,
46
46
  eventFactory: { createSinkEvent },
47
47
  dataflow: {
@@ -57,7 +57,7 @@ module.exports = function (core) {
57
57
  depHooks,
58
58
  patcher,
59
59
  assess: {
60
- inspect, // todo: remove
60
+ inspect, // TODO NODE-3455: remove
61
61
  getSourceContext,
62
62
  eventFactory: { createSinkEvent },
63
63
  dataflow: {
package/lib/sampler.js CHANGED
@@ -71,9 +71,9 @@ module.exports = function assess(core) {
71
71
  assess.sampler = SamplerFactory[strategy](opts);
72
72
  }
73
73
  } else {
74
+ if (assess.sampler) logger.info('assess sampling disabled');
74
75
  // disable sampling by setting sampler to null
75
76
  assess.sampler = null;
76
- logger.info('assess sampling disabled');
77
77
  }
78
78
  }
79
79
 
@@ -4,6 +4,7 @@ const { EventEmitter } = require('events');
4
4
  const { expect } = require('chai');
5
5
  const { Event } = require('@contrast/common');
6
6
  const mocks = require('@contrast/test/mocks');
7
+ const { devNull } = require('node:os');
7
8
 
8
9
  const TRIALS = 1000;
9
10
  const ZSCORE = 3.891; // 99.99% confidence
@@ -135,7 +136,11 @@ describe('assess sampler', function() {
135
136
 
136
137
  it('sampler behavior adjusts to series of TS updates', function() {
137
138
  // setup
139
+ const cfgPath = process.env.CONTRAST_CONFIG_PATH;
140
+ process.env.CONTRAST_CONFIG_PATH = devNull;
138
141
  const core = initMockCore();
142
+ process.env.CONTRAST_CONFIG_PATH = cfgPath;
143
+
139
144
  core.config.setValue('assess.enable', true, 'CONTRAST_UI');
140
145
  core.config.setValue('assess.probabilistic_sampling.enable', false, 'DEFAULT_VALUE');
141
146
  core.config.setValue('assess.probabilistic_sampling.base_probability', 0.50, 'CONTRAST_UI');
@@ -193,8 +198,6 @@ describe('assess sampler', function() {
193
198
 
194
199
  // test logging throughout init/updates
195
200
  expect(core.logger.info.getCalls().map(c => c.args)).to.deep.equal([
196
- // when initialized
197
- ['assess sampling disabled'],
198
201
  // update 1: env=PRODUCTION enables sampling
199
202
  [
200
203
  { strategy: 'probabilistic', opts: { base_probability: 0.5 } },
@@ -218,11 +221,11 @@ describe('assess sampler', function() {
218
221
 
219
222
  function initMockCore() {
220
223
  const { CONTRAST_CONFIG_PATH } = process.env;
224
+ process.env.CONTRAST_CONFIG_PATH = devNull;
225
+
221
226
  let core;
222
227
 
223
228
  try {
224
- // ensure default config if devs use this
225
- process.env.CONTRAST_CONFIG_PATH = '';
226
229
  core = {
227
230
  // sampler needs this namespace to exist
228
231
  assess: {},
@@ -235,12 +238,14 @@ function initMockCore() {
235
238
  require('@contrast/config')(core);
236
239
  core.config.setValue('assess.enable', true, 'CONTRAST_UI');
237
240
  } catch (err) {
241
+ process.env.CONTRAST_CONFIG_PATH = CONTRAST_CONFIG_PATH;
242
+
238
243
  console.dir(err);
239
244
  throw err;
240
245
  }
241
246
 
242
247
  // reset to orig value
243
- if (CONTRAST_CONFIG_PATH) process.env.CONTRAST_CONFIG_PATH = CONTRAST_CONFIG_PATH;
248
+ process.env.CONTRAST_CONFIG_PATH = CONTRAST_CONFIG_PATH;
244
249
 
245
250
  return core;
246
251
  }
@@ -26,7 +26,7 @@ const { patchType } = require('../common');
26
26
  module.exports = function (core) {
27
27
  const {
28
28
  assess: {
29
- inspect, // todo: remove
29
+ inspect, // TODO NODE-3455: remove
30
30
  getSourceContext,
31
31
  eventFactory: { createSessionEvent },
32
32
  sessionConfiguration: {
@@ -26,7 +26,7 @@ const { patchType } = require('../common');
26
26
  module.exports = function (core) {
27
27
  const {
28
28
  assess: {
29
- inspect, // todo: remove
29
+ inspect, // TODO NODE-3455: remove
30
30
  getSourceContext,
31
31
  eventFactory: { createSessionEvent },
32
32
  sessionConfiguration: {
@@ -19,7 +19,7 @@ const { patchType } = require('../common');
19
19
  module.exports = function (core) {
20
20
  const {
21
21
  assess: {
22
- inspect, // todo: remove
22
+ inspect, // TODO NODE-3455: remove
23
23
  eventFactory: { createSessionEvent },
24
24
  sessionConfiguration: {
25
25
  handleHttpOnly,
@@ -25,7 +25,7 @@ const { patchType } = require('../common');
25
25
  module.exports = function (core) {
26
26
  const {
27
27
  assess: {
28
- inspect, // todo: remove
28
+ inspect, // TODO NODE-3455: remove
29
29
  getSourceContext,
30
30
  eventFactory: { createSessionEvent },
31
31
  sessionConfiguration: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/assess",
3
- "version": "1.36.0",
3
+ "version": "1.38.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)",
@@ -18,15 +18,15 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@contrast/common": "1.26.0",
21
- "@contrast/config": "1.34.0",
22
- "@contrast/core": "1.38.0",
23
- "@contrast/dep-hooks": "1.6.0",
21
+ "@contrast/config": "1.35.0",
22
+ "@contrast/core": "1.40.0",
23
+ "@contrast/dep-hooks": "1.8.0",
24
24
  "@contrast/distringuish": "^5.1.0",
25
- "@contrast/instrumentation": "1.16.0",
26
- "@contrast/logger": "1.11.0",
27
- "@contrast/patcher": "1.10.0",
28
- "@contrast/rewriter": "1.14.0",
29
- "@contrast/scopes": "1.7.0",
25
+ "@contrast/instrumentation": "1.18.0",
26
+ "@contrast/logger": "1.13.0",
27
+ "@contrast/patcher": "1.12.0",
28
+ "@contrast/rewriter": "1.16.0",
29
+ "@contrast/scopes": "1.9.0",
30
30
  "semver": "^7.6.0"
31
31
  }
32
32
  }