Back to skill

Security audit

Slides

Security checks for vulnerabilities and agentic risk

Overview

This presentation-building skill is coherent and disclosed, with some normal dependency and credential-handling caution points for users.

Before installing, be aware that the skill may create local files under ~/slides and may use third-party presentation tools. Keep Google service account files private, do not commit creds.json, and prefer pinned package versions or project-local locked dependencies instead of global npm installs.

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
tools.md:210
Finding
Unpinned Third-Party npm Packages Are Installed or Executed## Vulnerability Details **File Locations**: - `tools.md:210-212` - `tools.md:267` - `tools.md:278` **Vulnerability Type**: Unverified and unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code `tools.md:210-212`: ```bash npx slidev slides.md npx slidev build # Export to static npx slidev export # Export to PDF ``` `tools.md:267`: ```bash npm install -g @marp-team/marp-cli ``` `tools.md:278`: ```bash npm install -g decktape ``` ### Technical Analysis These commands install or execute mutable third-party npm packages without pinning reviewed versions or verifying package integrity. If `slidev` is not already available locally, `npx` may resolve it from the configured npm registry and immediately execute package code. The global installation commands can likewise execute package installation logic and npm lifecycle scripts with the permissions of the invoking user. The unscoped `slidev` package reference is additionally ambiguous. Package-name confusion, registry substitution, a compromised publisher account, or a malicious package version could cause code other than the reviewed tool implementation to run. No evidence demonstrates that the named packages are currently malicious; the vulnerability is the unsafe dependency acquisition and execution process. ### Attack Path 1. A user or agent follows the commands documented in `tools.md`. 2. npm or `npx` resolves the package from the user's configured registry without an exact version or integrity requirement. 3. An attacker compromises the resolved package, publisher account, registry, or package-name resolution process. 4. npm downloads the attacker-controlled package or version. 5. Package entry points or lifecycle scripts execute with the privileges of the invoking user. 6. The malicious package can access resources available to that user, including presentation projects, environme ...[truncated 867 chars]
Remediation
## Remediation Suggestions 1. Pin every package to an exact, reviewed version, such as `package-name@x.y.z`. 2. Replace the ambiguous Slidev invocation with the publisher's verified canonical package and executable name. 3. Prefer project-local dependencies committed with a lockfile over global installation. 4. Use `npm ci` with a reviewed lockfile in a controlled project directory. 5. Configure npm to use a trusted registry and enforce lockfile integrity metadata. 6. Disable lifecycle scripts with `--ignore-scripts` where the selected package can operate without them. 7. Record expected package names, versions, publishers, and integrity hashes in the documentation. 8. Run presentation build tools in a sandbox or container with minimal filesystem access and no unnecessary credentials. 9. Periodically audit pinned dependencies for compromised releases and known vulnerabilities before updating them.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Missing User Warnings

Low
Confidence
85% confidence
Finding
This markdown file includes code that loads a service account from 'creds.json', which is a sensitive credential source. The surrounding documentation does not warn users to protect the credential file or avoid exposing it, so the example lacks a basic user disclosure for credential handling.

Static analysis

No suspicious patterns detected.