Back to skill

Security audit

ai-incident-log

Security checks for vulnerabilities and agentic risk

Overview

This is a local AI incident ledger with no hidden network or destructive behavior, but its unpinned global install command and plaintext logs deserve care.

Install only from a source and version you trust, prefer a pinned package or commit over the mutable `npx`/default-branch commands, and store the JSONL incident file somewhere private because incident descriptions may contain sensitive operational details.

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:79
Finding
Unpinned npm Package Is Downloaded and Executed During Installation<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:79` **Vulnerability Type**: Unpinned third-party package execution **Risk Level**: Medium ### Vulnerable Code ```bash npx skills add zhaoxinghua09-cell/agent-skills -g ``` ### Technical Analysis The documented installation command invokes the npm package named `skills` through `npx` without specifying a version or integrity constraint. If the package is not already available locally, `npx` can retrieve the current package release from the configured npm registry and execute its CLI code. Because package resolution is mutable, the code executed by this command is not fully represented by the audited project. A future compromised, malicious, or incompatible version of `skills`, a compromised publisher account, or a manipulated package registry could cause arbitrary code to run during installation. The `-g` argument also requests a global Skill installation. Although this does not itself grant operating-system administrator privileges, it can modify persistent files in the user's global Agent or Skill environment. ### Attack Path 1. An attacker compromises the npm package, its publisher account, or the registry path used to resolve `skills`. 2. The attacker publishes a malicious version containing hostile CLI or installation behavior. 3. A user follows the documented command without specifying an audited version. 4. `npx` resolves and downloads the attacker-controlled package version. 5. The package executes with the privileges of the invoking user. 6. The malicious package can access user-readable data, modify user-writable files, or install altered Skill content into the global Skill environment. This path is conditional on compromise or malicious replacement of the external dependency; no malicious code was found in the project files themselves. ### Impact Assessment Successful exploitation could execute arbitrary code with the invoking user's privileges. The reachable scope includes fi ...[truncated 305 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the CLI to a specific reviewed version, for example: ```bash npx --yes skills@<reviewed-version> add zhaoxinghua09-cell/agent-skills -g ``` 2. Record and verify the expected npm publisher, package provenance, and integrity information before execution. 3. Prefer a lockfile-controlled installation process where possible. 4. Avoid global installation unless it is required; install into a dedicated, least-privileged environment. 5. For stronger reproducibility, recommend cloning a pinned commit rather than the mutable default branch: ```bash git clone https://github.com/zhaoxinghua09-cell/agent-skills.git cd agent-skills git checkout <audited-commit-sha> ``` 6. Document the exact reviewed package version or repository commit in `SKILL.md` and update it only after security review. ]]>
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 (8)

Lp3

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

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
The user-facing documentation and operational guidance are presented entirely in Chinese, while the skill is described as cross-platform and generally applicable rather than region-specific. There is no stated language choice, opt-in, or justification limiting the skill to Chinese-speaking users, which creates a locale-policy concern.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The installation instruction uses `npx skills` without pinning a specific package version, which can cause users to fetch and execute whatever version is current at install time. If the upstream package is compromised, renamed, or changes behavior, the skill installation path becomes a supply-chain execution risk.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
Nearly all docstrings, help text, and console output are presented only in Chinese, which forces a specific language for users of the skill. Under the stated policy, locale or language constraints should either be optional for the user or clearly documented and justified as region-specific.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The tool records free-form incident descriptions, model names, owners, and response actions directly to a JSONL file in plaintext, with no warning, masking, access control, or encryption. Because incident logs often contain sensitive operational details, personal data, customer data, or internal security events, this can create an unintended confidentiality risk if the file is stored on shared systems, backed up broadly, or checked into repositories.

Natural-Language Policy Violations

Low
Confidence
81% confidence
Finding
SQP-3 applies to all file types and covers natural-language language/locale policy violations. Line L06 contains a core policy/assertion only in Chinese, and this file does not indicate that users may choose their preferred language or that the locale restriction is required.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The file presents core skill information in both Chinese and English, including untranslated Chinese text on lines 7 and 9. Under the policy rule, language or locale constraints should be optional or explicitly justified; here there is no stated user opt-in or explanation for the mixed-language requirement.

Natural-Language Policy Violations

Low
Confidence
77% confidence
Finding
The manifest uses Chinese-only category text ("AI 治理"), which may indicate a language/locale constraint in user-facing metadata. There is no accompanying note that the skill is region-specific or that users can choose a different language/locale, so this could conflict with a language/locale choice policy.

Static analysis

No suspicious patterns detected.