snyk 1.875.0 → 1.876.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.
@@ -411,9 +411,9 @@ const generateScanFlags = (options) => {
411
411
  }
412
412
  args.push('--output');
413
413
  args.push('json://stdout');
414
- if (options.headers) {
414
+ if (options['fetch-tfstate-headers']) {
415
415
  args.push('--headers');
416
- args.push(options.headers);
416
+ args.push(options['fetch-tfstate-headers']);
417
417
  }
418
418
  if (options['tfc-token']) {
419
419
  args.push('--tfc-token');
@@ -1 +1 @@
1
- {"version":3,"file":"459.index.js","mappings":"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","sources":["webpack://snyk/./src/cli/commands/test/iac-local-execution/assert-iac-options-flag.ts","webpack://snyk/./src/cli/commands/test/iac-local-execution/error-utils.ts","webpack://snyk/./src/cli/commands/test/iac-local-execution/org-settings/get-iac-org-settings.ts","webpack://snyk/./src/lib/errors/describe-exclusive-argument-error.ts","webpack://snyk/./src/lib/errors/describe-required-argument-error.ts","webpack://snyk/./src/lib/iac/drift.ts","webpack://snyk/./src/lib/iac/service-mappings.ts"],"sourcesContent":["import { CustomError } from '../../../../lib/errors';\nimport { args } from '../../../args';\nimport { getErrorStringCode } from './error-utils';\nimport { IaCErrorCodes, IaCTestFlags, TerraformPlanScanMode } from './types';\n\nconst keys: (keyof IaCTestFlags)[] = [\n 'org',\n 'debug',\n 'insecure',\n 'detectionDepth',\n 'severityThreshold',\n 'rules',\n 'json',\n 'sarif',\n 'json-file-output',\n 'sarif-file-output',\n 'v',\n 'version',\n 'h',\n 'help',\n 'q',\n 'quiet',\n 'scan',\n 'report',\n\n // PolicyOptions\n 'ignore-policy',\n 'policy-path',\n];\nconst allowed = new Set<string>(keys);\n\nfunction camelcaseToDash(key: string) {\n return key.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());\n}\n\nfunction getFlagName(key: string) {\n const dashes = key.length === 1 ? '-' : '--';\n const flag = camelcaseToDash(key);\n return `${dashes}${flag}`;\n}\n\nexport class FlagError extends CustomError {\n constructor(key: string) {\n const flag = getFlagName(key);\n const msg = `Unsupported flag \"${flag}\" provided. Run snyk iac test --help for supported flags`;\n super(msg);\n this.code = IaCErrorCodes.FlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class FeatureFlagError extends CustomError {\n constructor(key: string, featureFlag: string, hasSnykPreview?: boolean) {\n const flag = getFlagName(key);\n let msg;\n if (hasSnykPreview) {\n msg = `Flag \"${flag}\" is only supported if feature flag '${featureFlag}' is enabled. The feature flag can be enabled via Snyk Preview if you are on the Enterprise Plan`;\n } else {\n msg = `Flag \"${flag}\" is only supported if feature flag \"${featureFlag}\" is enabled. To enable it, please contact Snyk support.`;\n }\n super(msg);\n this.code = IaCErrorCodes.FeatureFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class FlagValueError extends CustomError {\n constructor(key: string, value: string) {\n const flag = getFlagName(key);\n const msg = `Unsupported value \"${value}\" provided to flag \"${flag}\".\\nSupported values are: ${SUPPORTED_TF_PLAN_SCAN_MODES.join(\n ', ',\n )}`;\n super(msg);\n this.code = IaCErrorCodes.FlagValueError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class UnsupportedEntitlementFlagError extends CustomError {\n constructor(key: string, entitlementName: string) {\n const flag = getFlagName(key);\n super(\n `Unsupported flag: ${flag} - Missing the ${entitlementName} entitlement`,\n );\n this.code = IaCErrorCodes.UnsupportedEntitlementFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Flag \"${flag}\" is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n\nexport class UnsupportedEntitlementCommandError extends CustomError {\n constructor(key: string, entitlementName: string) {\n super(\n `Unsupported command: ${key} - Missing the ${entitlementName} entitlement`,\n );\n this.code = IaCErrorCodes.UnsupportedEntitlementFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Command \"${key}\" is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n\n/**\n * Validates the command line flags passed to the snyk iac test\n * command. The current argument parsing is very permissive and\n * allows unknown flags to be provided without valdiation.\n *\n * For snyk iac we need to explictly validate the flags to avoid\n * misconfigurations and typos. For example, if the --experimental\n * flag were to be mis-spelled we would end up sending the client\n * data to our backend rather than running it locally as intended.\n * @param argv command line args passed to the process\n */\nexport function assertIaCOptionsFlags(argv: string[]) {\n // We process the process.argv so we don't get default values.\n const parsed = args(argv);\n for (const key of Object.keys(parsed.options)) {\n // The _ property is a special case that contains non\n // flag strings passed to the command line (usually files)\n // and `iac` is the command provided.\n if (key !== '_' && key !== 'iac' && !allowed.has(key)) {\n throw new FlagError(key);\n }\n }\n\n if (parsed.options.scan) {\n assertTerraformPlanModes(parsed.options.scan as string);\n }\n}\n\nconst SUPPORTED_TF_PLAN_SCAN_MODES = [\n TerraformPlanScanMode.DeltaScan,\n TerraformPlanScanMode.FullScan,\n];\n\nfunction assertTerraformPlanModes(scanModeArgValue: string) {\n if (\n !SUPPORTED_TF_PLAN_SCAN_MODES.includes(\n scanModeArgValue as TerraformPlanScanMode,\n )\n ) {\n throw new FlagValueError('scan', scanModeArgValue);\n }\n}\n\nexport function isIacShareResultsOptions(options) {\n return options.iac && options.report;\n}\n","import { IaCErrorCodes } from './types';\n\nexport function getErrorStringCode(code: number): string {\n const errorName = IaCErrorCodes[code];\n if (!errorName) {\n return 'INVALID_IAC_ERROR';\n }\n let result = errorName.replace(/([A-Z])/g, '_$1');\n if (result.charAt(0) === '_') {\n result = result.substring(1);\n }\n return result.toUpperCase();\n}\n","import { IaCErrorCodes, IacOrgSettings } from '../types';\nimport { Payload } from '../../../../../lib/snyk-test/types';\nimport config from '../../../../../lib/config';\nimport { isCI } from '../../../../../lib/is-ci';\nimport { api } from '../../../../../lib/api-token';\nimport { makeRequest } from '../../../../../lib/request';\nimport { CustomError } from '../../../../../lib/errors';\nimport { getErrorStringCode } from '../error-utils';\n\nexport function getIacOrgSettings(\n publicOrgId?: string,\n): Promise<IacOrgSettings> {\n const payload: Payload = {\n method: 'get',\n url: config.API + '/iac-org-settings',\n json: true,\n qs: { org: publicOrgId },\n headers: {\n 'x-is-ci': isCI(),\n authorization: `token ${api()}`,\n },\n };\n\n return new Promise((resolve, reject) => {\n makeRequest(payload, (error, res) => {\n if (error) {\n return reject(error);\n }\n if (res.statusCode < 200 || res.statusCode > 299) {\n return reject(new FailedToGetIacOrgSettingsError());\n }\n resolve(res.body);\n });\n });\n}\n\nexport class FailedToGetIacOrgSettingsError extends CustomError {\n constructor(message?: string) {\n super(message || 'Failed to fetch IaC organization settings');\n this.code = IaCErrorCodes.FailedToGetIacOrgSettingsError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n 'We failed to fetch your organization settings, including custom severity overrides for infrastructure-as-code policies. Please run the command again with the `-d` flag and contact support@snyk.io with the contents of the output.';\n }\n}\n","import { CustomError } from './custom-error';\nimport { DescribeExclusiveArgs } from '../iac/drift';\n\nexport class DescribeExclusiveArgumentError extends CustomError {\n constructor() {\n super(\n 'Please use only one of these arguments: ' +\n DescribeExclusiveArgs.join(', '),\n );\n }\n}\n","import { CustomError } from './custom-error';\nimport { DescribeRequiredArgs } from '../iac/drift';\n\nexport class DescribeRequiredArgumentError extends CustomError {\n constructor() {\n super(\n 'Describe command require one of these arguments: ' +\n DescribeRequiredArgs.join(', '),\n );\n }\n}\n","import * as debugLib from 'debug';\nimport * as child_process from 'child_process';\nimport { StdioOptions } from 'child_process';\nimport * as os from 'os';\nimport envPaths from 'env-paths';\nimport * as fs from 'fs';\nimport { spinner } from '../spinner';\nimport { makeRequest } from '../request';\nimport config from '../../lib/config';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport {\n createIgnorePattern,\n verifyServiceMappingExists,\n} from './service-mappings';\nimport { EXIT_CODES } from '../../cli/exit-codes';\nimport {\n DescribeOptions,\n DriftAnalysis,\n DriftctlExecutionResult,\n DriftCTLOptions,\n FmtOptions,\n GenDriftIgnoreOptions,\n} from './types';\nimport { TimerMetricInstance } from '../metrics';\nimport * as analytics from '../../lib/analytics';\nimport { Policy } from '../policy/find-and-load-policy';\nimport { DescribeExclusiveArgumentError } from '../errors/describe-exclusive-argument-error';\nimport { DescribeRequiredArgumentError } from '../errors/describe-required-argument-error';\n\nconst cachePath = config.CACHE_PATH ?? envPaths('snyk').cache;\nconst debug = debugLib('drift');\n\nexport const DCTL_EXIT_CODES = {\n EXIT_IN_SYNC: 0,\n EXIT_NOT_IN_SYNC: 1,\n EXIT_ERROR: 2,\n};\n\nexport const DescribeExclusiveArgs = [\n 'all',\n 'only-managed',\n 'drift',\n 'only-unmanaged',\n];\n\nexport const DescribeRequiredArgs = [\n 'all',\n 'only-managed',\n 'drift',\n 'only-unmanaged',\n];\n\n// ⚠ Keep in mind to also update driftctl version used to generate docker images\n// You can edit base image used for snyk final image here https://github.com/snyk/snyk-images/blob/master/alpine\nexport const driftctlVersion = 'v0.23.0';\n\nconst driftctlChecksums = {\n 'driftctl_windows_386.exe':\n 'e5befbafe2291674a4d6c8522411a44fea3549057fb46d331402d49b180202fe',\n driftctl_darwin_amd64:\n '9af4e88a8e08e53ac3c373407bdd0b18a91941dc620266349f10600fc7b283d2',\n driftctl_linux_386:\n '6cd2719f81210017e3f67677cb92f4b0060976a3588c220b4af6b2dda174df8f',\n driftctl_linux_amd64:\n 'd714a3d11056169f4c4cc047b48b4d732f5df8cdfbc00e40c3e5f6e6cc5ead3e',\n driftctl_linux_arm64:\n '24812c8b2ec2d8e3d619317e76fbba0d8e7e263fc2c26cba26265a9656e8fe91',\n 'driftctl_windows_arm64.exe':\n 'd84461f0ba63b59aec66393fa67147f4157b5bddc02a19315d737c5f5a46c07b',\n driftctl_darwin_arm64:\n 'b711143d9331a10fc34c202284f67ce5eeb0348baca546b47af139f418f812c1',\n 'driftctl_windows_arm.exe':\n 'b5d24e1407c24ddfff63ffbba85eb1dc13473e2fd36e3e99e5e1762cf615f011',\n driftctl_linux_arm:\n '089665efa8a7c5e95b3cee9ace85fc5b0f2d7f2a29c351f2d3dbef3dae553e2d',\n 'driftctl_windows_amd64.exe':\n 'bf7310277eeccc2679b529c1f1d2ced30e877949a6d7c5606eb2d4c2ec033b66',\n};\n\nconst dctlBaseUrl = 'https://github.com/snyk/driftctl/releases/download/';\nconst driftctlPath = path.join(cachePath, 'driftctl_' + driftctlVersion);\nconst driftctlDefaultOptions = ['--no-version-check'];\nlet isBinaryDownloaded = false;\n\nexport const validateArgs = (options: DriftCTLOptions): void => {\n if (options.kind === 'describe') {\n return validateDescribeArgs(options as DescribeOptions);\n }\n};\n\nconst validateDescribeArgs = (options: DescribeOptions): void => {\n // Check that there is no more than one of the exclusive arguments\n let count = 0;\n for (const describeExclusiveArg of DescribeExclusiveArgs) {\n if (options[describeExclusiveArg]) {\n count++;\n }\n }\n if (count > 1) {\n throw new DescribeExclusiveArgumentError();\n }\n\n // Check we have one of the required arguments\n count = 0;\n for (const describeRequiredArgs of DescribeRequiredArgs) {\n if (options[describeRequiredArgs]) {\n count++;\n }\n }\n if (count === 0) {\n throw new DescribeRequiredArgumentError();\n }\n};\n\nexport const generateArgs = (options: DriftCTLOptions): string[] => {\n if (options.kind === 'describe') {\n return generateScanFlags(options as DescribeOptions);\n }\n\n if (options.kind === 'gen-driftignore') {\n return generateGenDriftIgnoreFlags(options as GenDriftIgnoreOptions);\n }\n\n if (options.kind === 'fmt') {\n return generateFmtFlags(options as FmtOptions);\n }\n\n throw 'Unsupported command';\n};\n\nexport const generateGenDriftIgnoreFlags = (\n options: GenDriftIgnoreOptions,\n): string[] => {\n const args: string[] = ['gen-driftignore', ...driftctlDefaultOptions];\n\n if (options.input) {\n args.push('--input');\n args.push(options.input);\n }\n\n if (options.output) {\n args.push('--output');\n args.push(options.output);\n }\n\n if (options['exclude-changed']) {\n args.push('--exclude-changed');\n }\n\n if (options['exclude-missing']) {\n args.push('--exclude-missing');\n }\n\n if (options['exclude-unmanaged']) {\n args.push('--exclude-unmanaged');\n }\n\n return args;\n};\n\nconst generateFmtFlags = (options: FmtOptions): string[] => {\n const args: string[] = ['fmt', ...driftctlDefaultOptions];\n\n if (options.json) {\n args.push('--output');\n args.push('json://stdout');\n }\n\n if (options['json-file-output']) {\n args.push('--output');\n args.push('json://' + options['json-file-output']);\n }\n\n if (options.html) {\n args.push('--output');\n args.push('html://stdout');\n }\n\n if (options['html-file-output']) {\n args.push('--output');\n args.push('html://' + options['html-file-output']);\n }\n\n return args;\n};\n\nconst generateScanFlags = (options: DescribeOptions): string[] => {\n const args: string[] = ['scan', ...driftctlDefaultOptions];\n\n if (options.quiet) {\n args.push('--quiet');\n }\n\n if (options.filter) {\n args.push('--filter');\n args.push(options.filter);\n }\n\n args.push('--output');\n args.push('json://stdout');\n\n if (options.headers) {\n args.push('--headers');\n args.push(options.headers);\n }\n\n if (options['tfc-token']) {\n args.push('--tfc-token');\n args.push(options['tfc-token']);\n }\n\n if (options['tfc-endpoint']) {\n args.push('--tfc-endpoint');\n args.push(options['tfc-endpoint']);\n }\n\n if (options['tf-provider-version']) {\n args.push('--tf-provider-version');\n args.push(options['tf-provider-version']);\n }\n\n if (options.strict) {\n args.push('--strict');\n }\n\n if (options.deep) {\n args.push('--deep');\n }\n\n if (options['only-managed'] || options.drift) {\n args.push('--only-managed');\n }\n\n if (options['only-unmanaged']) {\n args.push('--only-unmanaged');\n }\n\n if (options.driftignore) {\n args.push('--driftignore');\n args.push(options.driftignore);\n }\n\n if (options['tf-lockfile']) {\n args.push('--tf-lockfile');\n args.push(options['tf-lockfile']);\n }\n\n if (options.ignore && options.ignore.length > 0) {\n args.push('--ignore');\n args.push(options.ignore.join(','));\n }\n\n let configDir = cachePath;\n createIfNotExists(cachePath);\n if (options['config-dir']) {\n configDir = options['config-dir'];\n }\n args.push('--config-dir');\n args.push(configDir);\n\n if (options.from) {\n const froms = options.from.split(',');\n for (const f of froms) {\n args.push('--from');\n args.push(f);\n }\n }\n\n let to = 'aws+tf';\n if (options.to) {\n to = options.to;\n }\n args.push('--to');\n args.push(to);\n\n if (options.service) {\n const services = options.service.split(',');\n verifyServiceMappingExists(services);\n args.push('--ignore');\n args.push(createIgnorePattern(services));\n }\n\n debug(args);\n\n return args;\n};\n\nexport function translateExitCode(exitCode: number | null): number {\n switch (exitCode) {\n case DCTL_EXIT_CODES.EXIT_IN_SYNC:\n return 0;\n case DCTL_EXIT_CODES.EXIT_NOT_IN_SYNC:\n return EXIT_CODES.VULNS_FOUND;\n case DCTL_EXIT_CODES.EXIT_ERROR:\n return EXIT_CODES.ERROR;\n default:\n debug('driftctl returned %d', exitCode);\n return EXIT_CODES.ERROR;\n }\n}\n\nexport const parseDriftAnalysisResults = (input: string): DriftAnalysis => {\n return JSON.parse(input) as DriftAnalysis;\n};\n\nexport const runDriftCTL = async ({\n options,\n input,\n stdio,\n}: {\n options: DriftCTLOptions;\n input?: string;\n stdio?: StdioOptions;\n}): Promise<DriftctlExecutionResult> => {\n const path = await findOrDownload();\n await validateArgs(options);\n const args = await generateArgs(options);\n\n if (!stdio) {\n stdio = ['pipe', 'pipe', 'inherit'];\n }\n\n debug('running driftctl %s ', args.join(' '));\n\n const p = child_process.spawn(path, args, {\n stdio,\n env: { ...process.env, DCTL_IS_SNYK: 'true' },\n });\n\n let stdout = '';\n return new Promise<DriftctlExecutionResult>((resolve, reject) => {\n if (input) {\n p.stdin?.write(input);\n p.stdin?.end();\n }\n p.on('error', (error) => {\n reject(error);\n });\n\n p.stdout?.on('data', (data) => {\n stdout += data;\n });\n\n p.on('exit', (code) => {\n resolve({ code: translateExitCode(code), stdout });\n });\n });\n};\n\nasync function findOrDownload(): Promise<string> {\n let dctl = await findDriftCtl();\n if (isBinaryDownloaded) {\n return dctl;\n }\n let downloadDuration = 0;\n let binaryExist = true;\n if (dctl === '') {\n binaryExist = false;\n try {\n createIfNotExists(cachePath);\n dctl = driftctlPath;\n\n const duration = new TimerMetricInstance('driftctl_download');\n duration.start();\n await download(driftctlUrl(), dctl);\n duration.stop();\n\n downloadDuration = Math.round((duration.getValue() as number) / 1000);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n analytics.add('iac-drift-binary-already-exist', binaryExist);\n analytics.add('iac-drift-binary-download-duration-seconds', downloadDuration);\n isBinaryDownloaded = true;\n return dctl;\n}\n\nasync function findDriftCtl(): Promise<string> {\n // lookup in custom path contained in env var DRIFTCTL_PATH\n let dctlPath = config.DRIFTCTL_PATH;\n if (dctlPath != null) {\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in $DRIFTCTL_PATH: %s', dctlPath);\n return dctlPath;\n }\n }\n\n // lookup in app cache\n dctlPath = driftctlPath;\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in cache: %s', dctlPath);\n return dctlPath;\n }\n\n // lookup in /bin\n // when used in a docker context the default binary path should be used\n {\n dctlPath = '/bin/driftctl';\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in %s', dctlPath);\n return dctlPath;\n }\n }\n\n debug('driftctl not found');\n return '';\n}\n\nasync function download(url, destination: string): Promise<boolean> {\n debug('downloading driftctl into %s', destination);\n\n const payload = {\n method: 'GET',\n url: url,\n output: destination,\n follow: 3,\n };\n\n await spinner('Downloading...');\n return new Promise<boolean>((resolve, reject) => {\n makeRequest(payload, function(err, res, body) {\n try {\n if (err) {\n reject(\n new Error('Could not download driftctl from ' + url + ': ' + err),\n );\n return;\n }\n if (res.statusCode !== 200) {\n reject(\n new Error(\n 'Could not download driftctl from ' + url + ': ' + res.statusCode,\n ),\n );\n return;\n }\n\n validateChecksum(body);\n\n fs.writeFileSync(destination, body);\n debug('File saved: ' + destination);\n\n fs.chmodSync(destination, 0o744);\n resolve(true);\n } finally {\n spinner.clearAll();\n }\n });\n });\n}\n\nfunction validateChecksum(body: string) {\n // only validate if we downloaded the official driftctl binary\n if (config.DRIFTCTL_URL || config.DRIFTCTL_PATH) {\n return;\n }\n\n const computedHash = crypto\n .createHash('sha256')\n .update(body)\n .digest('hex');\n const givenHash = driftctlChecksums[driftctlFileName()];\n\n if (computedHash != givenHash) {\n throw new Error('Downloaded file has inconsistent checksum...');\n }\n}\n\nfunction driftctlFileName(): string {\n let platform = 'linux';\n switch (os.platform()) {\n case 'darwin':\n platform = 'darwin';\n break;\n case 'win32':\n platform = 'windows';\n break;\n }\n\n let arch = 'amd64';\n switch (os.arch()) {\n case 'ia32':\n case 'x32':\n arch = '386';\n break;\n case 'arm':\n arch = 'arm';\n break;\n case 'arm64':\n arch = 'arm64';\n break;\n }\n\n let ext = '';\n switch (os.platform()) {\n case 'win32':\n ext = '.exe';\n break;\n }\n\n return `driftctl_${platform}_${arch}${ext}`;\n}\n\nfunction driftctlUrl(): string {\n if (config.DRIFTCTL_URL) {\n return config.DRIFTCTL_URL;\n }\n\n return `${dctlBaseUrl}/${driftctlVersion}/${driftctlFileName()}`;\n}\n\nfunction isExe(dctlPath: string): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n fs.access(dctlPath, fs.constants.X_OK, (err) => {\n if (err) {\n resolve(false);\n return;\n }\n resolve(true);\n });\n });\n}\n\nfunction createIfNotExists(path: string) {\n if (!fs.existsSync(path)) {\n fs.mkdirSync(path, { recursive: true });\n }\n}\n\nexport function driftignoreFromPolicy(policy: Policy | undefined): string[] {\n const excludeSection = 'iac-drift';\n if (!policy || !policy.exclude || !(excludeSection in policy.exclude)) {\n return [];\n }\n return policy.exclude[excludeSection];\n}\n","import { CustomError } from '../errors';\nimport { IaCErrorCodes } from '../../cli/commands/test/iac-local-execution/types';\nimport { getErrorStringCode } from '../../cli/commands/test/iac-local-execution/error-utils';\n\nexport const services2resources = new Map<string, Array<string>>([\n // Amazon\n [\n 'aws_s3',\n [\n 'aws_s3_bucket',\n 'aws_s3_bucket_analytics_configuration',\n 'aws_s3_bucket_inventory',\n 'aws_s3_bucket_metric',\n 'aws_s3_bucket_notification',\n 'aws_s3_bucket_policy',\n ],\n ],\n [\n 'aws_ec2',\n [\n 'aws_instance',\n 'aws_key_pair',\n 'aws_ami',\n 'aws_ebs_snapshot',\n 'aws_ebs_volume',\n 'aws_eip',\n 'aws_eip_association',\n 'aws_volume_attachment',\n 'aws_launch_configuration',\n 'aws_launch_template',\n ],\n ],\n ['aws_lambda', ['aws_lambda_function', 'aws_lambda_event_source_mapping']],\n [\n 'aws_rds',\n [\n 'aws_db_instance',\n 'aws_db_subnet_group',\n 'aws_rds_cluster',\n 'aws_rds_cluster_endpoint',\n 'aws_rds_cluster_instance',\n ],\n ],\n ['aws_route53', ['aws_route53_record', 'aws_route53_zone']],\n [\n 'aws_iam',\n [\n 'aws_iam_access_key',\n 'aws_iam_policy',\n 'aws_iam_policy_attachment',\n 'aws_iam_role',\n 'aws_iam_role_policy',\n 'aws_iam_role_policy_attachment',\n 'aws_iam_user',\n 'aws_iam_user_policy',\n 'aws_iam_user_policy_attachment',\n ],\n ],\n [\n 'aws_vpc',\n [\n 'aws_security_group',\n 'aws_security_group_rule',\n 'aws_subnet',\n 'aws_default_vpc',\n 'aws_vpc',\n 'aws_default_security_group',\n 'aws_route_table',\n 'aws_default_route_table',\n 'aws_route',\n 'aws_route_table_association',\n 'aws_nat_gateway',\n 'aws_internet_gateway',\n ],\n ],\n [\n 'aws_api_gateway',\n [\n 'aws_api_gateway_resource',\n 'aws_api_gateway_rest_api',\n 'aws_api_gateway_account',\n 'aws_api_gateway_api_key',\n 'aws_api_gateway_authorizer',\n 'aws_api_gateway_base_path_mapping',\n 'aws_api_gateway_domain_name',\n 'aws_api_gateway_gateway_response',\n 'aws_api_gateway_integration',\n 'aws_api_gateway_integration_response',\n 'aws_api_gateway_method',\n 'aws_api_gateway_method_response',\n 'aws_api_gateway_method_settings',\n 'aws_api_gateway_model',\n 'aws_api_gateway_request_validator',\n 'aws_api_gateway_rest_api_policy',\n 'aws_api_gateway_stage',\n 'aws_api_gateway_vpc_link',\n ],\n ],\n [\n 'aws_apigatewayv2',\n [\n 'aws_apigatewayv2_api',\n 'aws_apigatewayv2_api_mapping',\n 'aws_apigatewayv2_authorizer',\n 'aws_apigatewayv2_deployment',\n 'aws_apigatewayv2_domain_name',\n 'aws_apigatewayv2_integration',\n 'aws_apigatewayv2_integration_response',\n 'aws_apigatewayv2_model',\n 'aws_apigatewayv2_route',\n 'aws_apigatewayv2_route_response',\n 'aws_apigatewayv2_stage',\n 'aws_apigatewayv2_vpc_link',\n ],\n ],\n ['aws_sqs', ['aws_sqs_queue', 'aws_sqs_queue_policy']],\n [\n 'aws_sns',\n ['aws_sns_topic', 'aws_sns_topic_policy', 'aws_sns_topic_subscription'],\n ],\n ['aws_ecr', ['aws_ecr_repository']],\n ['aws_cloudfront', ['aws_cloudfront_distribution']],\n ['aws_kms', ['aws_kms_key', 'aws_kms_alias']],\n ['aws_dynamodb', ['aws_dynamodb_table']],\n // Azure\n ['azure_base', ['azurerm_resource_group']],\n ['azure_compute', ['azurerm_image', 'azurerm_ssh_public_key']],\n ['azure_storage', ['azurerm_storage_account', 'azurerm_storage_container']],\n [\n 'azure_network',\n [\n 'azurerm_resource_group',\n 'azurerm_subnet',\n 'azurerm_public_ip',\n 'azurerm_firewall',\n 'azurerm_route',\n 'azurerm_route_table',\n 'azurerm_network_security_group',\n ],\n ],\n ['azure_container', ['azurerm_container_registry']],\n [\n 'azure_database',\n ['azurerm_postgresql_server', 'azurerm_postgresql_database'],\n ],\n ['azure_loadbalancer', ['azurerm_lb', 'azurerm_lb_rule']],\n [\n 'azure_private_dns',\n [\n 'azurerm_private_dns_a_record',\n 'azurerm_private_dns_aaaa_record',\n 'azurerm_private_dns_cname_record',\n 'azurerm_private_dns_mx_record',\n 'azurerm_private_dns_ptr_record',\n 'azurerm_private_dns_srv_record',\n 'azurerm_private_dns_txt_record',\n 'azurerm_private_dns_zone',\n ],\n ],\n\n // Google\n [\n 'google_cloud_platform',\n [\n 'google_project_iam_binding',\n 'google_project_iam_member',\n 'google_project_iam_policy',\n ],\n ],\n [\n 'google_cloud_storage',\n [\n 'google_storage_bucket',\n 'google_storage_bucket_iam_binding',\n 'google_storage_bucket_iam_member',\n 'google_storage_bucket_iam_policy',\n ],\n ],\n [\n 'google_compute_engine',\n [\n 'google_compute_address',\n 'google_compute_disk',\n 'google_compute_global_address',\n 'google_compute_firewall',\n 'google_compute_health_check',\n 'google_compute_image',\n 'google_compute_instance',\n 'google_compute_instance_group',\n 'google_compute_network',\n 'google_compute_node_group',\n 'google_compute_router',\n 'google_compute_subnetwork',\n ],\n ],\n ['google_cloud_dns', ['google_dns_managed_zone']],\n [\n 'google_cloud_bigtable',\n ['google_bigtable_instance', 'google_bigtable_table'],\n ],\n [\n 'google_cloud_bigquery',\n ['google_bigquery_table', 'google_bigquery_dataset'],\n ],\n ['google_cloud_functions', ['google_cloudfunctions_function']],\n ['google_cloud_sql', ['google_sql_database_instance']],\n ['google_cloud_run', ['google_cloud_run_service']],\n]);\n\nexport function verifyServiceMappingExists(services: string[]): void {\n if (services.length == 0) {\n throw new InvalidServiceError('');\n }\n for (const s of services) {\n if (!services2resources.has(s)) {\n throw new InvalidServiceError(\n `We were unable to match service \"${s}\". Please provide a valid service name: ${existingServiceNames()}`,\n );\n }\n }\n}\n\nfunction existingServiceNames(): string {\n let res = '';\n for (const s of services2resources.keys()) {\n res += `${s},`;\n }\n return res.substring(0, res.length - 1);\n}\n\nexport function createIgnorePattern(services: string[]): string {\n return createIgnorePatternWithMap(services, services2resources);\n}\n\nexport function createIgnorePatternWithMap(\n services: string[],\n serviceMap: Map<string, Array<string>>,\n): string {\n let res = '*';\n const seenResources = new Set<string>();\n for (const s of services) {\n const resourcePatterns = serviceMap.get(s);\n for (const rp of resourcePatterns || []) {\n // A resource might belong to multiple services, skip it if already processed\n if (seenResources.has(rp)) {\n continue;\n }\n res += `,!${rp}`;\n seenResources.add(rp);\n }\n }\n return res;\n}\n\nexport class InvalidServiceError extends CustomError {\n constructor(msg: string) {\n super(msg);\n this.code = IaCErrorCodes.InvalidServiceError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"459.index.js","mappings":"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","sources":["webpack://snyk/./src/cli/commands/test/iac-local-execution/assert-iac-options-flag.ts","webpack://snyk/./src/cli/commands/test/iac-local-execution/error-utils.ts","webpack://snyk/./src/cli/commands/test/iac-local-execution/org-settings/get-iac-org-settings.ts","webpack://snyk/./src/lib/errors/describe-exclusive-argument-error.ts","webpack://snyk/./src/lib/errors/describe-required-argument-error.ts","webpack://snyk/./src/lib/iac/drift.ts","webpack://snyk/./src/lib/iac/service-mappings.ts"],"sourcesContent":["import { CustomError } from '../../../../lib/errors';\nimport { args } from '../../../args';\nimport { getErrorStringCode } from './error-utils';\nimport { IaCErrorCodes, IaCTestFlags, TerraformPlanScanMode } from './types';\n\nconst keys: (keyof IaCTestFlags)[] = [\n 'org',\n 'debug',\n 'insecure',\n 'detectionDepth',\n 'severityThreshold',\n 'rules',\n 'json',\n 'sarif',\n 'json-file-output',\n 'sarif-file-output',\n 'v',\n 'version',\n 'h',\n 'help',\n 'q',\n 'quiet',\n 'scan',\n 'report',\n\n // PolicyOptions\n 'ignore-policy',\n 'policy-path',\n];\nconst allowed = new Set<string>(keys);\n\nfunction camelcaseToDash(key: string) {\n return key.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());\n}\n\nfunction getFlagName(key: string) {\n const dashes = key.length === 1 ? '-' : '--';\n const flag = camelcaseToDash(key);\n return `${dashes}${flag}`;\n}\n\nexport class FlagError extends CustomError {\n constructor(key: string) {\n const flag = getFlagName(key);\n const msg = `Unsupported flag \"${flag}\" provided. Run snyk iac test --help for supported flags`;\n super(msg);\n this.code = IaCErrorCodes.FlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class FeatureFlagError extends CustomError {\n constructor(key: string, featureFlag: string, hasSnykPreview?: boolean) {\n const flag = getFlagName(key);\n let msg;\n if (hasSnykPreview) {\n msg = `Flag \"${flag}\" is only supported if feature flag '${featureFlag}' is enabled. The feature flag can be enabled via Snyk Preview if you are on the Enterprise Plan`;\n } else {\n msg = `Flag \"${flag}\" is only supported if feature flag \"${featureFlag}\" is enabled. To enable it, please contact Snyk support.`;\n }\n super(msg);\n this.code = IaCErrorCodes.FeatureFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class FlagValueError extends CustomError {\n constructor(key: string, value: string) {\n const flag = getFlagName(key);\n const msg = `Unsupported value \"${value}\" provided to flag \"${flag}\".\\nSupported values are: ${SUPPORTED_TF_PLAN_SCAN_MODES.join(\n ', ',\n )}`;\n super(msg);\n this.code = IaCErrorCodes.FlagValueError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class UnsupportedEntitlementFlagError extends CustomError {\n constructor(key: string, entitlementName: string) {\n const flag = getFlagName(key);\n super(\n `Unsupported flag: ${flag} - Missing the ${entitlementName} entitlement`,\n );\n this.code = IaCErrorCodes.UnsupportedEntitlementFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Flag \"${flag}\" is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n\nexport class UnsupportedEntitlementCommandError extends CustomError {\n constructor(key: string, entitlementName: string) {\n super(\n `Unsupported command: ${key} - Missing the ${entitlementName} entitlement`,\n );\n this.code = IaCErrorCodes.UnsupportedEntitlementFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Command \"${key}\" is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n\n/**\n * Validates the command line flags passed to the snyk iac test\n * command. The current argument parsing is very permissive and\n * allows unknown flags to be provided without valdiation.\n *\n * For snyk iac we need to explictly validate the flags to avoid\n * misconfigurations and typos. For example, if the --experimental\n * flag were to be mis-spelled we would end up sending the client\n * data to our backend rather than running it locally as intended.\n * @param argv command line args passed to the process\n */\nexport function assertIaCOptionsFlags(argv: string[]) {\n // We process the process.argv so we don't get default values.\n const parsed = args(argv);\n for (const key of Object.keys(parsed.options)) {\n // The _ property is a special case that contains non\n // flag strings passed to the command line (usually files)\n // and `iac` is the command provided.\n if (key !== '_' && key !== 'iac' && !allowed.has(key)) {\n throw new FlagError(key);\n }\n }\n\n if (parsed.options.scan) {\n assertTerraformPlanModes(parsed.options.scan as string);\n }\n}\n\nconst SUPPORTED_TF_PLAN_SCAN_MODES = [\n TerraformPlanScanMode.DeltaScan,\n TerraformPlanScanMode.FullScan,\n];\n\nfunction assertTerraformPlanModes(scanModeArgValue: string) {\n if (\n !SUPPORTED_TF_PLAN_SCAN_MODES.includes(\n scanModeArgValue as TerraformPlanScanMode,\n )\n ) {\n throw new FlagValueError('scan', scanModeArgValue);\n }\n}\n\nexport function isIacShareResultsOptions(options) {\n return options.iac && options.report;\n}\n","import { IaCErrorCodes } from './types';\n\nexport function getErrorStringCode(code: number): string {\n const errorName = IaCErrorCodes[code];\n if (!errorName) {\n return 'INVALID_IAC_ERROR';\n }\n let result = errorName.replace(/([A-Z])/g, '_$1');\n if (result.charAt(0) === '_') {\n result = result.substring(1);\n }\n return result.toUpperCase();\n}\n","import { IaCErrorCodes, IacOrgSettings } from '../types';\nimport { Payload } from '../../../../../lib/snyk-test/types';\nimport config from '../../../../../lib/config';\nimport { isCI } from '../../../../../lib/is-ci';\nimport { api } from '../../../../../lib/api-token';\nimport { makeRequest } from '../../../../../lib/request';\nimport { CustomError } from '../../../../../lib/errors';\nimport { getErrorStringCode } from '../error-utils';\n\nexport function getIacOrgSettings(\n publicOrgId?: string,\n): Promise<IacOrgSettings> {\n const payload: Payload = {\n method: 'get',\n url: config.API + '/iac-org-settings',\n json: true,\n qs: { org: publicOrgId },\n headers: {\n 'x-is-ci': isCI(),\n authorization: `token ${api()}`,\n },\n };\n\n return new Promise((resolve, reject) => {\n makeRequest(payload, (error, res) => {\n if (error) {\n return reject(error);\n }\n if (res.statusCode < 200 || res.statusCode > 299) {\n return reject(new FailedToGetIacOrgSettingsError());\n }\n resolve(res.body);\n });\n });\n}\n\nexport class FailedToGetIacOrgSettingsError extends CustomError {\n constructor(message?: string) {\n super(message || 'Failed to fetch IaC organization settings');\n this.code = IaCErrorCodes.FailedToGetIacOrgSettingsError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n 'We failed to fetch your organization settings, including custom severity overrides for infrastructure-as-code policies. Please run the command again with the `-d` flag and contact support@snyk.io with the contents of the output.';\n }\n}\n","import { CustomError } from './custom-error';\nimport { DescribeExclusiveArgs } from '../iac/drift';\n\nexport class DescribeExclusiveArgumentError extends CustomError {\n constructor() {\n super(\n 'Please use only one of these arguments: ' +\n DescribeExclusiveArgs.join(', '),\n );\n }\n}\n","import { CustomError } from './custom-error';\nimport { DescribeRequiredArgs } from '../iac/drift';\n\nexport class DescribeRequiredArgumentError extends CustomError {\n constructor() {\n super(\n 'Describe command require one of these arguments: ' +\n DescribeRequiredArgs.join(', '),\n );\n }\n}\n","import * as debugLib from 'debug';\nimport * as child_process from 'child_process';\nimport { StdioOptions } from 'child_process';\nimport * as os from 'os';\nimport envPaths from 'env-paths';\nimport * as fs from 'fs';\nimport { spinner } from '../spinner';\nimport { makeRequest } from '../request';\nimport config from '../../lib/config';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport {\n createIgnorePattern,\n verifyServiceMappingExists,\n} from './service-mappings';\nimport { EXIT_CODES } from '../../cli/exit-codes';\nimport {\n DescribeOptions,\n DriftAnalysis,\n DriftctlExecutionResult,\n DriftCTLOptions,\n FmtOptions,\n GenDriftIgnoreOptions,\n} from './types';\nimport { TimerMetricInstance } from '../metrics';\nimport * as analytics from '../../lib/analytics';\nimport { Policy } from '../policy/find-and-load-policy';\nimport { DescribeExclusiveArgumentError } from '../errors/describe-exclusive-argument-error';\nimport { DescribeRequiredArgumentError } from '../errors/describe-required-argument-error';\n\nconst cachePath = config.CACHE_PATH ?? envPaths('snyk').cache;\nconst debug = debugLib('drift');\n\nexport const DCTL_EXIT_CODES = {\n EXIT_IN_SYNC: 0,\n EXIT_NOT_IN_SYNC: 1,\n EXIT_ERROR: 2,\n};\n\nexport const DescribeExclusiveArgs = [\n 'all',\n 'only-managed',\n 'drift',\n 'only-unmanaged',\n];\n\nexport const DescribeRequiredArgs = [\n 'all',\n 'only-managed',\n 'drift',\n 'only-unmanaged',\n];\n\n// ⚠ Keep in mind to also update driftctl version used to generate docker images\n// You can edit base image used for snyk final image here https://github.com/snyk/snyk-images/blob/master/alpine\nexport const driftctlVersion = 'v0.23.0';\n\nconst driftctlChecksums = {\n 'driftctl_windows_386.exe':\n 'e5befbafe2291674a4d6c8522411a44fea3549057fb46d331402d49b180202fe',\n driftctl_darwin_amd64:\n '9af4e88a8e08e53ac3c373407bdd0b18a91941dc620266349f10600fc7b283d2',\n driftctl_linux_386:\n '6cd2719f81210017e3f67677cb92f4b0060976a3588c220b4af6b2dda174df8f',\n driftctl_linux_amd64:\n 'd714a3d11056169f4c4cc047b48b4d732f5df8cdfbc00e40c3e5f6e6cc5ead3e',\n driftctl_linux_arm64:\n '24812c8b2ec2d8e3d619317e76fbba0d8e7e263fc2c26cba26265a9656e8fe91',\n 'driftctl_windows_arm64.exe':\n 'd84461f0ba63b59aec66393fa67147f4157b5bddc02a19315d737c5f5a46c07b',\n driftctl_darwin_arm64:\n 'b711143d9331a10fc34c202284f67ce5eeb0348baca546b47af139f418f812c1',\n 'driftctl_windows_arm.exe':\n 'b5d24e1407c24ddfff63ffbba85eb1dc13473e2fd36e3e99e5e1762cf615f011',\n driftctl_linux_arm:\n '089665efa8a7c5e95b3cee9ace85fc5b0f2d7f2a29c351f2d3dbef3dae553e2d',\n 'driftctl_windows_amd64.exe':\n 'bf7310277eeccc2679b529c1f1d2ced30e877949a6d7c5606eb2d4c2ec033b66',\n};\n\nconst dctlBaseUrl = 'https://github.com/snyk/driftctl/releases/download/';\nconst driftctlPath = path.join(cachePath, 'driftctl_' + driftctlVersion);\nconst driftctlDefaultOptions = ['--no-version-check'];\nlet isBinaryDownloaded = false;\n\nexport const validateArgs = (options: DriftCTLOptions): void => {\n if (options.kind === 'describe') {\n return validateDescribeArgs(options as DescribeOptions);\n }\n};\n\nconst validateDescribeArgs = (options: DescribeOptions): void => {\n // Check that there is no more than one of the exclusive arguments\n let count = 0;\n for (const describeExclusiveArg of DescribeExclusiveArgs) {\n if (options[describeExclusiveArg]) {\n count++;\n }\n }\n if (count > 1) {\n throw new DescribeExclusiveArgumentError();\n }\n\n // Check we have one of the required arguments\n count = 0;\n for (const describeRequiredArgs of DescribeRequiredArgs) {\n if (options[describeRequiredArgs]) {\n count++;\n }\n }\n if (count === 0) {\n throw new DescribeRequiredArgumentError();\n }\n};\n\nexport const generateArgs = (options: DriftCTLOptions): string[] => {\n if (options.kind === 'describe') {\n return generateScanFlags(options as DescribeOptions);\n }\n\n if (options.kind === 'gen-driftignore') {\n return generateGenDriftIgnoreFlags(options as GenDriftIgnoreOptions);\n }\n\n if (options.kind === 'fmt') {\n return generateFmtFlags(options as FmtOptions);\n }\n\n throw 'Unsupported command';\n};\n\nexport const generateGenDriftIgnoreFlags = (\n options: GenDriftIgnoreOptions,\n): string[] => {\n const args: string[] = ['gen-driftignore', ...driftctlDefaultOptions];\n\n if (options.input) {\n args.push('--input');\n args.push(options.input);\n }\n\n if (options.output) {\n args.push('--output');\n args.push(options.output);\n }\n\n if (options['exclude-changed']) {\n args.push('--exclude-changed');\n }\n\n if (options['exclude-missing']) {\n args.push('--exclude-missing');\n }\n\n if (options['exclude-unmanaged']) {\n args.push('--exclude-unmanaged');\n }\n\n return args;\n};\n\nconst generateFmtFlags = (options: FmtOptions): string[] => {\n const args: string[] = ['fmt', ...driftctlDefaultOptions];\n\n if (options.json) {\n args.push('--output');\n args.push('json://stdout');\n }\n\n if (options['json-file-output']) {\n args.push('--output');\n args.push('json://' + options['json-file-output']);\n }\n\n if (options.html) {\n args.push('--output');\n args.push('html://stdout');\n }\n\n if (options['html-file-output']) {\n args.push('--output');\n args.push('html://' + options['html-file-output']);\n }\n\n return args;\n};\n\nconst generateScanFlags = (options: DescribeOptions): string[] => {\n const args: string[] = ['scan', ...driftctlDefaultOptions];\n\n if (options.quiet) {\n args.push('--quiet');\n }\n\n if (options.filter) {\n args.push('--filter');\n args.push(options.filter);\n }\n\n args.push('--output');\n args.push('json://stdout');\n\n if (options['fetch-tfstate-headers']) {\n args.push('--headers');\n args.push(options['fetch-tfstate-headers']);\n }\n\n if (options['tfc-token']) {\n args.push('--tfc-token');\n args.push(options['tfc-token']);\n }\n\n if (options['tfc-endpoint']) {\n args.push('--tfc-endpoint');\n args.push(options['tfc-endpoint']);\n }\n\n if (options['tf-provider-version']) {\n args.push('--tf-provider-version');\n args.push(options['tf-provider-version']);\n }\n\n if (options.strict) {\n args.push('--strict');\n }\n\n if (options.deep) {\n args.push('--deep');\n }\n\n if (options['only-managed'] || options.drift) {\n args.push('--only-managed');\n }\n\n if (options['only-unmanaged']) {\n args.push('--only-unmanaged');\n }\n\n if (options.driftignore) {\n args.push('--driftignore');\n args.push(options.driftignore);\n }\n\n if (options['tf-lockfile']) {\n args.push('--tf-lockfile');\n args.push(options['tf-lockfile']);\n }\n\n if (options.ignore && options.ignore.length > 0) {\n args.push('--ignore');\n args.push(options.ignore.join(','));\n }\n\n let configDir = cachePath;\n createIfNotExists(cachePath);\n if (options['config-dir']) {\n configDir = options['config-dir'];\n }\n args.push('--config-dir');\n args.push(configDir);\n\n if (options.from) {\n const froms = options.from.split(',');\n for (const f of froms) {\n args.push('--from');\n args.push(f);\n }\n }\n\n let to = 'aws+tf';\n if (options.to) {\n to = options.to;\n }\n args.push('--to');\n args.push(to);\n\n if (options.service) {\n const services = options.service.split(',');\n verifyServiceMappingExists(services);\n args.push('--ignore');\n args.push(createIgnorePattern(services));\n }\n\n debug(args);\n\n return args;\n};\n\nexport function translateExitCode(exitCode: number | null): number {\n switch (exitCode) {\n case DCTL_EXIT_CODES.EXIT_IN_SYNC:\n return 0;\n case DCTL_EXIT_CODES.EXIT_NOT_IN_SYNC:\n return EXIT_CODES.VULNS_FOUND;\n case DCTL_EXIT_CODES.EXIT_ERROR:\n return EXIT_CODES.ERROR;\n default:\n debug('driftctl returned %d', exitCode);\n return EXIT_CODES.ERROR;\n }\n}\n\nexport const parseDriftAnalysisResults = (input: string): DriftAnalysis => {\n return JSON.parse(input) as DriftAnalysis;\n};\n\nexport const runDriftCTL = async ({\n options,\n input,\n stdio,\n}: {\n options: DriftCTLOptions;\n input?: string;\n stdio?: StdioOptions;\n}): Promise<DriftctlExecutionResult> => {\n const path = await findOrDownload();\n await validateArgs(options);\n const args = await generateArgs(options);\n\n if (!stdio) {\n stdio = ['pipe', 'pipe', 'inherit'];\n }\n\n debug('running driftctl %s ', args.join(' '));\n\n const p = child_process.spawn(path, args, {\n stdio,\n env: { ...process.env, DCTL_IS_SNYK: 'true' },\n });\n\n let stdout = '';\n return new Promise<DriftctlExecutionResult>((resolve, reject) => {\n if (input) {\n p.stdin?.write(input);\n p.stdin?.end();\n }\n p.on('error', (error) => {\n reject(error);\n });\n\n p.stdout?.on('data', (data) => {\n stdout += data;\n });\n\n p.on('exit', (code) => {\n resolve({ code: translateExitCode(code), stdout });\n });\n });\n};\n\nasync function findOrDownload(): Promise<string> {\n let dctl = await findDriftCtl();\n if (isBinaryDownloaded) {\n return dctl;\n }\n let downloadDuration = 0;\n let binaryExist = true;\n if (dctl === '') {\n binaryExist = false;\n try {\n createIfNotExists(cachePath);\n dctl = driftctlPath;\n\n const duration = new TimerMetricInstance('driftctl_download');\n duration.start();\n await download(driftctlUrl(), dctl);\n duration.stop();\n\n downloadDuration = Math.round((duration.getValue() as number) / 1000);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n analytics.add('iac-drift-binary-already-exist', binaryExist);\n analytics.add('iac-drift-binary-download-duration-seconds', downloadDuration);\n isBinaryDownloaded = true;\n return dctl;\n}\n\nasync function findDriftCtl(): Promise<string> {\n // lookup in custom path contained in env var DRIFTCTL_PATH\n let dctlPath = config.DRIFTCTL_PATH;\n if (dctlPath != null) {\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in $DRIFTCTL_PATH: %s', dctlPath);\n return dctlPath;\n }\n }\n\n // lookup in app cache\n dctlPath = driftctlPath;\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in cache: %s', dctlPath);\n return dctlPath;\n }\n\n // lookup in /bin\n // when used in a docker context the default binary path should be used\n {\n dctlPath = '/bin/driftctl';\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in %s', dctlPath);\n return dctlPath;\n }\n }\n\n debug('driftctl not found');\n return '';\n}\n\nasync function download(url, destination: string): Promise<boolean> {\n debug('downloading driftctl into %s', destination);\n\n const payload = {\n method: 'GET',\n url: url,\n output: destination,\n follow: 3,\n };\n\n await spinner('Downloading...');\n return new Promise<boolean>((resolve, reject) => {\n makeRequest(payload, function(err, res, body) {\n try {\n if (err) {\n reject(\n new Error('Could not download driftctl from ' + url + ': ' + err),\n );\n return;\n }\n if (res.statusCode !== 200) {\n reject(\n new Error(\n 'Could not download driftctl from ' + url + ': ' + res.statusCode,\n ),\n );\n return;\n }\n\n validateChecksum(body);\n\n fs.writeFileSync(destination, body);\n debug('File saved: ' + destination);\n\n fs.chmodSync(destination, 0o744);\n resolve(true);\n } finally {\n spinner.clearAll();\n }\n });\n });\n}\n\nfunction validateChecksum(body: string) {\n // only validate if we downloaded the official driftctl binary\n if (config.DRIFTCTL_URL || config.DRIFTCTL_PATH) {\n return;\n }\n\n const computedHash = crypto\n .createHash('sha256')\n .update(body)\n .digest('hex');\n const givenHash = driftctlChecksums[driftctlFileName()];\n\n if (computedHash != givenHash) {\n throw new Error('Downloaded file has inconsistent checksum...');\n }\n}\n\nfunction driftctlFileName(): string {\n let platform = 'linux';\n switch (os.platform()) {\n case 'darwin':\n platform = 'darwin';\n break;\n case 'win32':\n platform = 'windows';\n break;\n }\n\n let arch = 'amd64';\n switch (os.arch()) {\n case 'ia32':\n case 'x32':\n arch = '386';\n break;\n case 'arm':\n arch = 'arm';\n break;\n case 'arm64':\n arch = 'arm64';\n break;\n }\n\n let ext = '';\n switch (os.platform()) {\n case 'win32':\n ext = '.exe';\n break;\n }\n\n return `driftctl_${platform}_${arch}${ext}`;\n}\n\nfunction driftctlUrl(): string {\n if (config.DRIFTCTL_URL) {\n return config.DRIFTCTL_URL;\n }\n\n return `${dctlBaseUrl}/${driftctlVersion}/${driftctlFileName()}`;\n}\n\nfunction isExe(dctlPath: string): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n fs.access(dctlPath, fs.constants.X_OK, (err) => {\n if (err) {\n resolve(false);\n return;\n }\n resolve(true);\n });\n });\n}\n\nfunction createIfNotExists(path: string) {\n if (!fs.existsSync(path)) {\n fs.mkdirSync(path, { recursive: true });\n }\n}\n\nexport function driftignoreFromPolicy(policy: Policy | undefined): string[] {\n const excludeSection = 'iac-drift';\n if (!policy || !policy.exclude || !(excludeSection in policy.exclude)) {\n return [];\n }\n return policy.exclude[excludeSection];\n}\n","import { CustomError } from '../errors';\nimport { IaCErrorCodes } from '../../cli/commands/test/iac-local-execution/types';\nimport { getErrorStringCode } from '../../cli/commands/test/iac-local-execution/error-utils';\n\nexport const services2resources = new Map<string, Array<string>>([\n // Amazon\n [\n 'aws_s3',\n [\n 'aws_s3_bucket',\n 'aws_s3_bucket_analytics_configuration',\n 'aws_s3_bucket_inventory',\n 'aws_s3_bucket_metric',\n 'aws_s3_bucket_notification',\n 'aws_s3_bucket_policy',\n ],\n ],\n [\n 'aws_ec2',\n [\n 'aws_instance',\n 'aws_key_pair',\n 'aws_ami',\n 'aws_ebs_snapshot',\n 'aws_ebs_volume',\n 'aws_eip',\n 'aws_eip_association',\n 'aws_volume_attachment',\n 'aws_launch_configuration',\n 'aws_launch_template',\n ],\n ],\n ['aws_lambda', ['aws_lambda_function', 'aws_lambda_event_source_mapping']],\n [\n 'aws_rds',\n [\n 'aws_db_instance',\n 'aws_db_subnet_group',\n 'aws_rds_cluster',\n 'aws_rds_cluster_endpoint',\n 'aws_rds_cluster_instance',\n ],\n ],\n ['aws_route53', ['aws_route53_record', 'aws_route53_zone']],\n [\n 'aws_iam',\n [\n 'aws_iam_access_key',\n 'aws_iam_policy',\n 'aws_iam_policy_attachment',\n 'aws_iam_role',\n 'aws_iam_role_policy',\n 'aws_iam_role_policy_attachment',\n 'aws_iam_user',\n 'aws_iam_user_policy',\n 'aws_iam_user_policy_attachment',\n ],\n ],\n [\n 'aws_vpc',\n [\n 'aws_security_group',\n 'aws_security_group_rule',\n 'aws_subnet',\n 'aws_default_vpc',\n 'aws_vpc',\n 'aws_default_security_group',\n 'aws_route_table',\n 'aws_default_route_table',\n 'aws_route',\n 'aws_route_table_association',\n 'aws_nat_gateway',\n 'aws_internet_gateway',\n ],\n ],\n [\n 'aws_api_gateway',\n [\n 'aws_api_gateway_resource',\n 'aws_api_gateway_rest_api',\n 'aws_api_gateway_account',\n 'aws_api_gateway_api_key',\n 'aws_api_gateway_authorizer',\n 'aws_api_gateway_base_path_mapping',\n 'aws_api_gateway_domain_name',\n 'aws_api_gateway_gateway_response',\n 'aws_api_gateway_integration',\n 'aws_api_gateway_integration_response',\n 'aws_api_gateway_method',\n 'aws_api_gateway_method_response',\n 'aws_api_gateway_method_settings',\n 'aws_api_gateway_model',\n 'aws_api_gateway_request_validator',\n 'aws_api_gateway_rest_api_policy',\n 'aws_api_gateway_stage',\n 'aws_api_gateway_vpc_link',\n ],\n ],\n [\n 'aws_apigatewayv2',\n [\n 'aws_apigatewayv2_api',\n 'aws_apigatewayv2_api_mapping',\n 'aws_apigatewayv2_authorizer',\n 'aws_apigatewayv2_deployment',\n 'aws_apigatewayv2_domain_name',\n 'aws_apigatewayv2_integration',\n 'aws_apigatewayv2_integration_response',\n 'aws_apigatewayv2_model',\n 'aws_apigatewayv2_route',\n 'aws_apigatewayv2_route_response',\n 'aws_apigatewayv2_stage',\n 'aws_apigatewayv2_vpc_link',\n ],\n ],\n ['aws_sqs', ['aws_sqs_queue', 'aws_sqs_queue_policy']],\n [\n 'aws_sns',\n ['aws_sns_topic', 'aws_sns_topic_policy', 'aws_sns_topic_subscription'],\n ],\n ['aws_ecr', ['aws_ecr_repository']],\n ['aws_cloudfront', ['aws_cloudfront_distribution']],\n ['aws_kms', ['aws_kms_key', 'aws_kms_alias']],\n ['aws_dynamodb', ['aws_dynamodb_table']],\n // Azure\n ['azure_base', ['azurerm_resource_group']],\n ['azure_compute', ['azurerm_image', 'azurerm_ssh_public_key']],\n ['azure_storage', ['azurerm_storage_account', 'azurerm_storage_container']],\n [\n 'azure_network',\n [\n 'azurerm_resource_group',\n 'azurerm_subnet',\n 'azurerm_public_ip',\n 'azurerm_firewall',\n 'azurerm_route',\n 'azurerm_route_table',\n 'azurerm_network_security_group',\n ],\n ],\n ['azure_container', ['azurerm_container_registry']],\n [\n 'azure_database',\n ['azurerm_postgresql_server', 'azurerm_postgresql_database'],\n ],\n ['azure_loadbalancer', ['azurerm_lb', 'azurerm_lb_rule']],\n [\n 'azure_private_dns',\n [\n 'azurerm_private_dns_a_record',\n 'azurerm_private_dns_aaaa_record',\n 'azurerm_private_dns_cname_record',\n 'azurerm_private_dns_mx_record',\n 'azurerm_private_dns_ptr_record',\n 'azurerm_private_dns_srv_record',\n 'azurerm_private_dns_txt_record',\n 'azurerm_private_dns_zone',\n ],\n ],\n\n // Google\n [\n 'google_cloud_platform',\n [\n 'google_project_iam_binding',\n 'google_project_iam_member',\n 'google_project_iam_policy',\n ],\n ],\n [\n 'google_cloud_storage',\n [\n 'google_storage_bucket',\n 'google_storage_bucket_iam_binding',\n 'google_storage_bucket_iam_member',\n 'google_storage_bucket_iam_policy',\n ],\n ],\n [\n 'google_compute_engine',\n [\n 'google_compute_address',\n 'google_compute_disk',\n 'google_compute_global_address',\n 'google_compute_firewall',\n 'google_compute_health_check',\n 'google_compute_image',\n 'google_compute_instance',\n 'google_compute_instance_group',\n 'google_compute_network',\n 'google_compute_node_group',\n 'google_compute_router',\n 'google_compute_subnetwork',\n ],\n ],\n ['google_cloud_dns', ['google_dns_managed_zone']],\n [\n 'google_cloud_bigtable',\n ['google_bigtable_instance', 'google_bigtable_table'],\n ],\n [\n 'google_cloud_bigquery',\n ['google_bigquery_table', 'google_bigquery_dataset'],\n ],\n ['google_cloud_functions', ['google_cloudfunctions_function']],\n ['google_cloud_sql', ['google_sql_database_instance']],\n ['google_cloud_run', ['google_cloud_run_service']],\n]);\n\nexport function verifyServiceMappingExists(services: string[]): void {\n if (services.length == 0) {\n throw new InvalidServiceError('');\n }\n for (const s of services) {\n if (!services2resources.has(s)) {\n throw new InvalidServiceError(\n `We were unable to match service \"${s}\". Please provide a valid service name: ${existingServiceNames()}`,\n );\n }\n }\n}\n\nfunction existingServiceNames(): string {\n let res = '';\n for (const s of services2resources.keys()) {\n res += `${s},`;\n }\n return res.substring(0, res.length - 1);\n}\n\nexport function createIgnorePattern(services: string[]): string {\n return createIgnorePatternWithMap(services, services2resources);\n}\n\nexport function createIgnorePatternWithMap(\n services: string[],\n serviceMap: Map<string, Array<string>>,\n): string {\n let res = '*';\n const seenResources = new Set<string>();\n for (const s of services) {\n const resourcePatterns = serviceMap.get(s);\n for (const rp of resourcePatterns || []) {\n // A resource might belong to multiple services, skip it if already processed\n if (seenResources.has(rp)) {\n continue;\n }\n res += `,!${rp}`;\n seenResources.add(rp);\n }\n }\n return res;\n}\n\nexport class InvalidServiceError extends CustomError {\n constructor(msg: string) {\n super(msg);\n this.code = IaCErrorCodes.InvalidServiceError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n"],"names":[],"sourceRoot":""}
package/dist/cli/index.js CHANGED
@@ -27857,6 +27857,14 @@ const config_1 = __webpack_require__(22541);
27857
27857
  const request_1 = __webpack_require__(52050);
27858
27858
  const user_config_1 = __webpack_require__(28137);
27859
27859
  const getStandardData_1 = __webpack_require__(52984);
27860
+ // Add flags whose values should be redacted in analytics here.
27861
+ // TODO make this less error-prone by baking the concept of sensitivity into the
27862
+ // flag-parsing code, but this is a start.
27863
+ const sensitiveFlags = [
27864
+ 'tfc-token',
27865
+ 'azurerm-account-key',
27866
+ 'fetch-tfstate-headers',
27867
+ ];
27860
27868
  const debug = createDebug('snyk');
27861
27869
  const metadata = {};
27862
27870
  // analytics module is required at the beginning of the CLI run cycle
@@ -27873,6 +27881,15 @@ function addDataAndSend(data) {
27873
27881
  if (Array.isArray(data.args)) {
27874
27882
  // this is an overhang from the cli/args.js and we don't want it
27875
27883
  delete (data.args.slice(-1).pop() || {})._;
27884
+ data.args.forEach((argObj) => {
27885
+ if (typeof argObj === 'object') {
27886
+ Object.keys(argObj).forEach((field) => {
27887
+ if (sensitiveFlags.includes(field)) {
27888
+ argObj[field] = 'REDACTED';
27889
+ }
27890
+ });
27891
+ }
27892
+ });
27876
27893
  }
27877
27894
  if (Object.keys(metadata).length) {
27878
27895
  data.metadata = metadata;