Back to skill

Security audit

Shopify

Security checks for vulnerabilities and agentic risk

Overview

This Shopify integration needs review because its unrestricted admin tool permits destructive store changes beyond the dedicated product tools.

Use a read-only Shopify token for exploration. Before enabling writes, restrict or disable the generic admin tool and require explicit approval for each proposed change, especially deletion. Verify the configured shop hostname before supplying the token.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/server.py
Finding

Generic mutation entry point lacks an enforced approval gate

Content
View full analysis

Impact

Publishing or destructive store changes can occur without verified user approval, subject to the token's API permissions.

Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (6)

Tainted flow: 'request' from os.environ.get (line 125, credential/environment) → urllib.request.urlopen (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/server.py (reported line 137)May include surrounding context.

python
)
    context = ssl.create_default_context(cafile=certifi.where())
    try:
        with urllib.request.urlopen(request, timeout=30, context=context) as response:
            raw = response.read().decode("utf-8")
            parsed = json.loads(raw) if raw else {}
            return parsed if isinstance(parsed, dict) else {"data": parsed}

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
## Authentication

The deployment harness provides a Shopify access token and shop identifier. mcporter passes them into the stdio subprocess via `mcporter.json`; the local server sends the token to Shopify as the admin API access token.

This skill does not claim a refresh-token contract for Shopify. If Shopify rejects the token, reconnect the integration so the deployment harness can provision a new access token.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
## Authentication

The deployment harness provides a Shopify access token and shop identifier. mcporter passes them into the stdio subprocess via `mcporter.json`; the local server sends the token to Shopify as the admin API access token.

This skill does not claim a refresh-token contract for Shopify. If Shopify rejects the token, reconnect the integration so the deployment harness can provision a new access token.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
## Data flow

Tool calls run locally: mcporter spawns this skill's Python MCP server as a subprocess, and that server forwards Shopify Admin API requests with the configured access token. Shopify sees the product, order, customer, and shop data referenced by each call. Use this skill for Shopify-related work only; do not pass unrelated sensitive content through these tools.

## Dependencies

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
The deployment harness provides a Shopify access token and shop identifier. mcporter passes them into the stdio subprocess via `mcporter.json`; the local server sends the token to Shopify as the admin API access token.

This skill does not claim a refresh-token contract for Shopify. If Shopify rejects the token, reconnect the integration so the deployment harness can provision a new access token.

## Data flow

Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were detected: env, network.

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.