Back to skill

Security audit

@shopify/draggable — Drag & Drop Interaction Skill

Security checks for vulnerabilities and agentic risk

Overview

This is a documentation-only drag-and-drop helper skill, with a supply-chain hygiene note because its install examples use unpinned npm and CDN references.

Reasonable to install as documentation guidance. For production, pin @shopify/draggable to a reviewed version, use a lockfile or deterministic install, avoid mutable CDN imports or pin the CDN version, and consider maintained alternatives because the original project is no longer maintained.

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

Unpinned Third-Party Package and CDN Module

Content
View full analysis
Built on Shopify's @shopify/draggable (MIT license, v1.2.1). ``` However, the recommended npm command does not pin that version: ```bash npm install @shopify/draggable ``` The recommended CDN import is also unpinned: ```html ``` ### Technical Analysis Both installation methods resolve dependency content that can change after this skill has been reviewed. The npm command installs the package version selected by the registry and npm's resolution rules rather than the documented version 1.2.1. A future release, compromised publisher account, registry compromise, or malicious package update could therefore introduce code that was not included in this audit. The jsDelivr URL similarly omits an explicit package version. Consequently, the returned browser module may change when the package's current release changes. Because the URL is imported as JavaScript, any compromised content would execute in the consuming application's browser context. The inline module import also provides no integrity hash that binds execution to a previously reviewed artifact. The audited file is documentation rather than an executable script, and there is no evidence that the currently published package or CDN content is malicious. The vulnerability arises when a user follows the mutable installation instructions. ### Attack Path 1. An attacker compromises the upstream package publisher, distribution account, npm registry entry, or CDN delivery path. 2. The attacker publishes or serves a modified release containing malicious JavaScr ...[truncated 1245 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep

Static analysis

No suspicious patterns detected.