Back to skill

Security audit

lgd-fin-guard

Security checks for vulnerabilities and agentic risk

Overview

The skill itself is a local finance-compliance checklist tool, but its documented install path asks users to execute an unpinned remote CLI and install from a mutable repository globally.

Review before installing. The packaged script appears purpose-aligned and local-only, but avoid the one-line global `npx` install unless you trust the current npm package, registry, and full remote repository. Prefer installing only the reviewed `lgd-fin-guard` files from an immutable commit or release, and verify the contents before adding it to a global agent skills directory.

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:77
Finding
Unpinned Third-Party CLI Execution and Overbroad Global Installation## Vulnerability Details **File Location**: `SKILL.md`, line 77 **Vulnerability Type**: Supply-chain risk from an unpinned executable dependency **Risk Level**: Medium ### Vulnerable Code ```bash npx skills add zhaoxinghua09-cell/agent-skills -g ``` ### Technical Analysis The installation instructions invoke the third-party `skills` CLI through `npx` without specifying an immutable package version or integrity hash. Depending on the local npm configuration and cache state, `npx` may download and execute the package version currently available from the configured registry. The executed code can therefore change after this Skill has been audited. The command also requests global installation with `-g` and references the complete remote `agent-skills` repository rather than restricting installation to the audited `lgd-fin-guard` artifact. This expands the trust boundary to include the dynamically resolved CLI package, the current contents of the remote repository, and other Skills that were not part of this audit. No malicious behavior was found in the packaged `scripts/fin_guard.py`; the risk arises from the documented installation path and its mutable external dependencies. ### Attack Path 1. An attacker compromises the package resolved as `skills`, its publishing account, the configured npm registry, or the referenced repository. 2. The attacker publishes malicious CLI code or inserts malicious content into the repository after this artifact was reviewed. 3. A user follows the documented command in `SKILL.md`. 4. `npx` downloads and executes the dynamically resolved CLI package. 5. The CLI retrieves the repository's current contents and installs them globally. 6. Malicious package lifecycle behavior, CLI logic, or repository content executes or becomes available in the user's global agent environment. ### Impact Assessment Successful exploitation could execute code with the privileges of the user running `npx`. Depending on those privileges and the be ...[truncated 593 chars]
Remediation
## Remediation Suggestions 1. Pin the CLI to an explicitly reviewed version rather than allowing dynamic resolution: ```bash npx --yes skills@<reviewed-version> ... ``` 2. Lock the source repository to an immutable commit SHA or signed release tag instead of installing from the mutable default branch. 3. Verify downloaded artifacts using a published cryptographic checksum or signature before execution or installation. 4. Avoid global installation where possible. Install into a dedicated, least-privileged Skill directory or isolated environment. 5. Install only the `lgd-fin-guard` Skill rather than the entire `agent-skills` repository. 6. Disable or carefully review package lifecycle scripts and inspect the exact resolved package before first use. 7. Document the expected CLI package name, version, source, digest, repository commit, and resulting installed files so users can independently verify the installation. 8. As a safer alternative, provide a release archive containing only this Skill, publish its checksum, and instruct users to verify and extract it without executing a remotely resolved installer.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The install instruction uses `npx skills add zhaoxinghua09-cell/agent-skills -g` without pinning a specific package version or commit. This causes users to execute whatever package version is current at install time, creating a supply-chain risk if the package is updated maliciously, compromised, or replaced; in a skill README context, users are likely to copy-paste the command directly, increasing exposure.

Natural-Language Policy Violations

Low
Confidence
92% confidence
Finding
The file's natural-language content is primarily in Chinese, and the heading duplicates only the title in English while the substantive statements remain Chinese-only. This can impose a language preference on users without opt-in, which matches the language/locale policy violation category.

Natural-Language Policy Violations

Low
Confidence
94% confidence
Finding
The skill description is written entirely in Chinese and does not indicate that other languages are supported or that the user can choose their preferred language. Under the policy rule for language/locale constraints, this can be a natural-language policy violation because it implicitly enforces a specific language without opt-in.

Static analysis

No suspicious patterns detected.