T03 · Remote Payload Retrieval and Execution
- Location
assets/template.html:735- Finding
Mutable Remote JavaScript Execution Through Unpinned Lucide Dependency in Style A Template
- Content
View full analysis
``` ### Technical Analysis The template loads and executes Lucide from the mutable `@latest` release channel on unpkg. The dependency is neither pinned to an exact version nor protected by a Subresource Integrity hash. Consequently, the code executed by a generated presentation can change after the Skill package has been reviewed. Compromise of the upstream package, package publishing account, CDN delivery path, or mutable release resolution could cause attacker-controlled JavaScript to run when a presentation is opened with network access. This is a remote payload execution channel rather than evidence that the currently served Lucide package is malicious. ### Attack Path 1. An Agent follows the Skill instructions and copies `assets/template.html` into a generated presentation. 2. A user opens the presentation while connected to the network. 3. The browser requests `lucide@latest` from unpkg. 4. An attacker who has compromised the upstream package or delivery channel supplies modified JavaScript. 5. The browser automatically executes that JavaScript in the presentation's page context. 6. The payload can inspect or modify the presentation DOM and access resources available to that browser origin. ### Impact Assessment The attacker would obtain JavaScript execution within the generated presentation's browser context. Potential effects include: - Reading and modifying slide content and same-origin DOM data. - Accessing non-HttpOnly storage available to the presentation origin. - Making attacker-controlled network requests subject to browser security controls. - Replacing presentation controls or displaying deceptive content. ...[truncated 320 chars]- Remediation
View remediation
``` 4. Add a restrictive Content Security Policy that permits scripts only from explicitly trusted sources and avoids `unsafe-eval`. 5. Provide a static or local icon fallback so the presentation remains usable when external resources are unavailable. 6. Update `references/checklist.md` so generated decks are not instructed to retain the mutable `@latest` dependency. ]]>
