Back to skill

Security audit

GitHub 通知自动分拣

Security checks for vulnerabilities and agentic risk

Overview

The skill performs the GitHub email triage it describes, with disclosed email forwarding, buffering, archiving, and setup behavior.

Install only if you are comfortable giving the configured mail-cli profile authority to read, send, and mark messages in the GitHub sub-mailbox. Consider pinning @clawemail/mail-cli, reviewing the mail credential scope, and changing the workflow if full urgent-message bodies or repository metadata should not be forwarded or stored.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:13
Finding
Unpinned Global npm Dependency## Vulnerability Details **File Location**: `SKILL.md`, line 13 **Vulnerability Type**: Supply-chain exposure through an unpinned third-party dependency **Risk Level**: Medium **Vulnerable Code Snippet**: ```markdown - `mail-cli` installed (`npm i -g @clawemail/mail-cli`) with API key configured ``` ### Technical Analysis The documented installation command retrieves the current registry version of `@clawemail/mail-cli` without specifying an exact version or verifying package integrity or provenance. Consequently, the code installed by users can differ from the code originally reviewed. npm packages may execute lifecycle scripts during installation. The global installation flag (`-g`) also places the package in a broadly accessible tool location and exposes the installation process to the privileges of the user running npm. Although the audited project does not contain an actively malicious dependency payload, this installation pattern creates a supply-chain trust boundary that is not cryptographically or reproducibly constrained. ### Attack Path 1. An attacker compromises the npm package, its publisher account, or a future package release. 2. The attacker publishes a malicious version under the same package name. 3. A user follows the documented `npm i -g @clawemail/mail-cli` command. 4. npm retrieves the attacker-controlled current version. 5. Malicious lifecycle code can execute during installation, or malicious behavior can execute when the Skill later invokes `mail-cli`. 6. The compromised tool may access the user environment, configured mail credentials, and email content available under that user account. ### Impact Assessment Exploitation could allow arbitrary code execution with the privileges of the user installing or invoking the package. The potential scope includes theft of mail API credentials, unauthorized mailbox operations, access to notification contents, modification of globally installed tooling, ...[truncated 295 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to an exact, reviewed version, for example: ```bash npm install --global @clawemail/mail-cli@<reviewed-exact-version> ``` 2. Document and verify the expected package integrity digest and publisher provenance before installation. 3. Prefer a project-local dependency with a committed lockfile over global installation where operationally feasible. 4. Use `npm ci` with a reviewed lockfile in a controlled installation workflow. 5. Review dependency lifecycle scripts and disable them with `--ignore-scripts` when they are not required. 6. Run the mail client under a dedicated, least-privileged operating-system account and limit the configured API credential to only the mailbox permissions required for triage. 7. Establish an update process in which new dependency versions are audited before the pinned version is changed.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The declared description is for an operational email-triage skill that reacts to inbound GitHub notification emails and sorts them into handling tiers. The supplied code does something materially different: it is an installation/setup script that creates or checks a sub-mailbox and prints manual next steps for GitHub routing. While the setup is related to the same general domain (GitHub notifications via email), it does not implement the described triage behavior, triggers, or message handling actions. Therefore this is a clear description-behavior mismatch.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The instructions hard-code the urgent subject prefix as "[紧急]", and later the daily summary subject uses "[GitHub 日报]" with a fixed Asia/Shanghai timezone. This imposes a specific language/locale choice on users without offering configuration or explaining that the skill is intended only for a Chinese-language or China-region environment.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill instructs forwarding urgent GitHub emails by re-sending the original subject and body to another mailbox, but it does not clearly warn that full email contents may include sensitive repository, incident, or security alert details. This can lead to unintended disclosure, especially if the destination mailbox has broader access, weaker controls, or different retention policies.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly instructs forwarding full GitHub notification subjects and bodies to another email address, which can expose sensitive repository details, security alerts, internal URLs, mentions, and discussion content without minimization or explicit user consent. In an email-triage context this is especially relevant because the behavior is automatic and applies to potentially private notifications at scale.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
The file requires prepending `[紧急]` to forwarded subjects and later defines Chinese-language summary content, but it does not indicate that Chinese output is optional or region-specific. This imposes a specific language/locale behavior without user opt-in.

Ssd 3

Medium
Confidence
96% confidence
Finding
Forwarding original email bodies verbatim can leak sensitive content contained in GitHub notifications, including private code-review context, internal links, security advisories, repository names, and user-generated text. Because the forwarding is automatic and triggered by keywords like security alerts or direct mentions, the skill may amplify exposure of exactly the most sensitive messages.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The summary subject and body are specified in Chinese (`日报`, `待处理通知`, `此邮件由...自动生成`) with no option for another language. Under the policy, forcing a locale-specific output without user choice is a natural-language policy violation.

Ssd 3

Low
Confidence
79% confidence
Finding
The stored summary lines include repository names, titles, URLs, and timestamps, which can reveal private project activity and work patterns when resent to another mailbox. The impact is lower than verbatim body forwarding, but it still expands access to potentially sensitive metadata beyond the source context.

Missing User Warnings

Low
Confidence
89% confidence
Finding
The daily summary sends buffered GitHub metadata to the main email account without any warning or consent flow, which can disclose private repository activity, titles, and workflow context outside the original mailbox. Although less severe than full-body forwarding, it still broadens distribution of potentially sensitive work information through automated processing.

Natural-Language Policy Violations

Low
Confidence
94% confidence
Finding
The script emits a user-facing warning in Chinese ('请保存上面显示的 auth code!仅显示一次。') while the rest of the script is in English. This imposes a language requirement on users without opt-in or explanation, which matches the locale-policy violation criteria.

Static analysis

No suspicious patterns detected.