Back to skill

Security audit

Investment Research

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent investment-research skill, but its setup guide tells users to print full API keys, which can expose credentials.

Review the setup guide before installing. The skill's research behavior appears purpose-aligned, but do not run the documented commands that echo full API keys; verify keys with presence-only checks instead, and rotate any key that has already been displayed in logs, screenshots, recordings, or shared terminal output.

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

Warning
Location
CONFIG.md:89
Finding
API Keys Exposed in Plaintext During Configuration Verification## Vulnerability Details **File Location**: `CONFIG.md`, lines 89–93 **Vulnerability Type**: Plaintext sensitive-data exposure **Risk Level**: Medium ### Vulnerable Code ```bash # Check environment variables echo $QVERIS_API_KEY echo $TAVILY_API_KEY ``` ### Technical Analysis The documented verification procedure prints the complete values of two API keys to standard output. Although the keys are correctly sourced from environment variables rather than hardcoded, displaying their values defeats the confidentiality benefit of that storage mechanism. The secrets may subsequently appear in terminal scrollback, screen-sharing sessions, recordings, support transcripts, CI/CD logs, or other command-output collection systems. Verifying that a variable is configured does not require revealing its value. ### Attack Path 1. A user configures `QVERIS_API_KEY` and `TAVILY_API_KEY`. 2. The user follows the documented verification commands. 3. Both complete credentials are printed in the terminal. 4. An unauthorized party observes the terminal, recording, shared screen, or retained output log. 5. The party copies the exposed credentials and submits requests to the corresponding external services. This path requires access to the resulting terminal output; the documentation does not independently transmit the keys elsewhere. ### Impact Assessment An attacker who obtains the exposed credentials may authenticate to the Qveris or Tavily services with the permissions assigned to those keys. Potential consequences include unauthorized API usage, consumption of paid quotas, service disruption through quota exhaustion, and access to any data or operations permitted by the affected account. The issue does not provide local system privilege escalation or code execution by itself. Its scope is bounded by the permissions, rate limits, billing configuration, and lifetime of the exposed API keys.
Remediation
## Remediation Suggestions Replace value-printing commands with presence-only checks: ```bash if [ -n "${QVERIS_API_KEY:-}" ]; then echo "QVERIS_API_KEY is set" else echo "QVERIS_API_KEY is missing" fi if [ -n "${TAVILY_API_KEY:-}" ]; then echo "TAVILY_API_KEY is set" else echo "TAVILY_API_KEY is missing" fi ``` Apply the following additional controls: 1. Never display full credentials in setup, diagnostic, or validation instructions. 2. If identification is necessary, display only a short, non-sensitive fingerprint rather than any reusable portion of a key. 3. Ensure CI/CD systems and terminal-recording tools redact recognized secret values. 4. Warn users not to paste keys or unredacted diagnostic output into issues, chat systems, or support requests. 5. Revoke and rotate any credential that has already appeared in logs, recordings, screenshots, or shared terminal output. 6. Retain the existing environment-variable configuration and use least-privilege, quota-limited API keys where supported.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
This markdown file contains user-facing instructions exclusively in Chinese, which can amount to a language/locale policy issue when no user opt-in or region-specific justification is provided. Although the title includes an English subtitle, the substantive guidance remains Chinese-only.

Natural-Language Policy Violations

Medium
Confidence
83% confidence
Finding
The README is written almost entirely in Chinese and presents the skill as a general-purpose investment research tool, while only later noting '中英文双语' in the technical specs. For a non-region-specific skill, this creates a language/locale default that may not respect user language preference or offer an explicit opt-in choice.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The skill is written to operate in Chinese throughout and does not provide a user-choice mechanism for language. This can override user expectations, reduce transparency for users who do not read Chinese, and create a prompt-safety issue where warnings, assumptions, or limitations are less likely to be understood or challenged.

Vague Triggers

Low
Confidence
79% confidence
Finding
This manifest file describes the skill broadly as suitable for professional investment research on companies, stocks, ETFs, and industries, but it does not define when the skill should activate or what phrases should invoke it. In a manifest context, the absence of explicit trigger boundaries can make activation scope ambiguous and increase the chance of unintended invocation.

Natural-Language Policy Violations

Low
Confidence
95% confidence
Finding
The cheatsheet content is presented primarily in Chinese throughout the file, with no indication that users can choose another language or that the file is intentionally limited to a Chinese-speaking audience. This is a natural-language policy concern because the skill content imposes a specific language by default rather than making language an explicit opt-in.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
This markdown template presents all primary instructions and section labels in Chinese, which effectively imposes a specific language on users. The file does not offer an opt-in language choice or explain that the template is intended only for a Chinese-language or region-specific workflow.

Static analysis

No suspicious patterns detected.