Back to skill

Security audit

Slide Generation

Security checks for vulnerabilities and agentic risk

Overview

This slide-generation skill is coherent and mostly static; the main caution is that its Marp themes load external font/CSS resources when slides are rendered.

Install only if you are comfortable with a Chinese-language Marp course template and with slide rendering potentially contacting external font/CSS providers. For sensitive or offline environments, vendor the remote CSS/font assets locally or disable outbound network access during rendering.

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
assets/themes/am_template.scss:5
Finding
Unpinned Third-Party CSS and Font Resources Loaded During Rendering## Vulnerability Details **File Location**: `assets/themes/am_template.scss`, lines 5–6 **Vulnerability Type**: Insecure third-party dependencies **Risk Level**: Medium ### Vulnerable Code ```scss @import 'https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css'; @import url(https://fonts.bunny.net/css?family=charm:700); ``` The affected base theme is transitively loaded by the course theme: ```scss /* assets/themes/am_blue_course.scss, line 3 */ @import 'am_template'; ``` ### Technical Analysis The required `am_blue_course` theme imports `am_template.scss`, which retrieves CSS and font resources from BootCDN and Bunny Fonts when the rendering environment permits remote resource loading. Although the Font Awesome URL names version `6.4.0`, neither remote import is locally vendored or protected by an integrity check. The effective content therefore remains controlled by external infrastructure after the Skill package has been reviewed. A compromised CDN, DNS route, upstream asset, or remote account could return altered CSS or references to additional remote resources. The requests also expose network metadata—such as the renderer's IP address, request timing, and HTTP headers—to third parties. Rendering is consequently not fully offline, deterministic, or reproducible. This is a supply-chain exposure rather than evidence that the current remote resources are malicious. ### Attack Path 1. A user invokes the Skill to create a Marp presentation using the required `am_blue_course` theme. 2. `assets/themes/am_blue_course.scss:3` imports the local `am_template` theme. 3. The renderer processes the remote imports at `assets/themes/am_template.scss:5–6`. 4. The rendering environment connects to BootCDN and Bunny Fonts. 5. If either delivery path is compromised, an attacker can return modified CSS or references to attacker-controlled resources. 6. The renderer processes that attacker-controlled content within the capabilities and security boundari ...[truncated 771 chars]
Remediation
## Remediation Suggestions 1. Download and audit the required Font Awesome stylesheet, font files, and Charm font assets. 2. Store those resources inside the project and reference them using local, project-relative paths. 3. Pin vendored resources to reviewed versions and record checksums in the release process. 4. Remove all runtime `http://` and `https://` imports from the SCSS themes. 5. Configure the Marp renderer or surrounding sandbox to deny outbound network access during compilation and rendering. 6. If remote resources are operationally unavoidable, restrict outbound access to an explicit allowlist, use immutable versioned resources, and verify downloaded artifacts before use. Because SCSS `@import` does not provide Subresource Integrity enforcement, local vendoring is preferred. 7. Add an automated repository check that rejects remote CSS imports and remote font or image references in active themes.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (24)

Hidden Instructions

High
Category
Prompt Injection
Content
---


<!-- _class: cover_a 
<!-- _header: "" --> 
<!-- _footer: "" --> 
<!-- _paginate: "" -->
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
---


<!-- _class: cover_a 
<!-- _header: "" --> 
<!-- _footer: "" --> 
<!-- _paginate: "" -->
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## 下面让我们看看效果吧 ~  

<!-- _class: trans -->
<!-- _footer: "" -->
<!-- _paginate: "" -->

## 2. 封面页
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## 下面让我们看看效果吧 ~  

<!-- _class: trans -->
<!-- _footer: "" -->
<!-- _paginate: "" -->

## 2. 封面页
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
对于字体大小的调节,直接修改 CSS 文件应该很方便的。但有小伙伴提出,“希望可以增加字体调节的自定义样式”,于是目前提供了四种微调样式:

- 自定义样式 1:`<!-- _class: tinytext -->` (是默认字体大小的 0.8 倍)
- 自定义样式 2:`<!-- _class: smalltext -->` (是默认字体大小的 0.9 倍)
- 自定义样式 3:`<!-- _class: largetext -->` (是默认字体大小的 1.15 倍)
- 自定义样式 4:`<!-- _class: hugetext -->` (是默认字体大小的 1.3 倍)
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
对于字体大小的调节,直接修改 CSS 文件应该很方便的。但有小伙伴提出,“希望可以增加字体调节的自定义样式”,于是目前提供了四种微调样式:

- 自定义样式 1:`<!-- _class: tinytext -->` (是默认字体大小的 0.8 倍)
- 自定义样式 2:`<!-- _class: smalltext -->` (是默认字体大小的 0.9 倍)
- 自定义样式 3:`<!-- _class: largetext -->` (是默认字体大小的 1.15 倍)
- 自定义样式 4:`<!-- _class: hugetext -->` (是默认字体大小的 1.3 倍)
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
- 自定义样式 1:`<!-- _class: tinytext -->` (是默认字体大小的 0.8 倍)
- 自定义样式 2:`<!-- _class: smalltext -->` (是默认字体大小的 0.9 倍)
- 自定义样式 3:`<!-- _class: largetext -->` (是默认字体大小的 1.15 倍)
- 自定义样式 4:`<!-- _class: hugetext -->` (是默认字体大小的 1.3 倍)

比如,本页面采用的自定义样式为 `largetext`
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## 7.4 图表标题的自定义样式:`caption`

<!-- _class: caption -->

- 通过 `<div class="caption">宇宙的奥妙</div>` 来定义图表的标题
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## 推荐的 Markdown 编辑器

<!-- _class: cols-2-64 navbar -->
<!-- _header: \ ***@Awesome Marp*** *关于模板* *封面页* *目录页* *分栏与分列* *引用盒子* *导航栏* **基础知识**-->

<div class=ldiv>
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## 推荐的 Markdown 编辑器

<!-- _class: cols-2-64 navbar -->
<!-- _header: \ ***@Awesome Marp*** *关于模板* *封面页* *目录页* *分栏与分列* *引用盒子* *导航栏* **基础知识**-->

<div class=ldiv>
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
footer: '*敬业乐群*'
---

<!-- _class: cover_c -->
<!-- _paginate: "" -->
<!-- _footer: 敬业乐群 -->
<!-- _header: ![](../images/logo.png) -->
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
footer: '*敬业乐群*'
---

<!-- _class: cover_c -->
<!-- _paginate: "" -->
<!-- _footer: 敬业乐群 -->
<!-- _header: ![](../images/logo.png) -->
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## System Prompt 示例

<!-- _class: tinytext -->

```
你是一个智能旅行助手,请使用可用工具一步步解决问题。
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## System Prompt 示例

<!-- _class: tinytext -->

```
你是一个智能旅行助手,请使用可用工具一步步解决问题。
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## 作为开发者工具的智能体

<!-- _class: smalltext -->

**深度集成到开发工作流:**
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## 作为开发者工具的智能体

<!-- _class: smalltext -->

**深度集成到开发工作流:**
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Hidden Instructions

High
Category
Prompt Injection
Content
## Cover Page (cover_c)

```markdown
<!-- _class: cover_c -->
<!-- _paginate: "" -->
<!-- _footer: 敬业乐群 -->
<!-- _header: ![](images/logo.png) -->
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The stylesheet imports third-party CSS from remote CDNs, which creates a runtime dependency on external infrastructure whenever slides are rendered or exported. This can leak network metadata, break builds when the remote resource changes or disappears, and in the worst case allow supply-chain compromise if the CDN-served CSS is tampered with.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
The instruction 'Footer text: **敬业乐群** (always, Chinese)' imposes a specific language choice in natural-language guidance. Under the policy, forcing a locale or language without user opt-in is a violation unless clearly justified as region-specific, which is not documented here.

Natural-Language Policy Violations

Low
Confidence
87% confidence
Finding
This markdown file is written as user-facing instructional content and consistently uses Chinese throughout, starting with the title and subtitle. Under the stated policy, forcing a specific language without user opt-in can be a natural-language policy violation when no language choice or justification is provided.

Natural-Language Policy Violations

Low
Confidence
90% confidence
Finding
This markdown file is written entirely in Chinese and includes user-facing prompt examples and system prompt text only in that language. Under the policy rule, forcing a specific language without user opt-in can be a natural-language policy violation when no language choice or region-specific justification is provided.

Natural-Language Policy Violations

Low
Confidence
84% confidence
Finding
The stylesheet contains natural-language comments entirely in Chinese, such as the page-behavior descriptions on these lines. For a general-purpose skill asset, this can violate the language/locale policy because it assumes a specific language without opt-in or justification.

Natural-Language Policy Violations

Low
Confidence
82% confidence
Finding
The font stacks hard-code multiple Chinese typefaces such as '方正宋刻本秀楷简体', '楷体', '华文中宋', and similar locale-specific fonts as primary presentation choices. This imposes a specific language/locale styling preference in the theme without any visible opt-in or documentation that the theme is intended only for a Chinese-language or region-specific context.

Natural-Language Policy Violations

Low
Confidence
92% confidence
Finding
This markdown reference uses Chinese throughout its example content and labels, but does not indicate that the language is optional or region-specific. Under the policy rule for natural-language constraints, forcing a specific language without user opt-in can be a locale/language policy violation.

Static analysis

No suspicious patterns detected.