Back to skill

Security audit

Publish service-change feed

Security checks for vulnerabilities and agentic risk

Overview

The skill’s GTFS checking workflow is clear, but its setup can pull changing third-party code and it enables automatic use of a remote service.

Install only if you trust the PowMCP source and are comfortable with a remote service receiving direct public GTFS Schedule URLs. Prefer a pinned version or reviewed commit before running the npx install command, and do not provide private feeds, authenticated links, credentials, or sensitive query strings.

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:37
Finding

Unpinned Third-Party Skill Installation Creates a Supply-Chain Risk

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 37-40
Vulnerability Type: Unpinned third-party package and repository installation
Risk Level: Medium

Vulnerable Code

markdown
## Connect once

npx skills add powmcp/skills --skill publish-service-change-feed

text

Technical Analysis

The documented setup command invokes an unpinned package through npx and installs Skill content from the mutable powmcp/skills repository reference. It does not specify an exact package version, repository commit, checksum, signature, or integrity metadata.

As a result, the code and Skill content retrieved when a user runs this command may differ from the content that was reviewed during this audit. Compromise of the package registry entry, upstream repository, publisher account, or a mutable release could cause the installation process to retrieve attacker-controlled code or instructions.

The external MCP endpoint documented elsewhere in the project is required for the declared remote GTFS validation functionality and is disclosed to users. The project also limits validation inputs to public, unauthenticated GTFS URLs and warns users not to repeat credentials. No confirmed secret collection or hidden exfiltration behavior was found. The confirmed issue is therefore the mutable and unverified installation path, rather than the disclosed GTFS validation request itself.

Attack Path

  1. An attacker compromises the npm package used by npx, the powmcp/skills repository, a maintainer account, or another mutable upstream distribution component.
  2. The attacker publishes modified installation logic or malicious Skill content under the same unpinned identifier.
  3. A user follows the installation command in SKILL.md.
  4. npx retrieves and runs the currently available package, which then obtains Skill content from the mutable upstream reference.
  5. The substituted code executes during installation ...[truncated 987 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the npx package to an exact, reviewed version rather than resolving the latest available release.
  2. Pin the Skill repository to a specific immutable commit hash or signed release tag.
  3. Publish expected cryptographic checksums or signed provenance for the installed files and verify them before activation.
  4. Prefer a declarative installation method that does not execute remotely retrieved package lifecycle code where feasible.
  5. Use lockfiles and package-manager integrity metadata for all transitive dependencies involved in installation.
  6. Run installation in a restricted environment with least-privilege filesystem access, no unnecessary credentials, and limited network access.
  7. Document the exact expected files and versions so users can compare installed content with the reviewed release.
  8. Establish dependency monitoring and a release-signing process for the npm package, repository, and MCP integration.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (3)

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
85% confidence
Finding

Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.

Content

Scanner excerpt · references/gtfs-feed-check.md (reported line 82)May include surrounding context.

md
## Structurally unassessable cases

The tools cannot assess a portal page, local path, authenticated resource, GBFS feed, or GTFS-Realtime feed because the input contract requires directly hosted public GTFS Schedule ZIP bytes.
The tools do not judge whether scheduled service occurs in the real world. That requires human schedule review.
The comparison cannot support a same-agency regression claim when the inputs belong to different agencies or when fewer or more than two URLs are supplied.
Distributor-specific acceptance remains outside the measured profile and must be reviewed against the applicable distributor's rules.

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.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill enables allow_implicit_invocation without any visible trigger constraints, exclusions, or user-confirmation guardrails. That can cause the agent to invoke an external MCP tool based on loose relevance matching, increasing the chance of unintended network calls, processing of sensitive URLs or feed data, and user-confusing actions without explicit consent.

Content

No source excerpt is available for this finding.