Back to skill

Security audit

Financial Research

Security checks for vulnerabilities and agentic risk

Overview

This finance-report skill is coherent, but it can automatically install unverified AnyGen tooling and workflows while routing financial data to a third-party service.

Install only if you trust AnyGen with the financial material you provide and are comfortable with its CLI and workflow installer changing the agent environment. Prefer a pinned/audited CLI version, review the installed workflow before use, and avoid sending confidential portfolio, company, or client data unless your AnyGen account and policies allow it.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:10
Finding
Unpinned Third-Party CLI Dependency<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 10-14 **Vulnerability Type**: Unpinned and unverifiable third-party dependency **Risk Level**: Medium ### Vulnerable Code ```yaml install: - id: node kind: node package: "@anygen/cli" bins: ["anygen"] ``` ### Technical Analysis The skill declares `@anygen/cli` without a fixed version, lockfile, integrity hash, or package signature. Consequently, the package resolved during installation can differ from the package that was available when the skill was audited. This creates a supply-chain risk: compromise of the package, its maintainer account, the package registry, or a transitive dependency could cause malicious code to be installed. Depending on the package manager's behavior, such code could run through installation lifecycle scripts or when the `anygen` executable is subsequently invoked. ### Attack Path 1. An attacker compromises the `@anygen/cli` package, its publication account, registry distribution path, or a dependency it resolves. 2. The attacker publishes a malicious release under the expected package name. 3. The skill installation process resolves the mutable package reference to that malicious release. 4. Malicious code runs during package installation, if lifecycle scripts are enabled, or when the installed `anygen` command is invoked. 5. The code executes with the privileges and environment of the user running the agent. ### Impact Assessment Successful exploitation could allow code execution under the installing user's account. The malicious dependency could access files, environment variables, network connectivity, and credentials available to that process, potentially including `ANYGEN_API_KEY`. The scope is limited by the privileges and isolation controls applied to the agent or package installer. ]]>
Remediation
<![CDATA[ ## Remediation Suggestions - Pin `@anygen/cli` to a specifically audited version rather than using a mutable package reference. - Use a lockfile and verify the package with a registry-provided integrity digest or trusted cryptographic signature. - Restrict installation to an explicitly trusted package registry. - Disable package lifecycle scripts where operationally possible. - Audit direct and transitive dependencies before deployment. - Run installation and execution in a sandbox with minimal filesystem, network, and environment-variable access. - Avoid exposing `ANYGEN_API_KEY` to package installation processes unless it is strictly required. ]]>

T03 · Remote Payload Retrieval and Execution

Warning
Location
SKILL.md:40
Finding
Unverified Remote Skill Installation with Automatic Confirmation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 40-46 **Vulnerability Type**: Unreviewed remote payload installation **Risk Level**: Medium ### Vulnerable Code ```markdown Follow the `anygen-workflow-generate` skill with operation type `finance`. If the `anygen-workflow-generate` skill is not available, install it first: ```bash anygen skill install --platform <openclaw|claude-code> -y ``` ``` ### Technical Analysis The fallback procedure directs the agent to install external skill content through the AnyGen CLI using `-y`, which suppresses an interactive confirmation step. The command does not identify a pinned workflow version, immutable source, checksum, or trusted signature. Because the remotely resolved skill can change after this repository has been reviewed, its effective instructions or executable components are outside the audited project. Loading such content without inspection introduces both remote payload and supply-chain exposure. ### Attack Path 1. The `anygen-workflow-generate` skill is absent from the local environment. 2. The fallback instruction triggers `anygen skill install` with automatic confirmation. 3. The CLI resolves and downloads the skill from its configured remote source. 4. An attacker-controlled or compromised source supplies modified skill instructions or executable components. 5. The agent loads or follows the installed workflow. 6. The remote content can influence agent actions and, if it contains or invokes executable components, operate with the agent process's available permissions. Exploitation depends on compromise or malicious control of the remote distribution source, the CLI's resolution path, or the distributed workflow artifact. ### Impact Assessment A malicious installed skill could alter subsequent agent behavior, cause unintended tool calls, expose data accessible to the agent, or invoke executable content. The maximum scope is determined by the agent's filesystem, network, cre ...[truncated 157 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Pin `anygen-workflow-generate` to an immutable, audited version and an explicitly trusted source. - Require cryptographic signature or checksum verification before installation. - Remove `-y` so that installation requires explicit user authorization. - Display the source, version, permissions, instructions, and executable files for review before loading the skill. - Audit the downloaded skill and any scripts or dependencies it references. - Separate installation from activation so newly downloaded instructions are not automatically trusted in the current session. - Execute external skills in a sandbox with least-privilege filesystem, network, credential, and tool access. - Fail safely when the required workflow is unavailable instead of automatically installing mutable remote content. ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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 (2)

Vague Triggers

Medium
Confidence
96% confidence
Finding
The activation text is very broad and instructs the agent to use this skill for nearly any financial-analysis-related request, including generic terms like stock research, portfolio analysis, and investor memos. Overbroad triggering can cause the agent to invoke an external CLI and send sensitive user prompts or financial data to a third-party service when a narrower or local response would have been sufficient.

Natural-Language Policy Violations

Low
Confidence
72% confidence
Finding
The manifest mixes English and Chinese trigger phrases as activation cues, but does not explain language-selection behavior, offer user opt-in, or justify a locale-specific policy. This can create a language/locale policy concern because the skill appears to encode language-specific behavior without documenting choice or constraints.

Static analysis

No suspicious patterns detected.