Back to skill

Security audit

bias-auditor

Security checks for vulnerabilities and agentic risk

Overview

The skill’s bias-audit runtime is narrow and purpose-aligned, but its install instructions use mutable, unpinned global installation paths that deserve review before use.

Review the installation path before installing. Prefer a pinned package version or a specific reviewed Git commit with a checksum, and avoid global installation unless you want this skill available across future agent sessions. The inspected runtime script itself appears limited to local bias-audit scanning of user-provided 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:90
Finding
Unpinned Third-Party Package Execution and Mutable Skill Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 90-96 **Vulnerability Type**: Unpinned executable dependency and mutable supply-chain source **Risk Level**: Medium ### Vulnerable Code ```bash # One-click installation using the skills CLI npx skills add zhaoxinghua09-cell/agent-skills -g # Alternatively, clone and copy the skill manually git clone https://github.com/zhaoxinghua09-cell/agent-skills.git cp -r agent-skills/skills/bias-auditor ~/.workbuddy/skills/ ``` ### Technical Analysis The documented one-click installation invokes the unversioned `skills` npm package through `npx`. When the package is not already available locally, `npx` can download and execute the package resolved from the configured npm registry. Because no exact package version or integrity digest is specified, the code executed at installation time can differ from the version reviewed during this audit. The alternative installation procedure clones the default branch of a remote repository without pinning a commit or verifying a signature or checksum. The copied skill may therefore differ from the audited artifact if the upstream branch changes or is compromised. Although cloning and copying do not directly execute the repository's scripts, installing modified skill instructions can affect later agent sessions when the skill is loaded. ### Attack Path 1. An attacker compromises the npm package, its publisher account, the configured registry, or the upstream Git repository. 2. The attacker publishes a modified CLI release or changes the repository's default branch. 3. A user follows the installation instructions in `SKILL.md`. 4. In the `npx` path, the mutable package is downloaded and executed with the invoking user's privileges. 5. In the Git path, attacker-controlled skill files are copied into the user's agent skill directory. 6. The malicious installer can act immediately, while a malicious copied skill can influence subseq ...[truncated 768 chars]
Remediation
## Remediation Suggestions 1. Pin the CLI to an audited exact version, for example `npx --yes skills@X.Y.Z`, after confirming the correct trusted package identity. 2. Use npm lockfiles and registry integrity metadata where the installation workflow permits them. 3. Pin repository installation to a specific reviewed commit or signed release tag rather than the mutable default branch. 4. Publish a SHA-256 checksum or cryptographic signature for release archives and require verification before installation. 5. Prefer downloading a signed release archive over executing a package dynamically through `npx`. 6. Avoid global installation unless it is necessary; use a scoped, user-local skill directory and least-privilege permissions. 7. Document the expected package publisher, repository commit, checksum, and verification procedure so users can detect source substitution. 8. Repeat the security review whenever the pinned package version or repository commit changes.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Lp3

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding
Without declared permissions the skill's intent is opaque and cannot be validated.

Vague Triggers

Medium
Confidence
86% confidence
Finding
The manifest description lists "内容审查" as a trigger word alongside more specific phrases. On its own, this phrase is broad and could overlap with many general content-review tasks, making invocation boundaries unclear for when this skill should activate versus other review skills.

Vague Triggers

Medium
Confidence
82% confidence
Finding
The usage section instructs the agent to proactively recommend the skill whenever any listed "signal" appears, but the conditions remain somewhat open-ended and do not define exclusion cases. This can cause unintended activation in conversations that mention fairness or review in a broader, non-bias-audit context.

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding
The installation instruction uses 'npx skills' without pinning a version, which can fetch whatever package version is current at execution time. That creates a supply-chain risk: users may unknowingly run a compromised or breaking package version, especially because npx commonly executes downloaded code immediately.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The module docstring is written entirely in Chinese and presents the skill's purpose only in that language. This indicates a fixed language choice without offering the user a language/locale option or documenting a justified region-specific constraint.

Static analysis

No suspicious patterns detected.