Back to skill

Security audit

SkillLens Audit

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent security-audit purpose, but it asks users to run or globally install an unpinned third-party CLI, so it should be reviewed before use.

Install only if you trust the SkillLens package source. Prefer a pinned reviewed version, a project-local lockfile install, or checksum/provenance verification, and avoid the global install unless you need it. Run scans against explicit skill directories rather than broad configured roots.

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:9
Finding
Unpinned Third-Party Package Execution## Vulnerability Details **File Location**: `SKILL.md`, lines 9–10 **Vulnerability Type**: Unpinned package retrieval, execution, and global installation **Risk Level**: Medium ### Vulnerable Code ```markdown - One-off run: `npx skilllens scan` (or `pnpm dlx skilllens scan`) - Global install: `pnpm add -g skilllens` ``` ### Technical Analysis The documented commands retrieve the latest available `skilllens` package from the configured package registry without specifying a reviewed version, lockfile, checksum, or other integrity control. Both `npx` and `pnpm dlx` can download and immediately execute package code. The global installation command additionally installs the unpinned package into the user's global package environment. This creates a supply-chain trust boundary in which the code executed by users can change after the skill has been reviewed. Package compromise, malicious ownership transfer, registry-account compromise, or an unsafe registry configuration could therefore introduce arbitrary code. The static pre-scan warning concerning `curl | bash` does not represent an actual remote-execution instruction in this project. The phrase appears only at `SKILL.md:39` as an example of behavior auditors should detect. ### Attack Path 1. An attacker compromises the package publisher, a package release, or the registry source used by the package manager. 2. The attacker publishes a malicious version under the expected `skilllens` package name. 3. A user or agent follows the documented unpinned `npx`, `pnpm dlx`, or global installation command. 4. The package manager retrieves the attacker-controlled release. 5. Package lifecycle hooks or CLI entry-point code execute with the privileges of the invoking user. 6. The malicious package can access resources available to that user and, for a global installation, leave package files or commands in the global package environment. ### Impact Assessment Successful exploitation could execute arbitrary code wit ...[truncated 653 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to a specific reviewed version, for example by documenting `npx skilllens@<reviewed-version> scan`. 2. Prefer a project-local dependency recorded in a lockfile rather than downloading and executing the latest package on each use. 3. Verify package provenance through the official publisher, registry metadata, release signatures, or documented integrity hashes. 4. Remove or discourage global installation unless it is operationally necessary. 5. Require explicit user confirmation before downloading, installing, or executing third-party packages. 6. Run the tool with ordinary user privileges in a restricted environment that exposes only the target directory and required network access. 7. Establish an update-review process so new package versions are inspected and approved before changing the pinned version.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Ae1

High
Category
analysis-evasion
Content
y (Codex/Claude) and produce a risk-focused audit report based on each skill's `SKILL.md` and bundled resources.
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
y (Codex/Claude) and produce a risk-focused audit report based on each skill's `SKILL.md` and bundled resources.
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

External Script Fetching

High
Category
Supply Chain
Content
5. Evaluate risks (focus on realistic abuse)
   - **Exfiltration**: sending file contents, env vars, tokens, SSH keys, browser data, or configs to remote endpoints.
   - **Execution**: instructions to run arbitrary shell commands, `curl | bash`, `eval`, or to fetch-and-execute code.
   - **Persistence**: modifying shell profiles, launch agents, cron, editor configs, or skill install locations.
   - **Privilege/approval bypass**: instructions to ignore system policies, disable safety checks, or request escalated permissions unnecessarily.
   - **Prompt injection**: attempts to override higher-priority instructions (“ignore previous”, “always comply”, “never mention…”).
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Self-Modification

High
Category
Rogue Agent
Content
- **Exfiltration**: sending file contents, env vars, tokens, SSH keys, browser data, or configs to remote endpoints.
   - **Execution**: instructions to run arbitrary shell commands, `curl | bash`, `eval`, or to fetch-and-execute code.
   - **Persistence**: modifying shell profiles, launch agents, cron, editor configs, or skill install locations.
   - **Privilege/approval bypass**: instructions to ignore system policies, disable safety checks, or request escalated permissions unnecessarily.
   - **Prompt injection**: attempts to override higher-priority instructions (“ignore previous”, “always comply”, “never mention…”).
   - **Overbroad triggers**: vague descriptions that cause the skill to trigger on unrelated tasks.
Confidence
90% confidence
Finding
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Anti-Refusal Statement

High
Category
Anti-Refusal
Content
- **Execution**: instructions to run arbitrary shell commands, `curl | bash`, `eval`, or to fetch-and-execute code.
   - **Persistence**: modifying shell profiles, launch agents, cron, editor configs, or skill install locations.
   - **Privilege/approval bypass**: instructions to ignore system policies, disable safety checks, or request escalated permissions unnecessarily.
   - **Prompt injection**: attempts to override higher-priority instructions (“ignore previous”, “always comply”, “never mention…”).
   - **Overbroad triggers**: vague descriptions that cause the skill to trigger on unrelated tasks.

6. Produce a report
Confidence
70% confidence
Finding
Skill instructs the agent to never refuse or to always comply. Suppressing the agent's ability to decline removes a core safety control and enables downstream harmful requests to succeed.

Rp1

Medium
Category
MCP Rug Pull
Confidence
81% confidence
Finding
The skill instructs users to run `npx skilllens scan`, which fetches and executes a package without pinning an exact version. This creates a supply-chain risk: a compromised or maliciously updated package could execute arbitrary code on the user's machine during installation or invocation.

Static analysis

No suspicious patterns detected.