
Cloud Vulnerability DB
A community-led vulnerabilities database
Code read at bf7eb2c (v1.12.7). Found in an external security review (Oct 2026) and reproduced.
envelope.sanitize (envelope.py:250) checks data and connection only. Its docstring says errors/warnings "are message strings that the caller is responsible for keeping clean", and emit then prints the whole envelope.redact() (envelope.py:471) handles only user:pass@ in URLs. Reproduced: redact("uv reported: token=abc Bearer xyz postgres://u:p@h") returns token=abc Bearer xyz postgres://u:***@h. The exception paths that call it (cli.py:673,685,965, explore/commands.py:1290,1595) therefore pass through any key=value or Bearer secret in an exception message.skills/*/scripts/run.py:319-326 (identical in all three skills) captures uv stderr on a failed --warm and copies its last three lines into errors, along with spec[1], which can contain a local file:// path.Anything a driver, dbt, uv or index URL prints in an error (tokens in URLs, password= fragments, Bearer headers) can end up in the JSON that the agent reads and often echoes to the user or to logs.
emit (or sanitize), run redact() over every entry of errors and warnings, so callers no longer have to.redact() beyond URL credentials: (api[_-]?key|token|secret|password|passwd|pwd)\s*[:=]\s*\S+, Bearer\s+\S+, Authorization:\s*\S+.*, and query-string forms ([?&](token|key|sig|password)=[^&\s]+).run.py warm-up failure: print a fixed message ("warm-up could not install the connector extra; re-run with uv directly to see why"), with no stderr and no spec[1]. The wrapper is stdlib-only, so it must not import redact. Apply the same change to all three copies (test_the_three_wrappers_stay_byte_identical).emit(error("uv reported: token=abc Bearer xyz")) prints neither abc nor xyz.uv whose stderr is token=abc does not put abc in the --warm envelope.run.py files stay byte-identical.6f94352 (main)Still present on main. redact() (envelope.py:536-540) also mishandles the URL form it does cover:
redact("snowflake://bob:p@ss@acct/db") # -> 'snowflake://bob:***@ss@acct/db' (the tail leaks)
redact("clickhouse://default:pw/with/slash@h:8443") # -> unchanged (not redacted at all)The password pattern [^@/\s]+ stops at the first @ and refuses /. Match the userinfo up to the last @ before the host, and allow / in the password.
Further acceptance:
p@ss nor ss appears in redact("snowflake://bob:p@ss@acct/db")pw/with/slash does not appear in redact("clickhouse://default:pw/with/slash@h:8443")
For the record: main has 21 bare error_for(exc) call sites. The ones spot-checked catch dex-authored exception types, though explore/commands.py:3038 also catches a bare ValueError.
Reported by Sthenos Security, found with Reachable. Fixed in exmergo-dex-core 1.16.1.Source: NVD
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."