T08 · Insecure Dependencies
- Location
assets/viewer.html:6- Finding
Mutable Third-Party JavaScript Dependencies Are Executed Without Integrity Verification
- Content
View full analysis
``` ### Technical Analysis The viewer downloads and executes JavaScript from jsDelivr whenever it is opened. The `marked` dependency has no version constraint, while DOMPurify is pinned only to major version 3. Neither script includes a Subresource Integrity hash. Consequently, the effective code executed by the Skill can change after the Skill package itself has been audited. A compromised CDN, compromised upstream package release, mutable package resolution, or malicious supply-chain update could cause attacker-controlled JavaScript to run in the viewer. The remote scripts execute in the same browser context as the application and can access: - The complete reviewed Markdown document. - The absolute local path stored in `DATA.md_file`. - Review comments entered by the user. - The local submission endpoint at `/api/finish`. - Browser-accessible network APIs that could be used to attempt data exfiltration. This behavior also creates undeclared outbound requests to a third-party service during normal operation. ### Attack Path 1. The user invokes the Skill to review a Markdown document. 2. The local server opens `assets/viewer.html` in the browser. 3. The browser requests `marked` and DOMPurify from jsDelivr. 4. An attacker compromises the CDN response, upstream package, or mutable dependency resolution. 5. The browser executes the attacker-controlled JavaScript in the review page. 6. The malicious script reads the embedded document, absolute file path, or entered comments. 7. The script can alter the review interface or submitted comment payload and can attempt to transmit accessi ...[truncated 684 chars]- Remediation
View remediation
