Analysis · DiggingBeagle record
When an agent extension inherits your secrets
Five 2026 records show how workflow nodes, agent skills, MCP servers and memory plugins can become private-data attack paths once they inherit legitimate authority. The evidence does not support blaming free or open-source software as a class: the documented failures include malicious third-party packages, compromised legitimate releases, mutable remote semantics and a separate product authorization bug.
Overview
Free or open-source is not the security mechanism. The risk begins when a workflow node, agent skill, MCP server or memory plugin inherits credentials, files, prompts or execution — and malicious or compromised code can exercise that authority as if it were legitimate integration work.
Five 2026 records show four different ways that trust can fail, plus one important counterexample. Some demonstrate live malicious packages or services; another demonstrates a product authorization flaw without established exploitation. There is no defensible single victim count or loss figure across them.
The short causal chain
The common sequence is simple: a useful extension is installed or connected, the host gives it authority needed for legitimate work, and then malicious code, malicious instructions or mutable remote metadata uses that same authority for another purpose.
| Case | What the component legitimately receives | What failed | What the evidence establishes |
|---|---|---|---|
| n8mare / n8n community nodes | Integration credentials and outbound network access | A malicious node used the normal credential path and sent OAuth material outward | Malicious package behavior and credential-exfiltration logic; victim count not established |
| OpenClaw / ClawHub skills | Agent access to local files, shell, credentials and authenticated sessions | Malicious skill instructions used the agent as the executor | Human-confirmed malicious payloads and later malicious skills in the marketplace; victim count not established |
| Deadbugz MCP server | Model-visible tool definitions from a connected remote server | Tool and prompt metadata changed after three normal calls | Live delayed semantic mutation; reviewed delivery PRs were unmerged and successful victim theft is not established |
| MemTensor memory plugin | Host environment and, during recall, current prompt text | Legitimate published versions carried the sckit implant |
Malicious releases, credential-collection behavior and prompt transfer into the malicious child process; not proof that every prompt left the host |
| n8n inline Agent flaw | Credential-schema resolution for an authenticated member | Project ownership was not checked on the pre-model introspection path | A patched authorization flaw that could expose another project's secret; exploitation in the wild is not established |
The table matters because these are not one incident type. A fake extension, a malicious skill, a mutable remote service, a compromised legitimate package and a product authorization bug need different controls.
A workflow node can steal a credential without breaking its encryption
The n8mare campaign is the cleanest business-automation example. Endor Labs documented npm packages masquerading as useful n8n community nodes. One Google Ads-themed node requested the configured OAuth credential through n8n during ordinary workflow execution and sent it, together with host identifiers, to attacker-controlled infrastructure.
Nothing in that path required the package to crack n8n's credential storage. Once installed, the node was running where legitimate integrations are expected to receive decrypted credentials and make outbound requests. The security boundary had already moved from “is the credential encrypted at rest?” to “which code is allowed to receive it at runtime?”
Registry download numbers do not answer how many people were compromised. A download is not a unique installation, an installation is not necessarily an execution, and an execution is not automatically a successful theft. The canonical record therefore keeps the malicious behavior separate from any unsupported victim denominator.
An agent skill can make the agent perform the dangerous action
OpenClaw skills show a different route. A skill can be mostly instructions rather than a conventional binary, but that does not make it low-authority. Unit 42 describes malicious skills that used the agent's own filesystem, shell, credential-manager or authenticated-session capabilities; Snyk separately found human-confirmed malicious payloads designed for credential theft, backdoors or exfiltration.
The denominators need care. Snyk scanned 3,984 skills and found 1,467 with at least one security issue, while its intentionally malicious subset was a separate 76 human-confirmed payloads. Unit 42 later reported five malicious skills that remained unblocked during its February-May study window. Those numbers describe different populations. None is a victim count.
Marketplace scanning and takedowns helped: Unit 42 says the five skills it reported were removed and associated accounts were banned. But the same study documents scanner-evasion behavior, including padding intended to exceed or confuse scanning.
A remote tool can change after you approve it
Deadbugz is important because the attacker did not need to swap a local package after installation. Pillar observed a remote MCP service called productivity-suite behave like an ordinary text tool for three calls and then change the tool and prompt metadata presented to the connected agent. The later metadata directed the agent toward SSH keys, AWS credentials, shell history and Kubernetes configuration while also trying to conceal the activity.
This is a post-approval problem. If a user approves only the server's identity once, but the server can later change the semantics the model sees, identity approval does not bind future behavior.
The evidence boundary is unusually important here. Pillar documented the malicious service and a public delivery campaign, but all 23 reviewed campaign pull requests were unmerged at review time. The record does not establish that a victim installed one through those pull requests or that credentials were successfully stolen from a victim.
A legitimate plugin can become malicious between versions
MemTensor removes another comforting shortcut: “I checked the publisher, so the package is trusted.” On September 23, malicious releases of the legitimate @memtensor/memos-cloud-openclaw-plugin and MemoryOS packages carried the sckit implant.
The OpenClaw plugin was valuable precisely because of where it lived. StepSecurity's reproduction shows the compromised plugin launching the payload from ordinary gateway and memory-recall paths. The child process inherited the host process environment, and the recall path additionally supplied the current user prompt. OSV documents home-directory credential collection and communication with infrastructure under skyleen.fr.
That still needs a hard distinction. The launcher code establishes that prompt text reached the malicious child process; it does not by itself prove that every supplied prompt was successfully transmitted off-host. Likewise, replacing the affected package stops future execution of that artifact but does not revoke credentials that may already have been reachable. Package cleanup and credential response are separate jobs.
The counterexample: no malicious extension is required
The n8n inline Agent advisory belongs in the same article because it prevents the wrong conclusion. Here the problem was not a malicious community node at all.
n8n reported that inline Agent tool-schema introspection could decrypt a caller-selected credential before the language model was consulted. The project-ownership check used on the normal invocation path was missing from this earlier path, so an authenticated member who knew a credential ID could cause another instance credential's plaintext secret to be sent to a chosen host. Credential IDs themselves were not treated as secrets and could appear in workflow JSON, exports or editor URLs.
Versions 2.39.6 and 2.40.1 patched the flaw, and NVD later assigned CVE-2026-103246. The cited records do not establish exploitation in the wild. This is a product authorization defect, not evidence that n8n intentionally steals user data.
What actually belongs inside the trust boundary
The repeated pattern is not “open source is unsafe.” It is that extensions sit inside the effective security boundary once the host gives them useful authority.
For business automation, four questions are more useful than the license badge:
- What can this component read? Credentials, prompts, files, browser state, local environment variables and connected SaaS data are different authority classes.
- Where can it send data? Outbound network access turns a read capability into a potential exfiltration path.
- Can its code or semantics change after review? Package updates, compromised publishers and mutable MCP definitions all break one-time trust decisions in different ways.
- Which controls live outside the extension? Least-privilege credentials, egress policy, package/version verification, renewed approval for semantic changes and host-side authorization checks remain meaningful even when the extension's own instructions are hostile.
Controls block different failure modes
| Control | What it reduces | What it does not prove |
|---|---|---|
| Prefer built-in or verified integrations; review publisher and package/version | Exposure to unknown or look-alike packages | That a trusted publisher can never be compromised |
| Least-privilege service accounts and outbound-network controls | Blast radius and silent exfiltration | That installed code is benign |
| Fingerprint MCP tool definitions and require renewed approval on material changes | Post-approval semantic mutation like Deadbugz | That an approved remote service cannot misuse already-approved capabilities |
| Marketplace scanning and takedowns | Known malicious artifacts and signatures | That a clean scan is a safety guarantee |
| Patch the host application | Known product authorization flaws | That no secret was exposed before the patch |
| Rotate reachable credentials after a package compromise | Continued use of potentially stolen secrets | That deleting the package reverses prior exposure |
What this evidence does not support
These cases do not support calling free software, open-source software, n8n, OpenClaw or MCP implementations spyware as a class. They also do not support adding package downloads, marketplace listings or scanner findings into one victim number.
The stronger conclusion is narrower and more operational: an extension becomes security-critical when useful work requires privileged context. At that point, the important questions are what authority it inherits, whether that authority is independently constrained, and whether code or semantics can change without a new trust decision.
That is why a “free module” can become expensive without the word free being the cause.
Research behind this
Cite this record
DiggingBeagle. “When an agent extension inherits your secrets.” https://diggingbeagle.com/articles/agent-extensions-inherited-authority-private-data/