Back to skill

Security audit

Maay

Security checks for vulnerabilities and agentic risk

Overview

The skill’s purpose is clear, but it tells users or agents to run an unpinned remote CLI and source a generated shell config while handling paid-service credentials.

Review carefully before installing. Use a pinned and trusted ATXP CLI version, avoid exposing or printing `ATXP_CONNECTION`, and inspect or safely parse `~/.atxp/config` rather than blindly sourcing it in a shell or agent session.

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:17
Finding
Execution of an Unpinned npm Package and Unvalidated Shell Configuration## Vulnerability Details **File Location**: `SKILL.md`, lines 17-18 **Vulnerability Type**: Unpinned third-party dependency execution and unsafe shell configuration loading **Risk Level**: Medium ### Vulnerable Code ```bash # Check if authenticated echo $ATXP_CONNECTION # If not set, login: npx atxp login source ~/.atxp/config ``` ### Technical Analysis The authentication instructions execute `atxp` through `npx` without specifying a reviewed package version or enforcing an integrity constraint. Depending on the local npm environment, `npx atxp login` can download and execute the version currently resolved from the configured npm registry. The effective executable can therefore change after this Skill has been reviewed. The following instruction sources `~/.atxp/config` directly into the active shell. Shell `source` does not treat the file as passive configuration data: it executes every shell expression in the file with the user's privileges. Because the file is created or modified as part of the preceding package-driven login process, a compromised or unexpectedly changed package could place arbitrary commands in it. No evidence establishes that the current `atxp` package or generated configuration is malicious. The vulnerability is the absence of package version and integrity controls combined with execution of an unvalidated generated shell file. ### Attack Path 1. An attacker compromises the npm package, its publisher account, the package distribution process, or the registry resolution path. 2. The attacker publishes or causes resolution of a malicious `atxp` release. 3. A user follows the Skill instructions and runs `npx atxp login`. 4. `npx` retrieves and executes the attacker-controlled package under the user's account. 5. The malicious package can execute commands immediately or write shell commands into `~/.atxp/config`. 6. The user runs `source ~/.atxp/config`, causing any injected shell commands t ...[truncated 676 chars]
Remediation
## Remediation Suggestions 1. Pin `atxp` to a specifically reviewed version instead of resolving the latest available release: ```bash npx --yes atxp@<reviewed-version> login ``` 2. Install dependencies through a lockfile that records exact versions and integrity hashes. Use a reproducible installation mechanism such as `npm ci` where applicable. 3. Verify package provenance, publisher identity, signatures or attestations, and integrity metadata before execution. 4. Do not source a package-generated file as unrestricted shell code. Store the connection value in a data-only format and parse only the expected field. 5. Validate that the configuration file is owned by the current user, has restrictive permissions, is not a symbolic link, and contains only the expected variable before loading it. 6. If shell export syntax is unavoidable, display and review the generated file before use and reject command substitutions, redirections, additional commands, shell functions, and unexpected variable names. 7. Run authentication tooling with least privilege and never invoke these instructions through `sudo` or a privileged service account.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (9)

Rp1

Medium
Category
MCP Rug Pull
Confidence
86% confidence
Finding
The manifest-level description includes a command reference to `npx atxp login` without version pinning, normalizing execution of an unpinned remote package. Even in descriptive metadata, this can propagate insecure operational guidance and contributes to supply-chain risk in downstream consumers of the skill.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The skill instructs users to run `npx atxp` without pinning a specific package version. `npx` resolves and may fetch the latest published package at execution time, creating a supply-chain risk where a compromised or malicious update could execute arbitrary code in the user's environment. Because this skill also deals with authentication, compromise could expose API credentials or local data.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The authentication section tells users to inspect and source credential-related state via `$ATXP_CONNECTION` and `source ~/.atxp/config` without warning that these values are sensitive. In an agent or shared-shell context, this increases the chance of credential disclosure through logs, terminal history, prompt capture, or sourcing of a file whose contents have not been validated. The surrounding context makes this more dangerous because the skill is explicitly designed to authenticate against paid external services.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The login instruction uses `npx atxp login` without a fixed version, which means authentication is performed through whatever package version `npx` resolves at runtime. If that package is swapped, typosquatted, or later compromised, it could steal credentials or alter the authentication flow before sourcing the generated config.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The command example `npx atxp search <query>` executes an unpinned package from the registry. This creates avoidable remote code execution and supply-chain exposure whenever the search tool is invoked, especially risky in an agent skill that may encourage frequent command execution.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The image generation command uses `npx atxp image <prompt>` without version pinning. An attacker controlling or compromising the package release path could execute arbitrary code on the host under the guise of generating media.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The music generation example invokes an unpinned `npx` package, exposing users to the same supply-chain risk as the other commands. Because `npx` may fetch fresh code at runtime, a malicious update could perform actions unrelated to the documented media task.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The video generation command executes `npx atxp video <prompt>` without fixing the package version. This permits silent code changes over time and increases the chance of malicious package execution in environments that trust the skill instructions.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The X/Twitter search example also relies on an unpinned `npx atxp` invocation. This is dangerous because users may execute arbitrary registry-hosted code while expecting a simple search utility, and any compromise could access environment variables or local files.

Static analysis

No suspicious patterns detected.