Back to skill

Security audit

Browser Canvas Poetry

Security checks for vulnerabilities and agentic risk

Overview

This is a creative browser-art guide and validator with no hidden local persistence, though users should be cautious with optional camera, microphone, and external JavaScript examples.

Install only if you want a Chinese-first creative-coding reference for browser art. Before copying examples into real projects, pin any CDN/npm dependencies, avoid unreviewed remote scripts, and make camera or microphone features opt-in with clear disclosure and no default recording or storage.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T03 · Remote Payload Retrieval and Execution

Warning
Location
references/interactive-api-components.md:1205
Finding
Mutable Remote JavaScript Is Executed Without Version Pinning or Integrity Verification## Vulnerability Details **File Location**: `references/interactive-api-components.md:1205-1211` **Vulnerability Type**: Mutable remote payload retrieval through an unpinned CDN dependency **Risk Level**: Medium ### Vulnerable Code ```html <!-- Load through a CDN --> <script src="https://unpkg.com/browser-canvas-poetry/components.min.js"></script> <script> const { ParticleSystem, AnimationTween } = BCP; </script> ``` ### Technical Analysis The documentation instructs users to execute JavaScript from an unversioned `unpkg.com` URL. Because the URL does not identify an immutable package version, the response can change after this project has been reviewed. The script tag also lacks a Subresource Integrity hash, so the browser cannot verify that the downloaded content matches an audited artifact. The external package implementation is not included in the audited project. Consequently, following this example transfers execution trust to the package publisher, package registry, and CDN. This creates a remote payload substitution channel even though no malicious remote payload was observed during the static audit. ### Attack Path 1. A user follows the documented CDN integration example. 2. The generated application loads the unversioned URL from `unpkg.com`. 3. The package publisher account, package release, registry, or CDN is compromised, or the package name resolves to unintended content. 4. The remote response supplies modified JavaScript. 5. The browser executes that JavaScript in the application's origin context. 6. The substituted script can access application DOM state, non-`HttpOnly` origin data, and APIs available to scripts on that page, and can send data over the network subject to browser security controls. ### Impact Assessment Successful exploitation provides arbitrary JavaScript execution in every browser context that loads the affected page. The effective scope is ...[truncated 386 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to an explicitly reviewed, immutable version, for example: ```html <script src="https://unpkg.com/browser-canvas-poetry@X.Y.Z/components.min.js" integrity="sha384-REPLACE_WITH_VERIFIED_HASH" crossorigin="anonymous"></script> ``` 2. Generate and independently verify the Subresource Integrity hash against the reviewed release artifact. 3. Prefer self-hosting the audited JavaScript artifact under the application's deployment controls. 4. Document the package's verified publisher, repository, release commit, and expected checksums. 5. Apply an appropriate Content Security Policy that restricts script sources and disallows unsafe inline execution where feasible. 6. Use automated dependency monitoring and re-review artifacts before changing the pinned version.

T08 · Insecure Dependencies

Warning
Location
references/interactive-api-components.md:1214
Finding
Unversioned Package Installation Introduces Unreviewed Supply-Chain Code## Vulnerability Details **File Location**: `references/interactive-api-components.md:1214-1221` **Vulnerability Type**: Unpinned and externally sourced npm dependency **Risk Level**: Medium ### Vulnerable Code ```markdown ### NPM ```bash npm install browser-canvas-poetry ``` ```javascript import { ParticleSystem } from 'browser-canvas-poetry'; ``` ``` ### Technical Analysis The installation command does not pin an exact package version, checksum, or reviewed lockfile. It therefore resolves whatever release is selected by npm at installation time. The implementation of `browser-canvas-poetry` is absent from the audited project, so its package contents, transitive dependencies, lifecycle scripts, and exported behavior cannot be verified from this repository. npm packages may execute lifecycle hooks during installation and subsequently execute application code when imported. If package ownership is compromised, a malicious release is published, or the package name does not correspond to the intended audited component, the documented command can introduce arbitrary unreviewed code into the developer environment and application. ### Attack Path 1. A developer follows the documentation and runs `npm install browser-canvas-poetry`. 2. npm resolves the current registry release and its transitive dependency graph rather than an artifact fixed by this project. 3. An attacker compromises the publisher account, publishes a malicious release, compromises a transitive dependency, or controls an unintended package using that name. 4. Malicious lifecycle code may execute during installation with the developer's user privileges. 5. Malicious runtime code may also execute when the documented import is used in the application. 6. The payload can act within the permissions of the npm process or the eventual browser/server runtime. ### Impact Assessment Installation-time exploitation can obtain the filesystem, process, an ...[truncated 452 chars]
Remediation
## Remediation Suggestions 1. Verify that the package name is controlled by the intended project and link to its authoritative repository and publisher identity. 2. Pin an exact reviewed version: ```bash npm install --save-exact browser-canvas-poetry@X.Y.Z ``` 3. Commit a lockfile and use `npm ci` in automated environments to reproduce the reviewed dependency graph. 4. Review the package tarball, lifecycle scripts, and transitive dependencies before recommending installation. 5. Publish and verify package provenance, release signatures, and integrity metadata. 6. Where practical, install initially with lifecycle scripts disabled: ```bash npm install --ignore-scripts --save-exact browser-canvas-poetry@X.Y.Z ``` Enable scripts only after confirming that they are necessary and safe. 7. Add dependency scanning and automated alerts for compromised, deprecated, or vulnerable releases.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
Findings (40)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
声明描述的是一个创作/转换型技能:把诗歌、文学意象、视觉艺术概念转化为浏览器原生艺术作品。但实际代码并不生成任何浏览器艺术作品,也不处理画布、DOM、图形渲染或艺术内容转换。它是一个Node.js命令行验证器,核心功能是通过问卷、评分规则和关键词启发式分析来评估项目的艺术性并生成报告。这属于 materially different primary purpose,因此应判定为描述与行为不符。

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill proposes camera and body-tracking input for interactive art without any warning that visual data may be highly sensitive. Because webcam/body tracking can capture faces, surroundings, and behavioral data, omission of consent and retention guidance materially increases privacy and surveillance risk.

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Content
---
AIGC:
    ContentProducer: Minimax Agent AI
    ContentPropagator: Minimax Agent AI
    Label: AIGC
    ProduceID: 06b190be5dd770c2a189d8793b5affb6
    PropagateID: 06b190be5dd770c2a189d8793b5affb6
    ReservedCode1: 304402206f9604ef4c546fd736d1c52317e728281cd5d438bf4e5fa55c65ad3dd683f7cb022068e5aa5c35fb46739ca947ea42affc4c1c664a411a2ff95ab563ba4dc1440000
    ReservedCode2: 304502210089c675c9cb95d94af2e63adca051eee4cded20803f4a65c582eb6424a5cbed9b022043d89de076b06ce3a3068ef11da7877f3531bc2cc4581b6260c4f1c1e26b7b8c
description: 浏览器原生艺术的完整案例展示
tags:
    - examples
    - case-studies
    - implementation
title: Examples
---

## Examples | 案例展示

以下案例展示了如何将抽象艺术概念转化为具体的浏览器原生艺术作品。

---

### 案例1:落霞与孤�
Confidence
80% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Content
---
AIGC:
    ContentProducer: Minimax Agent AI
    ContentPropagator: Minimax Agent AI
    Label: AIGC
    ProduceID: "00000000000000000000000000000000"
    PropagateID: "00000000000000000000000000000000"
    ReservedCode1: 30440220570abcfe8b174dcbed3e18b440520757e9741e0cca2cdd5322a0ddd94e89190402203a34026435d527c0e37b1452a33b963dbdcbadd572a9f25789200675a4cc0da0
    ReservedCode2: 3045022025bf96734f43e4aea7ce3dacd58953167d52d9ea252ddbdc2e7c092fa7117fd702210091c80842890094859d3d15d637ab107a9a69d12cf4dfa1f722eee43a601b3093
description: 现代艺术流派与浏览器艺术对照
name: art-movements
---

# 现代艺术流派与浏览器艺术对照
## Art Movements & Browser Art Mapping

---

## 一、前现代艺术流派 | Pre-Modern Movements

### 1.1 浪漫主义 | Romanticism (1780-1850)

**核心特征**:
- 情
Confidence
80% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Hidden Instructions

High
Category
Prompt Injection
Content
this.element.className = 'creature dog';
    this.element.innerHTML = `
      <svg viewBox="0 0 100 80" class="dog-svg">
        <!-- 身体 -->
        <ellipse class="body" cx="50" cy="50" rx="30" ry="20"/>
        <!-- 头部 -->
        <circle class="head" cx="75" cy="35" r="18"/>
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
<!-- 左翼 -->
        <path class="wing wing-left" d="M 50 30 Q 20 5 10 30 Q 20 55 50 30" fill="${this.state.wingColors[0]}"/>
        <path class="wing-detail wing-left" d="M 45 30 Q 30 20 25 30 Q 30 40 45 30" fill="${this.state.wingColors[1]}" opacity="0.7"/>
        <!-- 右翼 -->
        <path class="wing wing-right" d="M 50 30 Q 80 5 90 30 Q 80 55 50 30" fill="${this.state.wingColors[0]}"/>
        <path class="wing-detail wing-right" d="M 55 30 Q 70 20 75 30 Q 70 40 55 30" fill="${this.state.wingColors[1]}" opacity="0.7"/>
        <!-- 身体 -->
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
<path class="tail" d="M 20 50 Q 5 40 10 30" fill="none" stroke-width="6" :style="tailStyle" />
    </svg>

    <!-- 想法气泡 -->
    <Transition name="fade">
      <div v-if="thought" class="thought-bubble">{{ thought }}</div>
    </Transition>
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Content
---
AIGC:
    ContentProducer: Minimax Agent AI
    ContentPropagator: Minimax Agent AI
    Label: AIGC
    ProduceID: "00000000000000000000000000000000"
    PropagateID: "00000000000000000000000000000000"
    ReservedCode1: 3045022100d5d5f8b2aef1fe3be92566caed18d0d2812857ddfd35705ac776661bf643081c02200410e1507f91815604c6ab19e18231be4eadda196a92f70544d990b902a49d70
    ReservedCode2: 3044022006cbaead2441763ade61c736d2d94ec41b228c1e00d7a1e6c6f7e49fded2636e0220248fa789c850db64454eaa76a4d2031a6945cf510c27e2d0179e98e1c26cd40e
description: 中西文学意象对照表
name: literary-imagery
---

# 中西文学意象对照表
## Cross-Cultural Literary Imagery Atlas

---

## 一、自然宇宙类 | Nature & Cosmos

### 天空与光 | Sky & Light

| 中文意象 | 西方对应对象 | 情感基调 | 浏览器艺术转化�
Confidence
80% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Content
---
AIGC:
    ContentProducer: Minimax Agent AI
    ContentPropagator: Minimax Agent AI
    Label: AIGC
    ProduceID: "00000000000000000000000000000000"
    PropagateID: "00000000000000000000000000000000"
    ReservedCode1: 3044022068eea5e9b67c8019e6bfd84d9bc538e881c120fcc85c797d2865c88d975ec1ff022023f2584a23eec78b791f169c14aac80f6f02d868a289dfb8802985ef59da25f4
    ReservedCode2: 3045022032d1fc97826cbbc2f954a6581f44fa0a0e5bd8560fc1ab5eebc7b5d1abbf65e5022100bfcf87b815a41c03e2bad67920e2d8edc511fc88f426b526f060ece311b18d14
description: 技术诗意指南
name: technical-poetry
---

# 技术诗意指南:代码作为诗歌
## Technical Poetry: Code as Verse

---

## 一、诗歌与代码的共鸣

### 共同特质

| 诗歌特质 | 代码对应 | 浏览器实现 |
|---------|---------|-----------|
| 凝练 | DRY原
Confidence
80% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The manifest description and core user-facing instructions are presented in Chinese, but the file does not state that the skill is Chinese-only or offer an opt-in language/locale choice. This can violate language policy expectations when a skill implicitly forces a specific language for interaction or understanding.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The skill says users can invoke it with any 'art concept description / poem fragment / mood keywords / visual style preference,' which is a very broad natural-language scope. It does not define specific trigger phrases, activation constraints, or negative examples, making it unclear when ordinary creative discussion should activate this skill versus not.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
This markdown file is predominantly written in Chinese, including the description and nearly all instructional content, without offering a language choice or documenting that the skill is intentionally region- or locale-specific. That can violate language/locale policy where users are expected to receive guidance in their preferred or configured language.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly suggests user recording and audio input features but provides no privacy notice, consent guidance, or handling constraints. Even though this file is conceptual rather than executable code, it can steer downstream agents or developers to implement microphone capture without clear user awareness, creating avoidable privacy risk.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill encourages transforming real-time APIs and user data into visualizations without warning about data minimization, sensitivity, or third-party data exposure. In a prompt/skill context, this can normalize collecting or transmitting personal data without safeguards, which is a genuine privacy design flaw.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The skill content is written entirely in Chinese and frames the interaction flow, prompts, and examples in Chinese without any indication that the user can choose another language. This can override or strongly bias the agent's response language, causing poor usability, exclusion of non-Chinese-speaking users, and mismatch with user intent or platform expectations.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The example explicitly suggests camera input and optional face/hand tracking for an interactive artwork, but it does not mention consent, permission prompts, local-only processing, or any privacy notice. In a skill that others may copy into implementations, this omission can normalize privacy-sensitive sensor access without safeguards and lead to unnecessary collection or exposure of biometric or camera data.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The guide tells agents to generate 'pure frontend' projects but elsewhere recommends loading third-party libraries from public CDNs and external online resources. That inconsistency can mislead users into treating outputs as self-contained and offline-safe when they actually depend on remote code, creating supply-chain, privacy, and integrity risks if unpinned or unreviewed resources are included.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The template hard-codes `<html lang="zh-CN">`, which directs generated output toward a specific language/locale by default. The document does not indicate that this is optional, user-selected, or limited to a China-specific use case, so it can violate a language/locale choice policy.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The skill content is overwhelmingly written in Chinese and defines the assistant persona, examples, and feedback behavior only in Chinese, effectively constraining interaction language without offering a user-choice mechanism or documenting a locale-specific requirement. This can reduce usability, informed consent, and accessibility for non-Chinese-speaking users, though it is not a direct code-execution or data-exfiltration issue.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
This markdown file consistently presents the protocol examples in Chinese and repeatedly hard-codes locale values such as "zh-modern" and "zh-classical" for user inputs and source language. Under the policy rule, forcing a specific language/locale without opt-in is a natural-language policy concern unless the file clearly states that the skill is China/Chinese-specific, which it does not.

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
技能描述强调将诗歌与视觉概念转化为“浏览器原生艺术作品”,但该示例文档明确加入了电子墨水屏与空间计算/AR 平台目标。尤其是 E-ink 与 RealityKit/AR 环境并不属于浏览器原生实现范畴,这构成了与清单描述的语义范围不一致。

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
该文件为技能提供的协议示例,其中 Spatial 目标声明了 RealityKit、hand_tracking、AR 环境和沉浸式模式,后续还定义了 gaze、hand、voice 交互。对于“将诗歌、文学意象、视觉艺术概念转化为浏览器原生艺术作品”的目标而言,这些空间交互能力并非直接、明显必需。

Natural-Language Policy Violations

Medium
Confidence
82% confidence
Finding
The manifest template hard-codes `language: "zh-classical"`, which prescribes a specific language/locale in the skill's natural-language configuration. There is no accompanying note that this is optional, user-selectable, or limited to a region-specific use case, so it can violate language-choice policy expectations.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
This markdown file is predominantly written in Chinese and does not indicate that users may choose another language or that the protocol is intentionally limited to a Chinese-speaking audience. Under the language/locale policy rule, forcing a single language without user opt-in is a natural-language policy concern.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
Manifest 描述的核心能力是艺术内容转化与生成,而本文件内容主要是在设计 BCPP Registry:包括渲染器/元素/流派/作品注册、社区治理、争议解决、去中心化存储以及签名验证。这样的协议与注册表基础设施并不是将文学意象转化为浏览器艺术作品的明显实现细节,而是独立的平台级能力。

Static analysis

No suspicious patterns detected.