@contrast/common 1.3.1 → 1.3.2

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.
@@ -4,7 +4,9 @@ export declare enum Event {
4
4
  LIBRARY_USAGE = "library-usage",
5
5
  ARCHITECTURE_COMPONENT = "architecture-component",
6
6
  SERVER_SETTINGS_UPDATE = "server-settings-update",
7
- ASSESS_DATAFLOW_FINDING = "assess-dataflow-findings"
7
+ ASSESS_DATAFLOW_FINDING = "assess-dataflow-findings",
8
+ ROUTE_COVERAGE_DISCOVERY = "router-coverage-discovery",
9
+ ROUTE_COVERAGE_OBSERVATION = "router-coverage-observation"
8
10
  }
9
11
  export declare enum ProtectRuleMode {
10
12
  OFF = "off",
package/lib/constants.js CHANGED
@@ -23,6 +23,8 @@ var Event;
23
23
  Event["ARCHITECTURE_COMPONENT"] = "architecture-component";
24
24
  Event["SERVER_SETTINGS_UPDATE"] = "server-settings-update";
25
25
  Event["ASSESS_DATAFLOW_FINDING"] = "assess-dataflow-findings";
26
+ Event["ROUTE_COVERAGE_DISCOVERY"] = "router-coverage-discovery";
27
+ Event["ROUTE_COVERAGE_OBSERVATION"] = "router-coverage-observation";
26
28
  })(Event = exports.Event || (exports.Event = {}));
27
29
  var ProtectRuleMode;
28
30
  (function (ProtectRuleMode) {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,IAAY,KAOX;AAPD,WAAY,KAAK;IACf,0BAAiB,CAAA;IACjB,4BAAmB,CAAA;IACnB,wCAA+B,CAAA;IAC/B,0DAAiD,CAAA;IACjD,0DAAiD,CAAA;IACjD,6DAAoD,CAAA;AACtD,CAAC,EAPW,KAAK,GAAL,aAAK,KAAL,aAAK,QAOhB;AACD,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,8BAAW,CAAA;IACX,sCAAmB,CAAA;IACnB,kCAAe,CAAA;IACf,4DAAyC,CAAA;AAC3C,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AAED,IAAY,IAmBX;AAnBD,WAAY,IAAI;IACd,mCAA2B,CAAA;IAC3B,uCAA+B,CAAA;IAC/B,2EAAmE,CAAA;IACnE,2FAAmF,CAAA;IACnF,yFAAiF,CAAA;IACjF,mCAA2B,CAAA;IAC3B,6CAAqC,CAAA;IACrC,2CAAmC,CAAA;IACnC,uDAA+C,CAAA;IAC/C,yCAAiC,CAAA;IACjC,qGAA6F,CAAA;IAC7F,uCAA+B,CAAA;IAC/B,uCAA+B,CAAA;IAC/B,yCAAiC,CAAA;IACjC,iDAAyC,CAAA;IACzC,+DAAuD,CAAA;IACvD,uCAA+B,CAAA;IAC/B,mBAAW,CAAA;AACb,CAAC,EAnBW,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAmBf;AAED,IAAY,SAuBX;AAvBD,WAAY,SAAS;IACnB,8CAAiC,CAAA;IACjC,0BAAa,CAAA;IACb,wCAA2B,CAAA;IAC3B,0CAA6B,CAAA;IAC7B,8BAAiB,CAAA;IACjB,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,wCAA2B,CAAA;IAC3B,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,sCAAyB,CAAA;IACzB,sDAAyC,CAAA;IACzC,8DAAiD,CAAA;IACjD,gDAAmC,CAAA;IACnC,0DAA6C,CAAA;IAC7C,8CAAiC,CAAA;IACjC,oCAAuB,CAAA;IACvB,oCAAuB,CAAA;IACvB,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;IACnB,4CAA+B,CAAA;IAC/B,gCAAmB,CAAA;AACrB,CAAC,EAvBW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAuBpB;AAEY,QAAA,cAAc,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,IAAY,KASX;AATD,WAAY,KAAK;IACf,0BAAiB,CAAA;IACjB,4BAAmB,CAAA;IACnB,wCAA+B,CAAA;IAC/B,0DAAiD,CAAA;IACjD,0DAAiD,CAAA;IACjD,6DAAoD,CAAA;IACpD,+DAAsD,CAAA;IACtD,mEAA0D,CAAA;AAC5D,CAAC,EATW,KAAK,GAAL,aAAK,KAAL,aAAK,QAShB;AAED,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,8BAAW,CAAA;IACX,sCAAmB,CAAA;IACnB,kCAAe,CAAA;IACf,4DAAyC,CAAA;AAC3C,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AAED,IAAY,IAmBX;AAnBD,WAAY,IAAI;IACd,mCAA2B,CAAA;IAC3B,uCAA+B,CAAA;IAC/B,2EAAmE,CAAA;IACnE,2FAAmF,CAAA;IACnF,yFAAiF,CAAA;IACjF,mCAA2B,CAAA;IAC3B,6CAAqC,CAAA;IACrC,2CAAmC,CAAA;IACnC,uDAA+C,CAAA;IAC/C,yCAAiC,CAAA;IACjC,qGAA6F,CAAA;IAC7F,uCAA+B,CAAA;IAC/B,uCAA+B,CAAA;IAC/B,yCAAiC,CAAA;IACjC,iDAAyC,CAAA;IACzC,+DAAuD,CAAA;IACvD,uCAA+B,CAAA;IAC/B,mBAAW,CAAA;AACb,CAAC,EAnBW,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAmBf;AAED,IAAY,SAuBX;AAvBD,WAAY,SAAS;IACnB,8CAAiC,CAAA;IACjC,0BAAa,CAAA;IACb,wCAA2B,CAAA;IAC3B,0CAA6B,CAAA;IAC7B,8BAAiB,CAAA;IACjB,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,wCAA2B,CAAA;IAC3B,wBAAW,CAAA;IACX,8BAAiB,CAAA;IACjB,sCAAyB,CAAA;IACzB,sDAAyC,CAAA;IACzC,8DAAiD,CAAA;IACjD,gDAAmC,CAAA;IACnC,0DAA6C,CAAA;IAC7C,8CAAiC,CAAA;IACjC,oCAAuB,CAAA;IACvB,oCAAuB,CAAA;IACvB,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;IACnB,4CAA+B,CAAA;IAC/B,gCAAmB,CAAA;AACrB,CAAC,EAvBW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAuBpB;AAEY,QAAA,cAAc,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC"}
package/lib/index.d.ts CHANGED
@@ -21,3 +21,18 @@ export declare function groupResultsMap(resultsMap: Partial<ResultMap>): {
21
21
  semanticResultsMap: Partial<SemanticAnalysisResultsMap>;
22
22
  serverFeaturesResultsMap: Partial<ServerFeaturePreliminaryResultsMap>;
23
23
  };
24
+ export declare function set(obj: Record<string, any>, name: string, value: any): void;
25
+ export declare function mergeRemoteData(config: Record<string, any>, remoteData: Record<string, any>, readers: Record<string, any>, setterFn: (target: Record<string, any>, name: string, value: any) => any, target?: Record<string, any>): Record<string, any>;
26
+ export declare const featureReaders: {
27
+ 'agent.logger.level': (remoteData: any) => any;
28
+ 'agent.logger.path': (remoteData: any) => any;
29
+ 'agent.security_logger.syslog.enable': (remoteData: any) => any;
30
+ 'agent.security_logger.syslog.ip': (remoteData: any) => any;
31
+ 'agent.security_logger.syslog.port': (remoteData: any) => any;
32
+ 'agent.security_logger.syslog.facility': (remoteData: any) => any;
33
+ 'agent.security_logger.syslog.severity_exploited': (remoteData: any) => any;
34
+ 'agent.security_logger.syslog.severity_blocked': (remoteData: any) => any;
35
+ 'agent.security_logger.syslog.severity_probed': (remoteData: any) => any;
36
+ 'agent.security_logger.syslog.severity_suspicious': (remoteData: any) => any;
37
+ };
38
+ export declare const settingsReaders: {};
package/lib/index.js CHANGED
@@ -28,7 +28,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
28
28
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.groupResultsMap = exports.callChildComponentMethodsSync = exports.traverseKeys = exports.traverseValues = exports.traverseKeysAndValues = exports.encodeString = exports.isNonEmptyObject = exports.isString = void 0;
31
+ exports.settingsReaders = exports.featureReaders = exports.mergeRemoteData = exports.set = exports.groupResultsMap = exports.callChildComponentMethodsSync = exports.traverseKeys = exports.traverseValues = exports.traverseKeysAndValues = exports.encodeString = exports.isNonEmptyObject = exports.isString = void 0;
32
32
  const constants_1 = require("./constants");
33
33
  __exportStar(require("./constants"), exports);
34
34
  __exportStar(require("./types"), exports);
@@ -167,4 +167,67 @@ function groupResultsMap(resultsMap) {
167
167
  return result;
168
168
  }
169
169
  exports.groupResultsMap = groupResultsMap;
170
+ function set(obj, name, value) {
171
+ const props = name.split('.');
172
+ const lastProp = props.pop();
173
+ for (const p of props) {
174
+ if (!obj[p])
175
+ obj[p] = {};
176
+ obj = obj[p];
177
+ }
178
+ obj[lastProp] = value;
179
+ }
180
+ exports.set = set;
181
+ function mergeRemoteData(config, remoteData, readers, setterFn, target) {
182
+ const targetConfig = target || config;
183
+ for (const [name, readerFn] of Object.entries(readers)) {
184
+ const remoteValue = readerFn(remoteData);
185
+ if (['DEFAULT', 'ContrastUI'].includes(config._sources[name]) && remoteValue != null) {
186
+ setterFn(targetConfig, name, remoteValue);
187
+ }
188
+ }
189
+ return targetConfig;
190
+ }
191
+ exports.mergeRemoteData = mergeRemoteData;
192
+ exports.featureReaders = {
193
+ 'agent.logger.level': (remoteData) => remoteData.features?.logLevel,
194
+ 'agent.logger.path': (remoteData) => remoteData.features?.logFile,
195
+ 'agent.security_logger.syslog.enable': (remoteData) => remoteData.features?.defend?.syslog?.syslogEnabled,
196
+ 'agent.security_logger.syslog.ip': (remoteData) => remoteData.features?.defend?.syslog?.syslogIpAddress,
197
+ 'agent.security_logger.syslog.port': (remoteData) => remoteData.features?.defend?.syslog?.syslogPortNumber,
198
+ 'agent.security_logger.syslog.facility': (remoteData) => remoteData.features?.defend?.syslog?.syslogFacilityCode,
199
+ 'agent.security_logger.syslog.severity_exploited': (remoteData) => remoteData.features?.defend?.syslog?.syslogSeverityExploited,
200
+ 'agent.security_logger.syslog.severity_blocked': (remoteData) => remoteData.features?.defend?.syslog?.syslogSeverityBlocked,
201
+ 'agent.security_logger.syslog.severity_probed': (remoteData) => remoteData.features?.defend?.syslog?.syslogSeverityProbed,
202
+ 'agent.security_logger.syslog.severity_suspicious': (remoteData) => remoteData.features?.defend?.syslog?.syslogSeveritySuspicious,
203
+ };
204
+ exports.settingsReaders = [
205
+ 'protect.rules.cmd-injection.mode',
206
+ 'protect.rules.cmd-injection-command-backdoors.mode',
207
+ 'protect.rules.cmd-injection-semantic-chained-commands.mode',
208
+ 'protect.rules.cmd-injection-semantic-dangerous-paths.mode',
209
+ 'protect.rules.method-tampering.mode',
210
+ 'protect.rules.nosql-injection.mode',
211
+ 'protect.rules.nosql-injection-mongo.mode',
212
+ 'protect.rules.path-traversal.mode',
213
+ 'protect.rules.path-traversal-semantic-file-security-bypass.mode',
214
+ 'protect.rules.reflected-xss.mode',
215
+ 'protect.rules.sql-injection.mode',
216
+ 'protect.rules.ssjs-injection.mode',
217
+ 'protect.rules.unsafe-file-upload.mode',
218
+ 'protect.rules.untrusted-deserialization.mode',
219
+ 'protect.rules.xxe.mode',
220
+ ].reduce((acc, name) => {
221
+ const ruleId = name.split('.')[2];
222
+ return Object.assign(acc, {
223
+ [name]: (remoteData) => {
224
+ const remoteSetting = remoteData.settings?.defend?.protectionRules?.find((r) => r.id == ruleId);
225
+ switch (remoteSetting?.mode) {
226
+ case 'OFF': return constants_1.ProtectRuleMode.OFF;
227
+ case 'MONITORING': return constants_1.ProtectRuleMode.MONITOR;
228
+ case 'BLOCKING': return remoteSetting.blockAtEntry ? constants_1.ProtectRuleMode.BLOCK_AT_PERIMETER : constants_1.ProtectRuleMode.BLOCK;
229
+ }
230
+ }
231
+ });
232
+ }, {});
170
233
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contrast/common",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
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)",
package/src/constants.ts CHANGED
@@ -20,7 +20,10 @@ export enum Event {
20
20
  ARCHITECTURE_COMPONENT = 'architecture-component',
21
21
  SERVER_SETTINGS_UPDATE = 'server-settings-update',
22
22
  ASSESS_DATAFLOW_FINDING = 'assess-dataflow-findings',
23
+ ROUTE_COVERAGE_DISCOVERY = 'router-coverage-discovery',
24
+ ROUTE_COVERAGE_OBSERVATION = 'router-coverage-observation'
23
25
  }
26
+
24
27
  export enum ProtectRuleMode {
25
28
  OFF = 'off',
26
29
  MONITOR = 'monitor',
@@ -75,3 +78,4 @@ export enum InputType {
75
78
  }
76
79
 
77
80
  export const BLOCKING_MODES = ['block', 'block_at_perimeter'];
81
+
package/src/index.ts CHANGED
@@ -13,7 +13,7 @@
13
13
  * way not consistent with the End User License Agreement.
14
14
  */
15
15
 
16
- import { Rule } from './constants';
16
+ import { Rule, ProtectRuleMode } from './constants';
17
17
  import { CommonRulesResultsMap, HardeningResultsMap, ResultMap, SemanticAnalysisResultsMap, ServerFeaturePreliminaryResultsMap } from './types';
18
18
 
19
19
  export * from './constants';
@@ -178,3 +178,74 @@ export function groupResultsMap (resultsMap: Partial<ResultMap>) {
178
178
 
179
179
  return result;
180
180
  }
181
+
182
+ export function set(obj: Record<string, any>, name: string, value: any) {
183
+ const props = name.split('.');
184
+ const lastProp = props.pop() as string;
185
+ for (const p of props) {
186
+ if (!obj[p]) obj[p] = {};
187
+ obj = obj[p];
188
+ }
189
+ obj[lastProp] = value;
190
+ }
191
+
192
+ export function mergeRemoteData(
193
+ config: Record<string, any>,
194
+ remoteData: Record<string, any>,
195
+ readers: Record<string, any>,
196
+ setterFn: (target: Record<string, any>, name: string, value: any) => any,
197
+ target?: Record<string, any>
198
+ ) {
199
+ const targetConfig = target || config;
200
+ for (const [name, readerFn] of Object.entries(readers)) {
201
+ const remoteValue = readerFn(remoteData);
202
+ if (['DEFAULT', 'ContrastUI'].includes(config._sources[name]) && remoteValue != null) {
203
+ setterFn(targetConfig, name, remoteValue);
204
+ }
205
+ }
206
+
207
+ return targetConfig;
208
+ }
209
+
210
+ export const featureReaders = {
211
+ 'agent.logger.level': (remoteData: any) => remoteData.features?.logLevel,
212
+ 'agent.logger.path': (remoteData: any) => remoteData.features?.logFile,
213
+ 'agent.security_logger.syslog.enable': (remoteData: any) => remoteData.features?.defend?.syslog?.syslogEnabled,
214
+ 'agent.security_logger.syslog.ip': (remoteData: any) => remoteData.features?.defend?.syslog?.syslogIpAddress,
215
+ 'agent.security_logger.syslog.port': (remoteData: any) => remoteData.features?.defend?.syslog?.syslogPortNumber,
216
+ 'agent.security_logger.syslog.facility': (remoteData: any) => remoteData.features?.defend?.syslog?.syslogFacilityCode,
217
+ 'agent.security_logger.syslog.severity_exploited': (remoteData: any) => remoteData.features?.defend?.syslog?.syslogSeverityExploited,
218
+ 'agent.security_logger.syslog.severity_blocked': (remoteData: any) => remoteData.features?.defend?.syslog?.syslogSeverityBlocked,
219
+ 'agent.security_logger.syslog.severity_probed': (remoteData: any) => remoteData.features?.defend?.syslog?.syslogSeverityProbed,
220
+ 'agent.security_logger.syslog.severity_suspicious': (remoteData: any) => remoteData.features?.defend?.syslog?.syslogSeveritySuspicious,
221
+ };
222
+
223
+ export const settingsReaders = [
224
+ 'protect.rules.cmd-injection.mode',
225
+ 'protect.rules.cmd-injection-command-backdoors.mode',
226
+ 'protect.rules.cmd-injection-semantic-chained-commands.mode',
227
+ 'protect.rules.cmd-injection-semantic-dangerous-paths.mode',
228
+ 'protect.rules.method-tampering.mode',
229
+ 'protect.rules.nosql-injection.mode',
230
+ 'protect.rules.nosql-injection-mongo.mode',
231
+ 'protect.rules.path-traversal.mode',
232
+ 'protect.rules.path-traversal-semantic-file-security-bypass.mode',
233
+ 'protect.rules.reflected-xss.mode',
234
+ 'protect.rules.sql-injection.mode',
235
+ 'protect.rules.ssjs-injection.mode',
236
+ 'protect.rules.unsafe-file-upload.mode',
237
+ 'protect.rules.untrusted-deserialization.mode',
238
+ 'protect.rules.xxe.mode',
239
+ ].reduce((acc, name) => {
240
+ const ruleId = name.split('.')[2];
241
+ return Object.assign(acc, {
242
+ [name]: (remoteData: any) => {
243
+ const remoteSetting = remoteData.settings?.defend?.protectionRules?.find((r: any) => r.id == ruleId);
244
+ switch (remoteSetting?.mode) {
245
+ case 'OFF': return ProtectRuleMode.OFF;
246
+ case 'MONITORING': return ProtectRuleMode.MONITOR;
247
+ case 'BLOCKING': return remoteSetting.blockAtEntry ? ProtectRuleMode.BLOCK_AT_PERIMETER : ProtectRuleMode.BLOCK;
248
+ }
249
+ }
250
+ });
251
+ }, {});