Back to skill

Security audit

Knowledge card creator, your memory notes

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent knowledge-card generator, but its renderer can open card Markdown as active browser content with network access, which is more exposure than users are clearly told to expect.

Install only if you are comfortable with local files or fetched content being written as Markdown/PNG and rendered through a local browser. Avoid rendering Markdown from untrusted people or websites unless raw HTML is sanitized or browser network access is blocked, and use an isolated Python environment with pinned dependencies if possible.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/render_card.py:282
Finding

Untrusted Markdown Is Rendered as Active Browser Content

Content
View full analysis
{css}
{md_html}
""" return html ``` The resulting document is then opened in a browser: ```python # Write HTML to temp file with tempfile.NamedTemporaryFile( mode="w", suffix=".html", delete=False, encoding="utf-8" ) as f: f.write(html) temp_html = f.name try: screenshot_path = hti.screenshot( html_file=temp_html, save_as=os.path.basename(output_path), size=(width + 80, 1600), # Will auto-crop ) ``` ### Technical Analysis The renderer treats the contents of the input Markdown file as untrusted data, but passes them directly to `markdown.markdown()` and inserts the resulting value into a complete HTML document. Python-Markdown permits raw HTML in Markdown input by default; none of the configured extensions sanitize that HTML. The generated document is subsequently opened by a real Chrome or Edge browser through `html2image`. No HTML allowlist, Content Security Policy, browser network restriction, or raw-HTML rejection is appl ...[truncated 2284 chars]
Remediation
View remediation
``` 4. Run the rendering browser without external network access, such as inside a sandboxed container or network namespace. 5. Use a dedicated, low-privilege operating-system account with no access to credentials or sensitive workspace files. 6. Apply strict input-size limits and browser execution timeouts to reduce denial-of-service exposure. 7. Add security tests using raw `

other

Note
Location
scripts/render_card.py:92
Finding

Renderer Makes an Undeclared External Request to Google Fonts

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/render_card.py:5
Finding

Third-Party Python Dependencies Are Unpinned and Lack Integrity Verification

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description presents an end-to-end knowledge card generation skill: ingesting various materials, extracting and organizing key knowledge, selecting an optimal card type, applying pedagogical principles, producing Markdown, and rendering an image. The supplied code chunk implements only the final rendering stage. It reads an existing Markdown file, converts it to HTML with CSS themes, renders it to PNG via a browser/html2image, and crops whitespace. Those rendering steps are consistent with the 'renders it into a beautiful image' portion, but the core generative/analytical functionality described is absent. Therefore the description materially overstates the code's capabilities and primary purpose.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill instructs the agent to read files and potentially access environment-derived paths without declaring an explicit tool scope or permission boundary. This increases the chance of unintended local file access because users and reviewers are not clearly informed which capabilities the skill will exercise.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

Broad invocation phrases like 'make a card' or 'knowledge card' can cause the skill to trigger on common requests that do not clearly imply consent to file reads, URL fetching, or disk writes. That can expand the skill's activation surface and lead to surprising execution of side-effecting actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly states it will fetch URLs and read files but does not warn users about these data-access behaviors. Without clear disclosure, users may trigger the skill without understanding that local content or remote resources will be accessed, increasing privacy and data-exposure risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill saves generated Markdown to disk and invokes a rendering script to produce PNG output, but it does not prominently disclose these side effects. Silent persistence and rendering can expose sensitive material in local files, create residual artifacts, or overwrite expected locations if users are unaware of the write behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file consists of user-facing template instructions and labels exclusively in Chinese, which can amount to a language/locale policy violation when no user opt-in or justification is provided. The policy explicitly calls for flagging skills that force a specific language without offering a choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The generated HTML hard-codes lang="zh-CN", which imposes a specific language/locale on all rendered output regardless of user preference or input content. The file does not offer a locale option or explain why a Chinese locale is required, matching the policy's language/locale violation criterion.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.