Back to skill

Security audit

Passive Income Tracker

Security checks for vulnerabilities and agentic risk

Overview

The skill fits its finance-tracking purpose, but it tells users to place live financial API keys in a plain Markdown config and does not clearly scope sensitive account access.

Install only if you are comfortable connecting financial accounts. Use read-only, least-privilege API keys where possible, do not paste live credentials into Markdown files that may be read by agents or committed to source control, and verify local storage, backup, deletion, and revocation procedures before syncing real accounts.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:55
Finding
Plaintext Financial API Credentials in Agent-Readable Configuration## Vulnerability Details **File Location**: `SKILL.md`, lines 55–67 **Vulnerability Type**: Plaintext sensitive credential storage **Risk Level**: High ### Vulnerable Code Snippet ```markdown 在 `TOOLS.md` 中添加以下配置: ```markdown ### Passive Income Tracker 支持的平台和 API Keys: - Gumroad: (API Key) - Patreon: (API Key) - YouTube: (API Key) - Amazon Associates: (API Key) - Teachable: (API Key) - Stripe: (API Key) - PayPal: (API Key) ``` ### Technical Analysis The skill instructs users to place credentials for seven financial platforms directly in a Markdown configuration file. It does not require environment variables, an operating-system keychain, a dedicated secret manager, restrictive file permissions, or secret redaction. Because `TOOLS.md` is agent-readable plaintext, credentials entered as instructed could be exposed through agent context, diagnostic output, logs, source-control commits, backups, or other local processes with access to the file. The statement at `SKILL.md:86` that sensitive financial data is encrypted does not explicitly cover API credentials, and the package contains no implementation demonstrating credential encryption. The README recommends read-only API keys, but the configuration instructions do not enforce scopes. The actual impact therefore depends on the privileges assigned to each user-provided key. ### Attack Path 1. A user follows the setup instructions in `SKILL.md`. 2. The user inserts live Gumroad, Patreon, YouTube, Amazon Associates, Teachable, Stripe, or PayPal API credentials into `TOOLS.md`. 3. The plaintext file is subsequently read by an agent or local process, included in logs or backups, or accidentally committed to source control. 4. An unauthorized party retrieves one or more exposed credentials. 5. The party authenticates to the corresponding platform API and performs operations allowed by each key's configured scopes. ### Impact Assessment Successful expl ...[truncated 549 chars]
Remediation
## Remediation Suggestions - Do not store API credentials directly in `TOOLS.md` or any other agent-readable Markdown file. - Retrieve credentials from environment variables, an operating-system credential store, or a dedicated secret-management service. - Keep only non-sensitive secret identifiers or environment-variable names in configuration files. - Require least-privilege, read-only API scopes for every supported platform and document the exact required permissions. - Validate configured scopes where platform APIs permit inspection, and reject unnecessarily privileged credentials. - Apply restrictive filesystem permissions to any local credential material. - Redact secrets from prompts, command output, exception traces, telemetry, logs, generated reports, and backups. - Add secret-bearing files to source-control ignore rules and use automated secret scanning in development and release workflows. - Encrypt credentials at rest with keys stored separately from the encrypted data; document key generation, storage, rotation, and recovery procedures. - Provide credential revocation and rotation guidance for suspected exposure. - Replace the current configuration example with placeholders referencing secure secret sources, and add an explicit warning never to paste or commit live credentials into Markdown files.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README promotes connecting many external financial platforms and syncing sensitive income data, but it does not prominently warn users about the risks of granting API access, handling financial records, or verifying local storage and backup protections. In a finance-focused skill, this omission can lead users to connect live accounts without understanding exposure around API keys, data leakage, incorrect permissions, or backup destinations.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The trigger list includes generic phrases like 'passive income', 'income analysis', and 'financial dashboard' that could appear in ordinary conversations and unintentionally activate the skill. Because this skill is designed to aggregate sensitive financial data and potentially use stored API-backed access, overbroad activation increases the chance of unwanted access to financial workflows or disclosure of private income information.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill explicitly references syncing multiple platforms and storing API keys for services like Stripe, PayPal, Patreon, and YouTube, but it does not clearly disclose what data is accessed, whether it is transmitted externally, or what permissions are required. In a financial context, this lack of transparency is dangerous because users may expose sensitive revenue, tax, and account-linked data without informed consent or understanding of data flows.

Natural-Language Policy Violations

Low
Confidence
86% confidence
Finding
The README content is presented almost entirely in Chinese and does not indicate that the skill is region- or language-specific, nor does it offer users a language choice. Under the policy, forcing a specific language without opt-in can be a natural-language policy violation when no justification is documented.

Natural-Language Policy Violations

Low
Confidence
95% confidence
Finding
Most of the natural-language instructions and headings are written in Chinese, which effectively forces a specific language for users reading or invoking the skill. The file does not indicate that Chinese is optional, provide an alternative language, or justify a region-specific constraint.

Static analysis

No suspicious patterns detected.