Back to skill

Security audit

Supply Chain Optimization Shopify

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a local supply-chain calculator, but its install and credential guidance plus mismatched Shopify/DTC claims warrant careful review before use.

Install only if you are comfortable with a global, unpinned npx-based install and verify the exact source first. Do not place real Shopify or ShipBob tokens in your shell unless you understand the scopes and storage implications; this reviewed script does not appear to need or use those tokens. Treat the financial output as a rough calculator, not authoritative Shopify/DTC guidance, because several advertised metrics are missing or Amazon/FBA assumptions remain.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:15
Finding

Unpinned Third-Party Global Installation

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
scripts/calculator.py:241
Finding

Unvalidated Selling Price Causes Calculator Denial of Service

Content
View full analysis
Remediation
View remediation
None: numeric_values = { "product_cost": data.product_cost, "shipping_cost_per_unit": data.shipping_cost_per_unit, "selling_price": data.selling_price, "fba_fee": data.fba_fee, "storage_fee": data.storage_fee, "ad_spend_ratio": data.ad_spend_ratio, } for name, value in numeric_values.items(): if isinstance(value, bool) or not isinstance(value, (int, float)): raise ValueError(f"{name} must be numeric") if not math.isfinite(value): raise ValueError(f"{name} must be finite") if data.selling_price <= 0: raise ValueError("selling_price must be greater than zero") if not 0 <= data.ad_spend_ratio <= 1: raise ValueError("ad_spend_ratio must be between 0 and 1") ``` Call this validation immediately after constructing `SupplyChainInput`, and handle `ValueError` before starting analysis. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

The code generally aligns with a supply-chain/operations diagnostic tool: it computes margins, shipping cost ratio, inventory days, cash cycle, cost breakdowns, and bottleneck suggestions. However, the declared description overstates and partly mischaracterizes the functionality. There is no CAC or LTV computation, no explicit customer acquisition efficiency analysis beyond subtracting ad spend as a ratio, and no real 3PL optimization logic or benchmark set. The implementation is also not specifically tailored to Shopify/DTC stores; it includes benchmarks for Amazon, Walmart, TikTok, and Shopify, and several fields/recommendations are Amazon/FBA-centric (for example, fba_fee, Amazon payment cycle comment, FBA storage/fulfillment output). No suspicious undeclared external access or permissions are present, but the description does not accurately represent several advertised capabilities.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code claims platform-specific cash-cycle analysis, but it hardcodes a 14 day Amazon payment cycle for all platforms while using platform-specific cash-cycle benchmarks. This creates materially incorrect output for Shopify, TikTok, and Walmart users and can distort working-capital planning, supplier negotiations, and inventory decisions in a way that is especially dangerous for a financial operations tool.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

The installation command uses npx skills without pinning a specific version, which can cause users to execute whatever package version is current at install time. That creates a supply-chain risk: a compromised or malicious upstream package release could execute arbitrary code on the user's machine during installation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill instructs users to export live Shopify and ShipBob API tokens but provides no warning about credential sensitivity, least-privilege scoping, storage hygiene, or privacy implications. In an e-commerce context, these tokens may grant access to orders, customers, and inventory data, increasing the risk of credential leakage and unauthorized access to sensitive business and customer information.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is marketed for Shopify/DTC analysis, but the implementation and field naming are heavily Amazon/FBA-centric, including fba_fee, Amazon-oriented benchmarks, and report text. This can mislead users into making operational or financial decisions based on the wrong business model, which is a genuine integrity issue for a decision-support calculator even though it is not a classic code-execution flaw.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.