snyk 1.901.0 → 1.904.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 (63) hide show
  1. package/dist/cli/450.index.js +2 -2
  2. package/dist/cli/450.index.js.map +1 -1
  3. package/dist/cli/{716.index.js → 519.index.js} +20 -20
  4. package/dist/cli/519.index.js.map +1 -0
  5. package/dist/cli/784.index.js +3 -6
  6. package/dist/cli/784.index.js.map +1 -1
  7. package/dist/cli/874.index.js +3 -3
  8. package/dist/cli/874.index.js.map +1 -1
  9. package/dist/cli/{459.index.js → 895.index.js} +14 -13
  10. package/dist/cli/895.index.js.map +1 -0
  11. package/dist/cli/917.index.js +418 -152
  12. package/dist/cli/917.index.js.map +1 -1
  13. package/dist/cli/99.index.js +2 -2
  14. package/dist/cli/99.index.js.map +1 -1
  15. package/dist/cli/commands/test/iac/index.d.ts +3 -0
  16. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/analytics.d.ts +1 -1
  17. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/assert-iac-options-flag.d.ts +1 -1
  18. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/directory-loader.d.ts +0 -0
  19. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/error-utils.d.ts +0 -0
  20. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/extract-line-number.d.ts +0 -0
  21. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/file-loader.d.ts +1 -1
  22. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/file-parser.d.ts +1 -1
  23. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/file-scanner.d.ts +1 -1
  24. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/file-utils.d.ts +0 -0
  25. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/index.d.ts +4 -0
  26. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/local-cache.d.ts +1 -1
  27. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/math-utils.d.ts +0 -0
  28. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/measurable-methods.d.ts +0 -0
  29. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/oci-pull.d.ts +1 -1
  30. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/org-settings/apply-custom-severities.d.ts +0 -0
  31. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/org-settings/get-iac-org-settings.d.ts +1 -1
  32. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/parsers/config-type-detection.d.ts +0 -0
  33. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/parsers/hcl-to-json/index.d.ts +0 -0
  34. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/parsers/hcl-to-json-v2/index.d.ts +0 -0
  35. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/parsers/terraform-file-parser.d.ts +1 -1
  36. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/parsers/terraform-plan-parser.d.ts +1 -1
  37. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/process-results/index.d.ts +2 -2
  38. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/process-results/policy.d.ts +1 -1
  39. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/process-results/results-formatter.d.ts +2 -2
  40. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/process-results/share-results-formatter.d.ts +0 -0
  41. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/process-results/share-results.d.ts +2 -2
  42. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/rules.d.ts +1 -1
  43. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/types.d.ts +7 -5
  44. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/url-utils.d.ts +0 -0
  45. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/usage-tracking.d.ts +1 -1
  46. package/dist/cli/commands/test/{iac-local-execution → iac/local-execution}/yaml-parser.d.ts +1 -1
  47. package/dist/cli/index.js +7 -6
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/lib/formatters/iac-output/v2/index.d.ts +1 -1
  50. package/dist/lib/iac/cli-share-results.d.ts +1 -1
  51. package/dist/lib/iac/envelope-formatters.d.ts +1 -1
  52. package/dist/lib/types.d.ts +1 -0
  53. package/help/cli-commands/config.md +1 -1
  54. package/help/cli-commands/container.md +10 -8
  55. package/help/cli-commands/iac-describe.md +8 -6
  56. package/help/cli-commands/iac-test.md +14 -6
  57. package/help/cli-commands/ignore.md +2 -2
  58. package/help/cli-commands/log4shell.md +4 -2
  59. package/help/cli-commands/monitor.md +20 -12
  60. package/help/cli-commands/test.md +19 -11
  61. package/package.json +1 -1
  62. package/dist/cli/459.index.js.map +0 -1
  63. package/dist/cli/716.index.js.map +0 -1
@@ -10,8 +10,8 @@ exports.modules = {
10
10
  Object.defineProperty(exports, "__esModule", ({ value: true }));
11
11
  exports.UnsupportedReportCommandError = void 0;
12
12
  const errors_1 = __webpack_require__(55191);
13
- const error_utils_1 = __webpack_require__(23872);
14
- const types_1 = __webpack_require__(42258);
13
+ const error_utils_1 = __webpack_require__(36401);
14
+ const types_1 = __webpack_require__(94820);
15
15
  class UnsupportedReportCommandError extends errors_1.CustomError {
16
16
  constructor(message) {
17
17
  super(message || 'Command "report" is only supported for IaC');
@@ -1 +1 @@
1
- {"version":3,"file":"450.index.js","mappings":";;;;;;;;;;;AAAA,4CAAqD;AACrD,iDAAgF;AAChF,2CAAqE;AAErE,MAAa,6BAA8B,SAAQ,oBAAW;IAC5D,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,IAAI,4CAA4C,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,qBAAa,CAAC,6BAA6B,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,gCAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW;YACd,wEAAwE,CAAC;IAC7E,CAAC;CACF;AARD,sEAQC;;;;;;;;;;ACTD,0CAA2B;AAC3B,mDAA4D;AAE5D,4CAAkE;AAClE,0DAA6D;AAC7D,gEAAoF;AAErE,KAAK,UAAU,MAAM,CAClC,GAAG,IAAgB;IAEnB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,yCAAkB,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;QACvB,MAAM,IAAI,0DAA6B,EAAE,CAAC;KAC3C;IAED,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAEtB,OAAO,MAAM,cAAI,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAdD,yBAcC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAqB;IACxD,MAAM,iBAAiB,GAAG,MAAM,8BAAc,CAC5C,oBAAoB,EACpB,OAAkB,CACnB,CAAC;IACF,IAAI,CAAC,iBAAiB,EAAE;QACtB,MAAM,IAAI,oCAA2B,CAAC,oBAAoB,CAAC,CAAC;KAC7D;AACH,CAAC","sources":["webpack://snyk/./src/cli/commands/report/errors/unsupported-report-command.ts","webpack://snyk/./src/cli/commands/report/index.ts"],"sourcesContent":["import { CustomError } from '../../../../lib/errors';\nimport { getErrorStringCode } from '../../test/iac-local-execution/error-utils';\nimport { IaCErrorCodes } from '../../test/iac-local-execution/types';\n\nexport class UnsupportedReportCommandError extends CustomError {\n constructor(message?: string) {\n super(message || 'Command \"report\" is only supported for IaC');\n this.code = IaCErrorCodes.UnsupportedReportCommandError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n '\"report\" is not a supported command. Did you mean to use \"iac report\"?';\n }\n}\n","import { MethodArgs } from '../../args';\nimport { IaCTestFlags } from '../test/iac-local-execution/types';\nimport { TestCommandResult } from '../types';\nimport test from '../test';\nimport { hasFeatureFlag } from '../../../lib/feature-flags';\nimport { Options } from '../../../lib/types';\nimport { UnsupportedFeatureFlagError } from '../../../lib/errors';\nimport { processCommandArgs } from '../process-command-args';\nimport { UnsupportedReportCommandError } from './errors/unsupported-report-command';\n\nexport default async function report(\n ...args: MethodArgs\n): Promise<TestCommandResult> {\n const { paths, options } = processCommandArgs(...args);\n\n if (options.iac != true) {\n throw new UnsupportedReportCommandError();\n }\n\n await assertReportSupported(options);\n\n options.report = true;\n\n return await test(...paths, options);\n}\n\nasync function assertReportSupported(options: IaCTestFlags) {\n const isReportSupported = await hasFeatureFlag(\n 'iacCliShareResults',\n options as Options,\n );\n if (!isReportSupported) {\n throw new UnsupportedFeatureFlagError('iacCliShareResults');\n }\n}\n"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"450.index.js","mappings":";;;;;;;;;;;AAAA,4CAAqD;AACrD,iDAAgF;AAChF,2CAAqE;AAErE,MAAa,6BAA8B,SAAQ,oBAAW;IAC5D,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,IAAI,4CAA4C,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,qBAAa,CAAC,6BAA6B,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,gCAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW;YACd,wEAAwE,CAAC;IAC7E,CAAC;CACF;AARD,sEAQC;;;;;;;;;;ACTD,0CAA2B;AAC3B,mDAA4D;AAE5D,4CAAkE;AAClE,0DAA6D;AAC7D,gEAAoF;AAErE,KAAK,UAAU,MAAM,CAClC,GAAG,IAAgB;IAEnB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,yCAAkB,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;QACvB,MAAM,IAAI,0DAA6B,EAAE,CAAC;KAC3C;IAED,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAEtB,OAAO,MAAM,cAAI,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAdD,yBAcC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAqB;IACxD,MAAM,iBAAiB,GAAG,MAAM,8BAAc,CAC5C,oBAAoB,EACpB,OAAkB,CACnB,CAAC;IACF,IAAI,CAAC,iBAAiB,EAAE;QACtB,MAAM,IAAI,oCAA2B,CAAC,oBAAoB,CAAC,CAAC;KAC7D;AACH,CAAC","sources":["webpack://snyk/./src/cli/commands/report/errors/unsupported-report-command.ts","webpack://snyk/./src/cli/commands/report/index.ts"],"sourcesContent":["import { CustomError } from '../../../../lib/errors';\nimport { getErrorStringCode } from '../../test/iac/local-execution/error-utils';\nimport { IaCErrorCodes } from '../../test/iac/local-execution/types';\n\nexport class UnsupportedReportCommandError extends CustomError {\n constructor(message?: string) {\n super(message || 'Command \"report\" is only supported for IaC');\n this.code = IaCErrorCodes.UnsupportedReportCommandError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n '\"report\" is not a supported command. Did you mean to use \"iac report\"?';\n }\n}\n","import { MethodArgs } from '../../args';\nimport { IaCTestFlags } from '../test/iac/local-execution/types';\nimport { TestCommandResult } from '../types';\nimport test from '../test';\nimport { hasFeatureFlag } from '../../../lib/feature-flags';\nimport { Options } from '../../../lib/types';\nimport { UnsupportedFeatureFlagError } from '../../../lib/errors';\nimport { processCommandArgs } from '../process-command-args';\nimport { UnsupportedReportCommandError } from './errors/unsupported-report-command';\n\nexport default async function report(\n ...args: MethodArgs\n): Promise<TestCommandResult> {\n const { paths, options } = processCommandArgs(...args);\n\n if (options.iac != true) {\n throw new UnsupportedReportCommandError();\n }\n\n await assertReportSupported(options);\n\n options.report = true;\n\n return await test(...paths, options);\n}\n\nasync function assertReportSupported(options: IaCTestFlags) {\n const isReportSupported = await hasFeatureFlag(\n 'iacCliShareResults',\n options as Options,\n );\n if (!isReportSupported) {\n throw new UnsupportedFeatureFlagError('iacCliShareResults');\n }\n}\n"],"names":[],"sourceRoot":""}
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
- exports.id = 716;
3
- exports.ids = [716];
2
+ exports.id = 519;
3
+ exports.ids = [519];
4
4
  exports.modules = {
5
5
 
6
- /***/ 22716:
6
+ /***/ 41519:
7
7
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "__esModule", ({ value: true }));
11
11
  exports.addIacDriftAnalytics = exports.performanceAnalyticsObject = exports.addIacAnalytics = void 0;
12
- const types_1 = __webpack_require__(42258);
12
+ const types_1 = __webpack_require__(94820);
13
13
  const analytics = __webpack_require__(82744);
14
- const math_utils_1 = __webpack_require__(48537);
15
- const file_utils_1 = __webpack_require__(58486);
14
+ const math_utils_1 = __webpack_require__(42095);
15
+ const file_utils_1 = __webpack_require__(45281);
16
16
  const drift_1 = __webpack_require__(26445);
17
17
  function addIacAnalytics(formattedResults, opts) {
18
18
  let totalIssuesCount = 0;
@@ -93,7 +93,7 @@ exports.addIacDriftAnalytics = addIacDriftAnalytics;
93
93
 
94
94
  /***/ }),
95
95
 
96
- /***/ 58486:
96
+ /***/ 45281:
97
97
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
98
98
 
99
99
 
@@ -103,8 +103,8 @@ const fs = __webpack_require__(35747);
103
103
  const tar = __webpack_require__(97998);
104
104
  const path = __webpack_require__(85622);
105
105
  const crypto = __webpack_require__(76417);
106
- const local_cache_1 = __webpack_require__(6255);
107
- const oci_pull_1 = __webpack_require__(5029);
106
+ const local_cache_1 = __webpack_require__(50089);
107
+ const oci_pull_1 = __webpack_require__(584);
108
108
  const detect_1 = __webpack_require__(45318);
109
109
  const fs_1 = __webpack_require__(35747);
110
110
  const path_1 = __webpack_require__(85622);
@@ -229,7 +229,7 @@ exports.makeFileAndDirectoryGenerator = makeFileAndDirectoryGenerator;
229
229
 
230
230
  /***/ }),
231
231
 
232
- /***/ 6255:
232
+ /***/ 50089:
233
233
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
234
234
 
235
235
 
@@ -237,14 +237,14 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
237
237
  exports.InvalidCustomRulesPath = exports.InvalidCustomRules = exports.FailedToExtractCustomRulesError = exports.FailedToDownloadRulesError = exports.FailedToInitLocalCacheError = exports.cleanLocalCache = exports.initLocalCache = exports.getLocalCachePath = exports.assertNever = exports.CUSTOM_POLICY_ENGINE_WASM_PATH = exports.LOCAL_POLICY_ENGINE_DIR = void 0;
238
238
  const path = __webpack_require__(85622);
239
239
  const fs = __webpack_require__(35747);
240
- const types_1 = __webpack_require__(42258);
240
+ const types_1 = __webpack_require__(94820);
241
241
  const needle = __webpack_require__(64484);
242
242
  const rimraf = __webpack_require__(50984);
243
- const file_utils_1 = __webpack_require__(58486);
243
+ const file_utils_1 = __webpack_require__(45281);
244
244
  const Debug = __webpack_require__(15158);
245
245
  const errors_1 = __webpack_require__(55191);
246
246
  const analytics = __webpack_require__(82744);
247
- const error_utils_1 = __webpack_require__(23872);
247
+ const error_utils_1 = __webpack_require__(36401);
248
248
  const debug = Debug('iac-local-cache');
249
249
  exports.LOCAL_POLICY_ENGINE_DIR = '.iac-data';
250
250
  const KUBERNETES_POLICY_ENGINE_WASM_PATH = path.join(exports.LOCAL_POLICY_ENGINE_DIR, 'k8s_policy.wasm');
@@ -404,7 +404,7 @@ class FailedToCleanLocalCacheError extends errors_1.CustomError {
404
404
 
405
405
  /***/ }),
406
406
 
407
- /***/ 48537:
407
+ /***/ 42095:
408
408
  /***/ ((__unused_webpack_module, exports) => {
409
409
 
410
410
 
@@ -421,7 +421,7 @@ exports.calculatePercentage = (relativeValue, totalValue) => +(totalValue ? (rel
421
421
 
422
422
  /***/ }),
423
423
 
424
- /***/ 5029:
424
+ /***/ 584:
425
425
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
426
426
 
427
427
 
@@ -430,12 +430,12 @@ exports.UnsupportedEntitlementPullError = exports.InvalidRemoteRegistryURLError
430
430
  const registryClient = __webpack_require__(28310);
431
431
  const fs_1 = __webpack_require__(35747);
432
432
  const path = __webpack_require__(85622);
433
- const types_1 = __webpack_require__(42258);
433
+ const types_1 = __webpack_require__(94820);
434
434
  const errors_1 = __webpack_require__(55191);
435
- const error_utils_1 = __webpack_require__(23872);
436
- const local_cache_1 = __webpack_require__(6255);
435
+ const error_utils_1 = __webpack_require__(36401);
436
+ const local_cache_1 = __webpack_require__(50089);
437
437
  const Debug = __webpack_require__(15158);
438
- const file_utils_1 = __webpack_require__(58486);
438
+ const file_utils_1 = __webpack_require__(45281);
439
439
  const debug = Debug('iac-oci-pull');
440
440
  exports.CUSTOM_RULES_TARBALL = 'custom-bundle.tar.gz';
441
441
  function extractOCIRegistryURLComponents(OCIRegistryURL) {
@@ -538,4 +538,4 @@ exports.UnsupportedEntitlementPullError = UnsupportedEntitlementPullError;
538
538
 
539
539
  };
540
540
  ;
541
- //# sourceMappingURL=716.index.js.map
541
+ //# sourceMappingURL=519.index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"519.index.js","mappings":"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","sources":["webpack://snyk/./src/cli/commands/test/iac/local-execution/analytics.ts","webpack://snyk/./src/cli/commands/test/iac/local-execution/file-utils.ts","webpack://snyk/./src/cli/commands/test/iac/local-execution/local-cache.ts","webpack://snyk/./src/cli/commands/test/iac/local-execution/math-utils.ts","webpack://snyk/./src/cli/commands/test/iac/local-execution/oci-pull.ts"],"sourcesContent":["import { FormattedResult, PerformanceAnalyticsKey, RulesOrigin } from './types';\nimport * as analytics from '../../../../../lib/analytics';\nimport { calculatePercentage } from './math-utils';\nimport { computeCustomRulesBundleChecksum } from './file-utils';\nimport { DescribeOptions, DriftAnalysis } from '../../../../../lib/iac/types';\nimport { driftctlVersion } from '../../../../../lib/iac/drift';\n\nexport function addIacAnalytics(\n formattedResults: FormattedResult[],\n opts: {\n ignoredIssuesCount: number;\n rulesOrigin: RulesOrigin;\n },\n): void {\n let totalIssuesCount = 0;\n const customRulesIdsFoundInIssues: { [customRuleId: string]: true } = {};\n let issuesFromCustomRulesCount = 0;\n const projectTypeAnalytics: Record<string, object> = {};\n const packageManagers = Array<string>();\n\n formattedResults.forEach((res) => {\n totalIssuesCount =\n (totalIssuesCount || 0) + res.result.cloudConfigResults.length;\n\n const projectType = res.packageManager;\n packageManagers.push(projectType);\n projectTypeAnalytics[projectType] = projectTypeAnalytics[projectType] ?? {\n count: 0,\n };\n projectTypeAnalytics[projectType]['count']++;\n\n res.result.cloudConfigResults.forEach((policy) => {\n projectTypeAnalytics[projectType][policy.severity] =\n (projectTypeAnalytics[projectType][policy.severity] || 0) + 1;\n\n if (policy.isGeneratedByCustomRule) {\n issuesFromCustomRulesCount++;\n customRulesIdsFoundInIssues[policy.publicId] = true;\n }\n });\n });\n\n const uniqueCustomRulesCount: number = Object.keys(\n customRulesIdsFoundInIssues,\n ).length;\n\n analytics.add('packageManager', Array.from(new Set(packageManagers)));\n analytics.add('iac-issues-count', totalIssuesCount);\n analytics.add('iac-ignored-issues-count', opts.ignoredIssuesCount);\n analytics.add('iac-type', projectTypeAnalytics);\n analytics.add('iac-metrics', performanceAnalyticsObject);\n analytics.add('iac-test-count', formattedResults.length); // TODO: remove this once we all analytics use iac-files-count\n analytics.add('iac-files-count', formattedResults.length);\n analytics.add(\n 'iac-local-custom-rules',\n opts.rulesOrigin === RulesOrigin.Local,\n );\n analytics.add(\n 'iac-remote-custom-rules',\n opts.rulesOrigin === RulesOrigin.Remote,\n );\n analytics.add('iac-custom-rules-issues-count', issuesFromCustomRulesCount);\n analytics.add(\n 'iac-custom-rules-issues-percentage',\n calculatePercentage(issuesFromCustomRulesCount, totalIssuesCount),\n );\n analytics.add(\n 'iac-custom-rules-checksum',\n computeCustomRulesBundleChecksum(),\n );\n analytics.add('iac-custom-rules-coverage-count', uniqueCustomRulesCount);\n}\n\nexport const performanceAnalyticsObject: Record<\n PerformanceAnalyticsKey,\n number | null\n> = {\n [PerformanceAnalyticsKey.InitLocalCache]: null,\n [PerformanceAnalyticsKey.FileLoading]: null,\n [PerformanceAnalyticsKey.FileParsing]: null,\n [PerformanceAnalyticsKey.FileScanning]: null,\n [PerformanceAnalyticsKey.OrgSettings]: null,\n [PerformanceAnalyticsKey.CustomSeverities]: null,\n [PerformanceAnalyticsKey.ResultFormatting]: null,\n [PerformanceAnalyticsKey.UsageTracking]: null,\n [PerformanceAnalyticsKey.CacheCleanup]: null,\n [PerformanceAnalyticsKey.Total]: null,\n};\n\nexport function addIacDriftAnalytics(\n analysis: DriftAnalysis,\n options: DescribeOptions,\n): void {\n analytics.add('iac-drift-coverage', analysis.coverage);\n analytics.add('iac-drift-total-resources', analysis.summary.total_resources);\n analytics.add('iac-drift-total-unmanaged', analysis.summary.total_unmanaged);\n analytics.add('iac-drift-total-managed', analysis.summary.total_managed);\n analytics.add('iac-drift-total-missing', analysis.summary.total_missing);\n analytics.add('iac-drift-total-changed', analysis.summary.total_changed);\n analytics.add(\n 'iac-drift-iac-source-count',\n analysis.summary.total_iac_source_count,\n );\n analytics.add('iac-drift-provider-name', analysis.provider_name);\n analytics.add('iac-drift-provider-version', analysis.provider_version);\n analytics.add('iac-drift-version', driftctlVersion);\n analytics.add('iac-drift-scan-duration', analysis.scan_duration);\n\n let scope = 'all';\n if (options['only-managed']) {\n scope = 'managed';\n } else if (options['only-unmanaged']) {\n scope = 'unmanaged';\n }\n analytics.add('iac-drift-scan-scope', scope);\n}\n","import * as fs from 'fs';\nimport * as tar from 'tar';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport {\n FailedToInitLocalCacheError,\n LOCAL_POLICY_ENGINE_DIR,\n} from './local-cache';\nimport { CUSTOM_RULES_TARBALL } from './oci-pull';\nimport { isLocalFolder } from '../../../../../lib/detect';\nimport { readdirSync } from 'fs';\nimport { join } from 'path';\n\nfunction hashData(s: string): string {\n const hashedData = crypto\n .createHash('sha1')\n .update(s)\n .digest('hex');\n return hashedData;\n}\n\nexport function createIacDir(): void {\n // this path will be able to be customised by the user in the future\n const iacPath: fs.PathLike = path.join(LOCAL_POLICY_ENGINE_DIR);\n try {\n if (!fs.existsSync(iacPath)) {\n fs.mkdirSync(iacPath, '700');\n }\n fs.accessSync(iacPath, fs.constants.W_OK);\n } catch {\n throw new FailedToInitLocalCacheError();\n }\n}\n\nexport function extractBundle(response: NodeJS.ReadableStream): Promise<void> {\n return new Promise((resolve, reject) => {\n response\n .on('error', reject)\n .pipe(\n tar.x({\n C: path.join(LOCAL_POLICY_ENGINE_DIR),\n }),\n )\n .on('finish', resolve)\n .on('error', reject);\n });\n}\n\nexport function isValidBundle(wasmPath: string, dataPath: string): boolean {\n try {\n // verify that the correct files were generated, since this is user input\n return !(!fs.existsSync(wasmPath) || !fs.existsSync(dataPath));\n } catch {\n return false;\n }\n}\n\nexport function computeCustomRulesBundleChecksum(): string | undefined {\n try {\n const customRulesPolicyWasmPath = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n CUSTOM_RULES_TARBALL,\n );\n // if bundle is not configured we don't want to include the checksum\n if (!fs.existsSync(customRulesPolicyWasmPath)) {\n return;\n }\n const policyWasm = fs.readFileSync(customRulesPolicyWasmPath, 'utf8');\n return hashData(policyWasm);\n } catch (err) {\n return;\n }\n}\n\nexport function computePaths(\n filePath: string,\n pathArg = '.',\n): { targetFilePath: string; projectName: string; targetFile: string } {\n const targetFilePath = path.resolve(filePath, '.');\n\n // the absolute path is needed to compute the full project path\n const cmdPath = path.resolve(pathArg);\n\n let projectPath: string;\n let targetFile: string;\n if (!isLocalFolder(cmdPath)) {\n // if the provided path points to a file, then the project starts at the parent folder of that file\n // and the target file was provided as the path argument\n projectPath = path.dirname(cmdPath);\n targetFile = path.isAbsolute(pathArg)\n ? path.relative(process.cwd(), pathArg)\n : pathArg;\n } else {\n // otherwise, the project starts at the provided path\n // and the target file must be the relative path from the project path to the path of the scanned file\n projectPath = cmdPath;\n targetFile = path.relative(projectPath, targetFilePath);\n }\n\n return {\n targetFilePath,\n projectName: path.basename(projectPath),\n targetFile,\n };\n}\n\n/**\n * makeFileAndDirectoryGenerator is a generator function that helps walking the directory and file structure of this pathToScan\n * @param root\n * @param maxDepth? - An optional `maxDepth` argument can be provided to limit how deep in the file tree the search will go.\n * @returns {Generator<object>} - a generator which yields an object with directories or paths for the path to scan\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function* makeFileAndDirectoryGenerator(root = '.', maxDepth?: number) {\n function* generatorHelper(pathToScan, currentDepth) {\n {\n yield { directory: pathToScan };\n }\n if (maxDepth !== currentDepth) {\n for (const dirent of readdirSync(pathToScan, { withFileTypes: true })) {\n if (\n dirent.isDirectory() &&\n fs.readdirSync(join(pathToScan, dirent.name)).length !== 0\n ) {\n yield* generatorHelper(\n join(pathToScan, dirent.name),\n currentDepth + 1,\n );\n } else if (dirent.isFile()) {\n yield {\n file: {\n dir: pathToScan,\n fileName: join(pathToScan, dirent.name),\n },\n };\n }\n }\n }\n }\n yield* generatorHelper(root, 0);\n}\n","import * as path from 'path';\nimport * as fs from 'fs';\nimport { EngineType, IaCErrorCodes } from './types';\nimport * as needle from 'needle';\nimport * as rimraf from 'rimraf';\nimport { createIacDir, extractBundle, isValidBundle } from './file-utils';\nimport * as Debug from 'debug';\nimport { CustomError } from '../../../../../lib/errors';\nimport * as analytics from '../../../../../lib/analytics';\nimport ReadableStream = NodeJS.ReadableStream;\nimport { getErrorStringCode } from './error-utils';\n\nconst debug = Debug('iac-local-cache');\n\nexport const LOCAL_POLICY_ENGINE_DIR = '.iac-data';\n\nconst KUBERNETES_POLICY_ENGINE_WASM_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'k8s_policy.wasm',\n);\nconst KUBERNETES_POLICY_ENGINE_DATA_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'k8s_data.json',\n);\nconst TERRAFORM_POLICY_ENGINE_WASM_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'tf_policy.wasm',\n);\nconst TERRAFORM_POLICY_ENGINE_DATA_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'tf_data.json',\n);\nconst CLOUDFORMATION_POLICY_ENGINE_WASM_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'cloudformation_policy.wasm',\n);\nconst CLOUDFORMATION_POLICY_ENGINE_DATA_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'cloudformation_data.json',\n);\nconst ARM_POLICY_ENGINE_WASM_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'arm_policy.wasm',\n);\nconst ARM_POLICY_ENGINE_DATA_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'arm_data.json',\n);\n\n// NOTE: The filenames used for the custom policy bundles match those output\n// by the `opa` CLI tool, which is why they are very generic.\nexport const CUSTOM_POLICY_ENGINE_WASM_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'policy.wasm',\n);\nconst CUSTOM_POLICY_ENGINE_DATA_PATH = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n 'data.json',\n);\n\nexport function assertNever(value: never): never {\n throw new Error(\n `Unhandled discriminated union member: ${JSON.stringify(value)}`,\n );\n}\n\nexport function getLocalCachePath(engineType: EngineType): string[] {\n switch (engineType) {\n case EngineType.Kubernetes:\n return [\n `${process.cwd()}/${KUBERNETES_POLICY_ENGINE_WASM_PATH}`,\n `${process.cwd()}/${KUBERNETES_POLICY_ENGINE_DATA_PATH}`,\n ];\n case EngineType.Terraform:\n return [\n `${process.cwd()}/${TERRAFORM_POLICY_ENGINE_WASM_PATH}`,\n `${process.cwd()}/${TERRAFORM_POLICY_ENGINE_DATA_PATH}`,\n ];\n case EngineType.CloudFormation:\n return [\n `${process.cwd()}/${CLOUDFORMATION_POLICY_ENGINE_WASM_PATH}`,\n `${process.cwd()}/${CLOUDFORMATION_POLICY_ENGINE_DATA_PATH}`,\n ];\n case EngineType.ARM:\n return [\n `${process.cwd()}/${ARM_POLICY_ENGINE_WASM_PATH}`,\n `${process.cwd()}/${ARM_POLICY_ENGINE_DATA_PATH}`,\n ];\n case EngineType.Custom:\n return [\n `${process.cwd()}/${CUSTOM_POLICY_ENGINE_WASM_PATH}`,\n `${process.cwd()}/${CUSTOM_POLICY_ENGINE_DATA_PATH}`,\n ];\n default:\n assertNever(engineType);\n }\n}\n\nexport async function initLocalCache({\n customRulesPath,\n}: { customRulesPath?: string } = {}): Promise<void> {\n try {\n createIacDir();\n } catch (e) {\n throw new FailedToInitLocalCacheError();\n }\n\n // Attempt to extract the custom rules from the path provided.\n if (customRulesPath) {\n if (!fs.existsSync(customRulesPath)) {\n throw new InvalidCustomRulesPath(customRulesPath);\n }\n\n try {\n const response = fs.createReadStream(customRulesPath);\n await extractBundle(response);\n } catch (e) {\n throw new FailedToExtractCustomRulesError(customRulesPath);\n }\n\n if (\n !isValidBundle(\n CUSTOM_POLICY_ENGINE_WASM_PATH,\n CUSTOM_POLICY_ENGINE_DATA_PATH,\n )\n ) {\n throw new InvalidCustomRules(customRulesPath);\n }\n }\n\n // We extract the Snyk rules after the custom rules to ensure our files\n // always overwrite whatever might be there.\n try {\n const BUNDLE_URL = 'https://static.snyk.io/cli/wasm/bundle.tar.gz';\n const response: ReadableStream = needle.get(BUNDLE_URL);\n await extractBundle(response);\n } catch (e) {\n throw new FailedToDownloadRulesError();\n }\n}\n\nexport function cleanLocalCache() {\n // path to delete is hardcoded for now\n const iacPath: fs.PathLike = path.join(\n `${process.cwd()}`,\n LOCAL_POLICY_ENGINE_DIR,\n );\n try {\n // when we support Node version >= 12.10.0 , we can replace rimraf\n // with the native fs.rmdirSync(path, {recursive: true})\n rimraf.sync(iacPath);\n } catch (e) {\n const err = new FailedToCleanLocalCacheError();\n analytics.add('error-code', err.code);\n debug('The local cache directory could not be deleted');\n }\n}\n\nexport class FailedToInitLocalCacheError extends CustomError {\n constructor(message?: string) {\n super(message || 'Failed to initialize local cache');\n this.code = IaCErrorCodes.FailedToInitLocalCacheError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n 'We were unable to create a local directory to store the test assets, please ensure that the current working directory is writable';\n }\n}\n\nexport class FailedToDownloadRulesError extends CustomError {\n constructor(message?: string) {\n super(message || 'Failed to download policies');\n this.code = IaCErrorCodes.FailedToDownloadRulesError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n 'We were unable to download the security rules, please ensure the network can access https://static.snyk.io';\n }\n}\n\nexport class FailedToExtractCustomRulesError extends CustomError {\n constructor(path: string, message?: string) {\n super(message || 'Failed to download policies');\n this.code = IaCErrorCodes.FailedToExtractCustomRulesError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `We were unable to extract the rules provided at: ${path}. The provided bundle may be corrupted or invalid. Please ensure it was generated using the 'snyk-iac-rules' SDK`;\n }\n}\n\nexport class InvalidCustomRules extends CustomError {\n constructor(path: string, message?: string) {\n super(message || 'Invalid custom rules bundle');\n this.code = IaCErrorCodes.InvalidCustomRules;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `We were unable to extract the rules provided at: ${path}. The provided bundle does not match the required structure. Please ensure it was generated using the 'snyk-iac-rules' SDK`;\n }\n}\n\nexport class InvalidCustomRulesPath extends CustomError {\n constructor(path: string, message?: string) {\n super(message || 'Invalid path to custom rules bundle');\n this.code = IaCErrorCodes.InvalidCustomRulesPath;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `We were unable to extract the rules provided at: ${path}. The bundle at the provided path does not exist`;\n }\n}\n\nclass FailedToCleanLocalCacheError extends CustomError {\n constructor(message?: string) {\n super(message || 'Failed to clean local cache');\n this.code = IaCErrorCodes.FailedToCleanLocalCacheError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = ''; // Not a user facing error.\n }\n}\n","/**\n * Calculate percentage from relative and total amounts.\n * @param relativeValue The relative amount.\n * @param totalValue The total amount.\n * @returns The calculated precentage.\n */\nexport const calculatePercentage = (\n relativeValue: number,\n totalValue: number,\n): number => +(totalValue ? (relativeValue / totalValue) * 100 : 0).toFixed(2);\n","import * as registryClient from '@snyk/docker-registry-v2-client';\nimport { promises as fs } from 'fs';\nimport * as path from 'path';\nimport {\n IaCErrorCodes,\n ImageManifest,\n ManifestConfig,\n OCIPullOptions,\n OCIRegistryURLComponents,\n} from './types';\nimport { CustomError } from '../../../../../lib/errors';\nimport { getErrorStringCode } from './error-utils';\nimport { LOCAL_POLICY_ENGINE_DIR } from './local-cache';\nimport * as Debug from 'debug';\nimport { createIacDir } from './file-utils';\nconst debug = Debug('iac-oci-pull');\n\nexport const CUSTOM_RULES_TARBALL = 'custom-bundle.tar.gz';\n\nexport function extractOCIRegistryURLComponents(\n OCIRegistryURL: string,\n): OCIRegistryURLComponents {\n try {\n const urlWithoutProtocol = OCIRegistryURL.includes('://')\n ? OCIRegistryURL.split('://')[1]\n : OCIRegistryURL;\n\n const firstSlashIdx = urlWithoutProtocol.indexOf('/');\n if (firstSlashIdx === -1) {\n throw new InvalidRemoteRegistryURLError(OCIRegistryURL);\n }\n\n const [registryHost, repoWithTag] = [\n urlWithoutProtocol.substring(0, firstSlashIdx),\n urlWithoutProtocol.substring(firstSlashIdx + 1),\n ];\n if (!registryHost || !repoWithTag) {\n throw new InvalidRemoteRegistryURLError(OCIRegistryURL);\n }\n\n const [repo, tag = 'latest'] = repoWithTag.split(':');\n if (!repo) {\n throw new InvalidRemoteRegistryURLError(OCIRegistryURL);\n }\n\n return { registryBase: registryHost, repo, tag };\n } catch {\n throw new InvalidRemoteRegistryURLError(OCIRegistryURL);\n }\n}\n\n/**\n * Downloads an OCI Artifact from a remote OCI Registry and writes it to the disk.\n * The artifact here is a custom rules bundle stored in a remote registry.\n * In order to do that, it calls an external docker registry v2 client to get the manifests, the layers and then builds the artifact.\n * Example: https://github.com/opencontainers/image-spec/blob/main/manifest.md#example-image-manifest\n * @param OCIRegistryURL - the URL where the custom rules bundle is stored\n * @param opt????? (optional) - object that holds the credentials and other metadata required for the registry-v2-client\n **/\nexport async function pull(\n { registryBase, repo, tag }: OCIRegistryURLComponents,\n opt?: OCIPullOptions,\n): Promise<string> {\n const manifest: ImageManifest = await registryClient.getManifest(\n registryBase,\n repo,\n tag,\n opt?.username,\n opt?.password,\n opt?.reqOptions,\n );\n if (manifest.schemaVersion !== 2) {\n throw new InvalidManifestSchemaVersionError(\n manifest.schemaVersion.toString(),\n );\n }\n const manifestLayers: ManifestConfig[] = manifest.layers;\n // We assume that we will always have an artifact of a single layer\n if (manifestLayers.length > 1) {\n debug('There were more than one layers found in the OCI Artifact.');\n }\n const blob = await registryClient.getLayer(\n registryBase,\n repo,\n manifestLayers[0].digest,\n opt?.username,\n opt?.password,\n opt?.reqOptions,\n );\n\n try {\n const downloadPath: string = path.join(\n LOCAL_POLICY_ENGINE_DIR,\n CUSTOM_RULES_TARBALL,\n );\n createIacDir();\n await fs.writeFile(downloadPath, blob);\n return downloadPath;\n } catch (err) {\n throw new FailedToBuildOCIArtifactError();\n }\n}\n\nexport class FailedToBuildOCIArtifactError extends CustomError {\n constructor(message?: string) {\n super(message || 'Could not build OCI Artifact');\n this.code = IaCErrorCodes.FailedToBuildOCIArtifactError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n 'We were unable to build the remote OCI Artifact locally, please ensure that the local directory is writeable.';\n }\n}\n\nexport class InvalidManifestSchemaVersionError extends CustomError {\n constructor(message?: string) {\n super(message || 'Invalid manifest schema version');\n this.code = IaCErrorCodes.InvalidRemoteRegistryURLError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Invalid manifest schema version: ${message}. We currently support Image Manifest Version 2, Schema 2`;\n }\n}\n\nexport class InvalidRemoteRegistryURLError extends CustomError {\n constructor(url?: string) {\n super('Invalid URL for Remote Registry');\n this.code = IaCErrorCodes.InvalidRemoteRegistryURLError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `The provided remote registry URL${\n url ? `: \"${url}\"` : ''\n } is invalid. Please check it again.`;\n }\n}\n\nexport class UnsupportedEntitlementPullError extends CustomError {\n constructor(entitlement: string) {\n super(`OCI Pull not supported - Missing the ${entitlement} entitlement`);\n this.code = IaCErrorCodes.UnsupportedEntitlementPullError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `The custom rules feature is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n"],"names":[],"sourceRoot":""}
@@ -1807,7 +1807,7 @@ var v2_1 = __webpack_require__(49041);
1807
1807
  Object.defineProperty(exports, "formatIacTestSummary", ({ enumerable: true, get: function () { return v2_1.formatIacTestSummary; } }));
1808
1808
  function getIacDisplayedOutput(iacTest, testedInfoText, meta, prefix, isNewIacOutputSupported) {
1809
1809
  return isNewIacOutputSupported
1810
- ? v2.getIacDisplayedOutput(iacTest, testedInfoText, meta, prefix)
1810
+ ? v2.getIacDisplayedOutput(iacTest, prefix)
1811
1811
  : v1.getIacDisplayedOutput(iacTest, testedInfoText, meta, prefix);
1812
1812
  }
1813
1813
  exports.getIacDisplayedOutput = getIacDisplayedOutput;
@@ -2151,7 +2151,7 @@ function formatIacIssue(issue, isNew, path) {
2151
2151
  introducedBy +
2152
2152
  '\n');
2153
2153
  }
2154
- function getIacDisplayedOutput(iacTest, testedInfoText, meta, prefix) {
2154
+ function getIacDisplayedOutput(iacTest, prefix) {
2155
2155
  const issuesTextArray = [
2156
2156
  chalk_1.default.bold.white('\nInfrastructure as code issues:'),
2157
2157
  ];
@@ -2168,10 +2168,7 @@ function getIacDisplayedOutput(iacTest, testedInfoText, meta, prefix) {
2168
2168
  if (issuesTextArray.length > 0) {
2169
2169
  issuesInfoOutput.push(issuesTextArray.join('\n'));
2170
2170
  }
2171
- let body = issuesInfoOutput.join('\n\n') + '\n\n' + meta;
2172
- const vulnCountText = `found ${issues.length} issues`;
2173
- const summary = testedInfoText + ', ' + chalk_1.default.red.bold(vulnCountText);
2174
- body = body + '\n\n' + summary;
2171
+ const body = issuesInfoOutput.join('\n\n');
2175
2172
  return prefix + body;
2176
2173
  }
2177
2174
  exports.getIacDisplayedOutput = getIacDisplayedOutput;