Back to skill

Security audit

Revealjs Presentations

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward reveal.js presentation template skill with disclosed CDN use and no hidden local or persistent behavior.

Reasonable to install for ordinary reveal.js slide creation. For sensitive, offline, or long-lived hosted presentations, review the CDN dependency choice, pin exact reveal.js versions, add subresource integrity, or vendor the library locally; also adjust the HTML language attribute if the deck is not English.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Warning
Location
assets/template.html:53
Finding

Mutable Remote JavaScript Is Executed Without Integrity Verification

Content
View full analysis
``` ### Technical Analysis The presentation template loads and executes reveal.js directly from jsDelivr using the mutable major-version selector `@5`. This selector can resolve to different reveal.js releases over time, so the code executed by a deployed presentation may differ from the code available when the Skill was audited. The script does not include a Subresource Integrity (`integrity`) hash. Consequently, the browser has no cryptographic mechanism to verify that the downloaded JavaScript matches a reviewed artifact. If the upstream package, publishing account, CDN infrastructure, or a newly resolved version is compromised, attacker-controlled JavaScript could execute in the presentation's browser context. This behavior is disclosed rather than hidden, and no currently embedded malicious payload was identified. The risk arises from allowing a mutable external response to become executable code after review. ### Attack Path 1. An attacker compromises the upstream reveal.js package distribution, its publishing account, the CDN response path, or a future release selected by `@5`. 2. The attacker causes the mutable URL to return modified `reveal.js` code. 3. A user opens a presentation generated from the template. 4. The browser retrieves the remote script from jsDelivr without verifying an integrity hash. 5. The malicious JavaScript executes with the same browser origin and page privileges as the presentation. 6. The payload can inspect or modify the presentation DOM, read browser-accessible same-origin data, issue network requests subject to browser security controls, and misrepresent presentation content to viewers. ### Impact Assessment Successful exploitation provides browse ...[truncated 805 chars]
Remediation
View remediation
``` 2. **Add Subresource Integrity** using a hash generated from the exact deployed file. Recalculate and review the hash intentionally during dependency upgrades. 3. **Prefer vendoring the dependency locally** for presentations that require deterministic or offline operation: ```html ``` 4. Apply exact version pinning and integrity verification to all optional reveal.js plugin scripts and externally hosted stylesheets documented by the Skill. 5. Introduce a controlled dependency-update process that includes release review, vulnerability scanning, and testing before changing the pinned version. 6. Deploy an appropriately restrictive Content Security Policy. Limit `script-src` to trusted local assets or exact approved CDN sources, and use a nonce or hash for the inline `Reveal.initialize` block. ]]>
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
Findings (1)

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The HTML template hard-codes lang="en", which imposes an English locale by default. Under the policy, forcing a specific language without user opt-in or clear justification is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.