Back to skill

Security audit

skill-mcp

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent demo skill that discloses its runnable script and reports limited runtime metadata, with no evidence of hidden execution, persistence, network access, or destructive behavior.

Install only if you are comfortable running a demo script that prints runtime metadata, including environment variable names, into the tool result. Prefer using it in a constrained test environment rather than one with sensitive or revealing environment names.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The description frames this as a simple example skill demonstrating package shape and a runnable script, but the actual code actively inspects and outputs execution-context data. Even though it avoids printing environment variable values, it still accesses process environment metadata, argv, and cwd—capabilities not reflected in the declared purpose or permissions. That makes the code behavior materially more specific and operational than the description suggests.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 8)May include surrounding context.

md
- script: scripts/report.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 30)May include surrounding context.

md
- script: scripts/report.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 36)May include surrounding context.

md
- script: scripts/report.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 20)May include surrounding context.

md
A directory holding `SKILL.md` — YAML frontmatter (`name`, `description`, and

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
95% confidence
Finding

The script enumerates all environment variable names and writes them to stdout, which the file itself notes is returned directly in a tool result without downstream redaction. Even without exposing values, variable names can reveal the presence of secrets, cloud providers, internal systems, CI platforms, and security products, which is sensitive reconnaissance data and can aid follow-on attacks or leak execution-context details to an untrusted caller.

Content

Scanner excerpt · scripts/report.js (reported line 8)May include surrounding context.

js
const report = {
  argv: process.argv.slice(2),
  cwd: process.cwd(),
  envNames: Object.keys(process.env).sort(),
  node: process.version,
};
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill declares a runnable Node.js script that can inspect runtime context, including environment variable names, but does not declare any explicit tool scope such as permissions or allowed-tools. Even though it only reports variable names rather than values, this still exposes code-execution capability and runtime introspection without clear least-privilege constraints, which increases risk if the pattern is copied into real skills.

Content

No source excerpt is available for this finding.