bridgecrewio / checkov

Prevent cloud misconfigurations and find vulnerabilities during build-time in infrastructure as code, container images and open source packages with Checkov by Bridgecrew.
https://www.checkov.io/
Apache License 2.0
6.76k stars 1.08k forks source link

KeyError tf_source_modules error since v3.2.34 #6085

Open fatbasstard opened 4 months ago

fatbasstard commented 4 months ago

Describe the issue Got a fatal exception since yesterday

Examples Please share an example code sample (in the IaC of your choice) + the expected outcomes.

Exception Trace

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/checkov/main.py", line 518, in run
    self.scan_reports = runner_registry.run(
                        ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/checkov/common/runners/runner_registry.py", line 126, in run
    self.runners[0].run(root_folder, external_checks_dir=external_checks_dir, files=files,
  File "/usr/local/lib/python3.11/site-packages/checkov/terraform/runner.py", line 134, in run
    self.check_tf_definition(report, root_folder, runner_filter, collect_skip_comments)
  File "/usr/local/lib/python3.11/site-packages/checkov/terraform/runner.py", line 235, in check_tf_definition
    self.run_all_blocks(
  File "/usr/local/lib/python3.11/site-packages/checkov/terraform/runner.py", line 311, in run_all_blocks
    self.run_block(
  File "/usr/local/lib/python3.11/site-packages/checkov/terraform/runner.py", line 365, in run_block
    caller_context = definition_context[module_full_path].get(BlockType.MODULE, {}).get(module_name)
                     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
KeyError: tf_source_modules:{"path": "/github/workspace/modules/xxx/main.tf", "name": "yyy", "foreach_idx": "10.25.5.7", "nested_tf_module": {"path": "/github/workspace/terraform/nldevoc/brewery.tf", "name": "www", "foreach_idx": "nldevun", "nested_tf_module": null}}, file_path:/github/workspace/modules/xxx/yyy/main.tf
Traceback (most recent call last):
  File "/usr/local/bin/checkov", line 9, in <module>
    sys.exit(Checkov().run())
             ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/checkov/main.py", line 518, in run
    self.scan_reports = runner_registry.run(
                        ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/checkov/common/runners/runner_registry.py", line 126, in run
    self.runners[0].run(root_folder, external_checks_dir=external_checks_dir, files=files,
  File "/usr/local/lib/python3.11/site-packages/checkov/terraform/runner.py", line 134, in run
    self.check_tf_definition(report, root_folder, runner_filter, collect_skip_comments)
  File "/usr/local/lib/python3.11/site-packages/checkov/terraform/runner.py", line 235, in check_tf_definition
    self.run_all_blocks(
  File "/usr/local/lib/python3.11/site-packages/checkov/terraform/runner.py", line 311, in run_all_blocks
    self.run_block(
  File "/usr/local/lib/python3.11/site-packages/checkov/terraform/runner.py", line 365, in run_block
    caller_context = definition_context[module_full_path].get(BlockType.MODULE, {}).get(module_name)
                     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
KeyError: tf_source_modules:{"path": "/github/workspace/modules/xxx/main.tf", "name": "yyy", "foreach_idx": "10.25.5.7", "nested_tf_module": {"path": "/github/workspace/terraform/nldevoc/brewery.tf", "name": "www", "foreach_idx": "nldevun", "nested_tf_module": null}}, file_path:/github/workspace/modules/xxx/yyy/main.tf
|

Desktop (please complete the following information):

Additional context

Anonymized code:

locals {
  breweries = {
    nldevun = {
      key1 = "string"
      key2 = "string"
      key3 = true
      key4 = "string"
      key5 = {
        key1 = "10.10.12.16"
        key2 = "10.25.5.1"
        key3 = ["10.25.5.5", "10.25.5.7"]
        key4 = ["10.25.5.6"]
      }
    }
  }
}

Tried running locally, but brew supports only version 3.2.30

maclema commented 3 months ago

Running into the same issue. Not totally certain why yet. However, this only started occurring when adding a for_each iterator on my module. Without the for_each, the module passes checkov perfectly. Once adding the for_each, I run into this same error.

fatbasstard commented 1 month ago

Still getting this error. Is anybody able to take a look at this?

thiagoanegreiros commented 1 month ago

Still getting this error as well

fatbasstard commented 1 week ago

Still in 3.1.186