Back to skill

Security audit

module-tsx

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent guide for browser-side TypeScript/TSX, but users should understand it relies on third-party CDN-hosted JavaScript.

Before using this for production or sensitive pages, pin exact versions for module-tsx and imported packages, prefer an explicit import map, review CDN/privacy implications, and consider self-hosting or vendoring dependencies in high-assurance or offline environments.

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

Unpinned Remote Browser Dependencies Permit Mutable Third-Party Code Execution

Content
View full analysis
` automatically. ``` The primary loading instructions use an unversioned remote script: ```html ``` The complete-page example also loads the unversioned runtime and imports an unpinned package: ```html ``` ```tsx import "@tailwindcss/browser"; ``` Additional examples repeat the unversioned production and development URLs: ```html ``` ```html ``` ### Technical Analysis The recommended runtime URL does not identify an immutable package version and does not use Subresource Integrity. The Skill also automatically rewrites bare package names to CDN URLs and presents dependency version pinning as optional. Consequently, the code reviewed by a developer may differ from the code later returned by the CDN. A compromised CDN account, compromised upstream package, malicious mutable release, or unexpected package-resolution change could cause generated pages to execute altered JavaScript. The browser treats the retrieved module as active code in the page context. The import-map examples at lines 107–108 and 125–129 constrain major versions such as React 18, but they do not pin exact immutable releases. They also do not protect the main `module-tsx` loader with a fixed version or integrity hash. ### Attack Path 1. A user asks the agent to create a build-free TypeScript or TSX page. 2. The a ...[truncated 1333 chars]
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill instructs users to load executable code directly from a third-party CDN and states that bare imports are automatically rewritten to esm.sh, but it does not warn about the trust, availability, privacy, and supply-chain implications of doing so. In a skill specifically designed to execute browser-side TypeScript/TSX without a build step, this omission matters because users are being guided toward remote code execution paths by default.

Content

No source excerpt is available for this finding.