store-promo-shots
Warn
Audited by Gen Agent Trust Hub on Sep 17, 2026
Risk Level: MEDIUMCOMMAND_EXECUTIONDYNAMIC_EXECUTIONINDIRECT_PROMPT_INJECTION
Full Analysis
- [DYNAMIC_EXECUTION]: The script
scripts/render_promo.pygenerates temporary HTML files for rendering by directly interpolating values from thepromo.jsonmanifest into a<style>block and HTML attributes. Fields such asbg,fg, andsubin the theme configuration, as well as theframeproperty, are not escaped or validated against a whitelist. This enables arbitrary CSS and JavaScript injection into the headless browser environment during the rendering process. - [INDIRECT_PROMPT_INJECTION]: The skill is vulnerable to indirect prompt injection because it processes a JSON manifest (
promo.json) that may be generated or modified by the AI agent based on untrusted external data (e.g., brand guidelines or color palettes fetched from the web). - Ingestion points: The
promo.jsonfile, specifically thethemeandslidesobjects, which control the rendering parameters. - Boundary markers: Absent; the skill instructions do not include warnings to the agent regarding the sanitization of configuration values.
- Capability inventory: The skill invokes a headless browser using
subprocess.runwith the--allow-file-access-from-filesflag. This permission allows any injected script to read and potentially exfiltrate local system files that the browser can access. - Sanitization: Partial; while
html.escapeis correctly applied to user-provided text elements like headlines and subtitles, it is completely absent for values injected into CSS variables and HTML class attributes. - [COMMAND_EXECUTION]: The script
scripts/render_promo.pyusessubprocess.runto launch external browser binaries (Google Chrome, Chromium, or Microsoft Edge). While the command is constructed as a list, preventing standard shell injection, the browser's execution context is compromised by the unsanitized HTML content it is directed to render. The static analysis hint regarding shell command execution is a false positive as the implementation uses list-based arguments, but the browser's capabilities (file access) make the execution context high-risk.
Audit Metadata