Fetching from the wire…
Public story · 2026-09-12 · high
Two of the sixteen let a workflow expression reach JavaScript's Function constructor, and a config flag stops it until you can upgrade.
Why now: All sixteen advisories and their fixed versions went up in the same September 12 release, so that's the day the patched builds became available.
n8n published 16 security advisories on September 12, and two of them reach code execution. Anyone self-hosting a version before 1.123.76, 2.37.7 or 2.38.2 is running an instance where a workflow expression can execute arbitrary code on the server. The other fourteen advisories in the batch fix access-control gaps in approval flows, OAuth consent, and session handling.
CVE-2026-86083 works by having a workflow expression override the global JSON.stringify function. The legacy expression engine calls its own code generator during evaluation. That generator ends up emitting the attacker's replacement code instead of the JSON output it expected.
CVE-2026-86076 takes a different path. It rebinds a class-field sanitizer so the expression can reach JavaScript's Function constructor directly.
Both are fixed in 1.123.76, 2.37.7 and 2.38.2. Anyone who can't upgrade immediately has a stopgap. Setting N8N_EXPRESSION_ENGINE=vm turns off the legacy engine both bugs depend on.
An approval gate can be bypassed anonymously by reusing a resumeToken over the chat WebSocket. OAuth consent can also be skipped on a per-resource basis, letting a connected integration through without the prompt n8n is supposed to show.
Project members' personal data is exposed across tenants that shouldn't see each other. Disabled OIDC SSO endpoints keep issuing valid sessions even after an admin turns SSO off, per n8n's security advisory.
Each link below shares sources, entities, or timing with this story.
CVE-2026-55546 at 9.8 sits in verify_math_expression() in QWED-MCP, described by its authors as "a deterministic verification gateway for MCP." It hands the attacker-controlled expression and claimed_result to parse_expr() after normalizing caret syntax, with no global_dict re...
NVD posted nine advisories on August 25, clustering into one shape: a local server assuming a browser can't reach it. PraisonAI validated MCP origins with request_origin.startswith(allowed) against a localhost allowlist, so an attacker-registered localhost.attacker.com passes...
The trick is one line in a file you never read. Manifold Security published eight findings across seven coding agents (Claude Code, Codex, Cursor, Grok Build, Qwen Code, goose, Hermes Agent) that all reduce to the same mechanism. A repository's own .git/config sets core.fsmoni...
1. Use claude agents --json to build session dashboards. Claude Code v2.1.145 outputs all live agent sessions as structured JSON with status, model, elapsed time, and parent relationships. Pipe it into a tmux status bar widget or session picker script for switching between bac...
CVE-2026-55557 at 8.6 covers a Playwright headless-browser MCP server where browser_download writes a response body to join(save_dir, filename) without validating the caller-supplied save_dir, and the state save/load tools honor caller-controlled paths unchanged. The advisory...
GitHub published four advisories against omnigent-ai/omnigent v0.1.0, the meta-harness that runs Claude Code, Codex and Pi under policy and sandboxing. GHSA-jrrm-9hc7-2v3h at CVSS 9.0 lets any user with session edit rights overwrite a shared template agent via PUT /sessions/{i...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.