Back to skill

Security audit

local-mail-digest

Security checks across malware telemetry and agentic risk

Overview

This email-digest skill is mostly purpose-aligned, but its privacy claims understate optional network paths that can send email-derived content off the computer.

Review this before installing if your mailbox contains sensitive personal, business, legal, or financial information. The default file-processing path appears local, but do not use --llm unless the endpoint is one you control, and do not use --webhook unless you are comfortable sending sender names, subjects, deadlines, and summary content to that service. The publisher should correct the local-only privacy claims or enforce a true local-only mode.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (14)

Tainted flow: 'req' from open (line 528, file read) → urllib.request.urlopen (network output)

High
Category
Data Flow
Content
endpoint, data=json.dumps(payload).encode("utf-8"),
        headers={"Content-Type": "application/json"})
    try:
        with urllib.request.urlopen(req, timeout=180) as r:
            resp = json.loads(r.read().decode("utf-8"))
        content = resp["choices"][0]["message"]["content"]
        result = _extract_json(content)
Confidence
96% confidence
Finding
with urllib.request.urlopen(req, timeout=180) as r:

Tainted flow: 'req' from open (line 528, file read) → urllib.request.urlopen (network output)

High
Category
Data Flow
Content
url, data=json.dumps(payload).encode("utf-8"),
        headers={"Content-Type": "application/json"})
    try:
        with urllib.request.urlopen(req, timeout=10) as r:
            resp = r.read().decode("utf-8")
        print(f"[推送] Webhook({wh_type}) 响应: {resp[:80]}")
        return True
Confidence
95% confidence
Finding
with urllib.request.urlopen(req, timeout=10) as r:

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill documents capabilities to read and write local files, invoke shell commands, and use network access, but does not declare permissions or clearly constrain those operations. In an agent ecosystem, undeclared capabilities reduce transparency and can cause hosts or users to grant broader trust than warranted, especially because the skill handles sensitive email content.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The description frames the skill as a local email summarizer, but the documented behavior includes sending email contents or summaries to configurable LLM endpoints, SMTP, and chat webhooks. That mismatch is dangerous because users may expose sensitive mail data under the assumption that processing remains local, while the skill can transmit derived or raw content off-host.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
Claiming 'data does not leave the computer' while also advertising SMTP and webhook delivery is a direct contradiction that can mislead users about confidentiality guarantees. Since the processed data is email-derived and may contain sensitive business or personal content, inaccurate privacy claims materially increase the risk of unintended disclosure.

Intent-Code Divergence

High
Confidence
99% confidence
Finding
The adapter section states that data remains entirely on the computer even though the example immediately supports pushing results to a remote webhook. This misleading assurance is especially risky in a mail-processing skill because users may enable webhook notifications without realizing summaries, tasks, or metadata are being sent to external services.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
This code implements outbound delivery of summaries via SMTP and webhooks despite the skill being described as local and privacy-preserving. That mismatch is security-relevant because operators, users, or orchestrating agents may invoke the skill under false assumptions and leak sensitive email-derived data externally. The issue is not merely documentation quality; it undermines informed consent and safe deployment decisions.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The optional LLM enhancement sends up to 1500 characters of each email body plus headers to a network endpoint, which directly contradicts the claim that data stays on the computer. In a privacy-sensitive email-processing skill, hidden or under-disclosed network transmission is a meaningful vulnerability because it can expose confidential communications to third parties or attacker-controlled endpoints.

Intent-Code Divergence

Medium
Confidence
90% confidence
Finding
The header comment states the skill only performs local retrieval and structuring, but the implementation can also transmit summaries externally. Such misleading internal assertions can propagate into packaging, agent prompts, or reviews, causing the component to be trusted in higher-sensitivity environments than its real behavior warrants. This is primarily a trust and deployment-safety issue rather than a memory/code-execution flaw.

Intent-Code Divergence

High
Confidence
99% confidence
Finding
The top-level messaging repeatedly promises that data does not leave the computer, yet the code contains multiple mechanisms for sending email content or derived summaries over the network. In a mail-processing skill, that discrepancy is dangerous because the threat model is dominated by confidentiality, and misleading privacy guarantees can directly cause sensitive disclosures. Users are more likely to enable the skill in trusted contexts precisely because of those claims.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The skill description claims data stays on the computer, but the adapter can POST email-derived summary content to an arbitrary external webhook URL. This creates a confidentiality risk because sensitive sender names, subjects, projects, and deadlines can leave the local machine despite the privacy claim, which can mislead users into enabling behavior they would otherwise avoid.

Intent-Code Divergence

High
Confidence
97% confidence
Finding
The inline documentation states that data does not leave the computer, yet the code supports outbound network delivery of digest content via webhook. This mismatch is security-relevant because operators and downstream hosts may rely on the documented privacy guarantee and inadvertently exfiltrate email-derived information.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The webhook feature sends email-derived digest data externally without an explicit user-facing warning at the point of use. In the context of a skill marketed as local and zero-config, this increases the chance of accidental disclosure because users may not realize that enabling --webhook causes off-device transmission.

Natural-Language Policy Violations

High
Confidence
98% confidence
Finding
The natural-language privacy claim conflicts with the actual optional webhook behavior, creating a deceptive trust boundary around sensitive email processing. Because this skill handles personal or business communications, misleading assurances can directly contribute to unintended data exposure to third-party services.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.