Back to skill

Security audit

Tianshu Vocab Plan

Security checks for vulnerabilities and agentic risk

Overview

This skill locally turns a word list into a study schedule and does not show hidden access, network activity, or persistence.

Install only if a Chinese-language vocabulary scheduling helper fits your workflow. Use word lists you trust, because unusual Markdown or HTML in a word entry may appear in the generated table when rendered or shared.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Note
Location
scripts/vocab_plan.js:51
Finding

Unescaped Vocabulary Entries Allow Markdown and HTML Content Injection

Content
View full analysis
l.trim()) .filter((l) => l && !l.startsWith('#')); ``` ```javascript lines.push( `| ${k} | ${learn.length ? learn.join(';') : '—'} | ${review.length ? review.join(';') : '—'} |` ); ``` ### Technical Analysis Vocabulary entries read from the user-selected file are inserted directly into a Markdown table without context-aware escaping. Markdown metacharacters such as `|`, backslashes, link syntax, and raw HTML are preserved. An attacker-controlled entry can therefore alter table structure or introduce links, images, HTML elements, or instruction-like text into the generated document. The issue is an output-injection flaw rather than arbitrary code execution: the script itself does not evaluate vocabulary entries or pass them to a shell. The practical effect depends on the downstream Markdown renderer. Renderers that permit raw HTML or automatically load remote image resources may increase the impact, while renderers that sanitize HTML will reduce it. ### Attack Path 1. An attacker creates or modifies a vocabulary file that the victim is expected to process. 2. The attacker adds an entry containing Markdown table delimiters, a deceptive link, raw HTML, or another crafted payload. 3. The victim runs the documented command with the affected file: ```bash node vocab_plan.js --file words.txt ``` 4. The script reads the crafted entry and interpolates it directly into the Markdown table. 5. The victim or a downstream system renders the generated output. 6. The injected content can disrupt the schedule, display misleading content, present a phishing link, or cause renderer-dependent external resource requests. ### Impact Assessment The v ...[truncated 567 chars]
Remediation
View remediation
`. 4. Neutralize Markdown links and image syntax if clickable or externally loaded content is not required. 5. Consider generating JSON or another structured representation and using a trusted renderer that performs output encoding. 6. Configure downstream Markdown renderers to disable raw HTML and remote resource loading. 7. Add regression tests covering: - Table delimiters - Backslashes - Markdown links and images - Raw HTML - Very long entries - Instruction-like or deceptive content For example, introduce a dedicated escaping function and apply it before both learning and review entries are joined into the table. ]]>
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
97% confidence
Finding

This JavaScript file contains user-facing console output in Chinese only, including the usage string and error message. That creates a natural-language locale constraint without any user opt-in or documented justification, which matches the language/locale policy violation criteria.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.