Back to skill

Security audit

ai-decision-log

Security checks for vulnerabilities and agentic risk

Overview

The skill itself is a straightforward local decision logger, but its documented global install path uses an unpinned remote npx command that deserves review before use.

Review the installer before using the one-command global install. Prefer a pinned or manually verified source checkout, confirm the expected publisher and version, and avoid logging sensitive decision content, secrets, or regulated data unless you control the log path and retention process.

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:76
Finding
Unpinned npm Package Execution in Installation Instructions## Vulnerability Details **File Location**: `SKILL.md`, line 76 **Vulnerability Type**: Supply-chain risk caused by executing an unpinned third-party package **Risk Level**: Medium ```bash # One-command installation using the skills CLI npx skills add zhaoxinghua09-cell/agent-skills -g ``` ### Technical Analysis The documented installation command invokes the npm package named `skills` through `npx` without specifying an exact version, integrity hash, lockfile, registry, or expected publisher identity. If the package is absent from the local npm cache, `npx` may download the version currently resolved by the configured registry and execute its package lifecycle or CLI code. As a result, the executable installation path is not fully represented by the audited project. Its behavior can change after this Skill has been reviewed. Registry compromise, maintainer-account compromise, package replacement, or an unexpectedly unsafe future release could cause users following the documentation to execute attacker-controlled code. The bundled Python script does not exhibit this behavior; the issue is confined to the documented `npx` installation path. ### Attack Path 1. An attacker compromises the npm package, publisher account, registry resolution path, or a future release resolved under the package name `skills`. 2. A user follows the one-command installation instruction in `SKILL.md`. 3. `npx` resolves and downloads the attacker-controlled or compromised package version. 4. npm executes the package's CLI and potentially its lifecycle scripts with the installing user's privileges. 5. The malicious package can modify files accessible to that user, including Agent skill directories targeted by the global installation, and may execute unrelated system actions. ### Impact Assessment Successful exploitation permits code execution with the privileges of the user running the installation command. The accessible scope may include the ...[truncated 409 chars]
Remediation
## Remediation Suggestions 1. Pin the installer to an exact, reviewed package version rather than allowing mutable latest-version resolution. 2. Document the expected npm registry, package publisher, and package identity so users can verify provenance. 3. Publish and verify an integrity digest or signed provenance record for the approved installer artifact. 4. Disable or avoid npm lifecycle scripts where feasible, and document a safer installation path that does not execute remotely resolved code. 5. Prefer downloading a versioned source archive or commit, verifying its checksum or signature, reviewing it locally, and then copying the Skill into the intended directory. 6. Re-audit the exact installer package and version before recommending it as the primary installation method. 7. Correct the version inconsistency between `SKILL.md` (`1.1.0`) and `manifest.json` (`1.0.0`) to improve artifact provenance and release traceability.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Lp3

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding
The skill advertises operational behavior that involves reading and writing files (for JSONL decision logging) but does not declare any tool scope such as permissions or allowed-tools. That omission weakens least-privilege controls because an agent may be allowed to perform filesystem actions without an explicit user-visible boundary, increasing the chance of unintended data access or modification.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The operational documentation, warnings, and usage guidance are presented entirely in Chinese, while the skill targets general platforms and agents rather than a clearly China-specific or Chinese-only compliance context. This can violate a language/locale policy when users are not given an explicit language option or informed opt-in.

Rp1

Medium
Category
MCP Rug Pull
Confidence
81% confidence
Finding
The installation instruction uses `npx skills` without a pinned version, so users may fetch and execute whatever package version is current at install time. This creates a supply-chain risk: a compromised or incompatible upstream release could alter behavior or run unexpected code during installation.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This file contains natural-language strings for the module docstring, CLI description, help text, and status messages exclusively in Chinese. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is clearly documented and justified, which is not present here.

Natural-Language Policy Violations

Low
Confidence
79% confidence
Finding
This file uses Chinese throughout most of the content and title formatting, with no indication that users can choose their preferred language. The policy specifically calls for flagging language or locale constraints when a skill forces a specific language without user opt-in.

Natural-Language Policy Violations

Low
Confidence
90% confidence
Finding
The file mixes English with Chinese-only phrases such as the title and policy text, but does not state that the skill is region-specific or provide an explicit language opt-in. This can violate language/locale policy expectations because users are not given a clear choice of language.

Static analysis

No suspicious patterns detected.