Back to skill

Security audit

contract-clause-check

Security checks for vulnerabilities and agentic risk

Overview

The skill itself is a simple local Chinese contract-clause checker, but its install instructions fetch mutable remote content and install it globally without pinning or verification.

Review the installer before use. Prefer installing from a pinned commit or release and avoid global installation unless you trust the publisher and repository. The reviewed script runs locally and appears narrow, but the documented install path could pull newer unreviewed content.

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:81
Finding
Unpinned Third-Party Installer and Mutable Remote Skill Source## Vulnerability Details **File Location**: `SKILL.md`, lines 81–87 **Vulnerability Type**: Supply-chain exposure through unpinned executable tooling and mutable remote content **Risk Level**: Medium ```bash # One-click installation (skills CLI) npx skills add zhaoxinghua09-cell/agent-skills -g # Or manually: clone and copy this skill into the Agent skill directory git clone https://github.com/zhaoxinghua09-cell/agent-skills.git cp -r agent-skills/skills/contract-clause-check ~/.workbuddy/skills/ ``` ### Technical Analysis The documented installation process invokes the `skills` npm CLI through `npx` without specifying an exact package version or verifying package integrity. Depending on the local npm configuration and cache state, `npx` can retrieve and execute the package currently published under that name. Consequently, the code executed during installation is not necessarily the code reviewed in this artifact. The manual installation alternative clones a mutable repository default branch rather than a specific commit or signed release. It performs no checksum, signature, or provenance verification before copying repository content into an agent's skill directory. The `-g` option further installs the retrieved skill into a global environment. Although the audited local Python scanner contains no malicious behavior, these instructions create a supply-chain boundary through which future or compromised remote content could differ from the reviewed artifact. ### Attack Path 1. An attacker compromises the npm package, its publisher account, the referenced GitHub repository, or another relevant distribution component. 2. The attacker publishes a modified installer or adds malicious instructions or scripts to the mutable repository content. 3. A user follows the installation instructions in `SKILL.md`. 4. `npx` executes the unpinned package, or `git clone` retrieves the altered default branch, without integrity or sign ...[truncated 934 chars]
Remediation
## Remediation Suggestions 1. Pin the npm CLI to a reviewed exact version, for example by using `npx --yes skills@<exact-version>`, and lock its transitive dependencies where supported. 2. Pin repository installation instructions to an immutable commit hash or versioned release tag rather than the default branch. 3. Publish SHA-256 checksums or cryptographic signatures for release artifacts and require verification before installation. 4. Prefer a package manager mode that enforces lockfiles and integrity metadata instead of executing an implicitly resolved package. 5. Avoid global installation by default. Install into a project-scoped, isolated skill directory with least-privilege permissions. 6. Require users or automation to inspect the resolved package contents, scripts, and skill instructions before activation. 7. Protect publisher and repository accounts with multi-factor authentication, restricted release permissions, branch protection, and auditable release workflows. 8. Document the exact trusted version, commit, checksum, and expected file inventory so users can verify that installed content matches the audited artifact.
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 (5)

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The installation instruction uses `npx skills add ...` without pinning a specific package version, which can cause execution of whatever package version is current at install time. If the upstream package is compromised, typo-squatted, or publishes a malicious update, users following the skill instructions may run unreviewed code on their systems.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This code presents its command description, argument help, and user-facing results entirely in Chinese. Under the language/locale policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is clearly documented and justified.

Natural-Language Policy Violations

Low
Confidence
0% confidence
Finding
This file is a markdown file, so SQP-1 and SQP-3 are in scope, and SQP-2 for markdown warnings would only apply if the file described risky behavior. The content is only an attestation/metadata record and does not contain activation triggers, risky behavior descriptions, or a forced locale policy.

Natural-Language Policy Violations

Low
Confidence
81% confidence
Finding
The English summary says "One-command pre-screening for 法律," leaving a key term only in Chinese. This effectively assumes Chinese comprehension in an English-facing description and does not provide a clear language choice or fully localized wording.

Natural-Language Policy Violations

Low
Confidence
77% confidence
Finding
The manifest sets the category to "AI 治理", which imposes a specific language in user-visible metadata. There is no indication that the skill is region-specific or that users can choose an alternate locale, so this may violate the language/locale policy requirement.

Static analysis

No suspicious patterns detected.