T09 · Insecure Skill Coding Practices
- Location
SKILL.md:354- Finding
Undocumented Zero-Width Joiner Remains in the Skill Prompt
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 354
Vulnerability Type: Invisible Unicode character in security-sensitive prompt text
Risk Level: Lowmarkdown ### 🧑💼 HR Weekly ReportThe emoji sequence contains U+200D ZERO WIDTH JOINER between its visible components. This contradicts the statement in
CHANGELOG.md, lines 7–10, that the character was removed and the emoji was replaced with👤.Technical Analysis
SKILL.mdis intended to be loaded directly as an AI system prompt. Invisible Unicode formatting characters can create differences between the text displayed to reviewers and the underlying character sequence processed by scanners or downstream systems. Such discrepancies can weaken source review, normalization, pattern matching, and prompt-integrity checks.In this specific instance, U+200D only combines emoji components. The audited text contains no hidden command, instruction override, or executable payload associated with the character. Consequently, the finding represents an insecure prompt-maintenance and validation practice rather than demonstrated prompt injection.
Attack Path
- A user follows the documented instructions in
README.mdand loads the completeSKILL.mdfile as a system prompt. - The U+200D character at line 354 enters the agent instruction context as part of the prompt.
- A scanner or review process that normalizes, ignores, or renders invisible Unicode differently may evaluate a representation that differs from the actual prompt.
- If similar characters were later used around security-sensitive instructions, an attacker could exploit that review discrepancy to obscure prompt modifications.
The current character does not independently alter agent behavior, grant privileges, or execute code. No complete malicious exploitation path is present in the audited project.
Impact Assessment
The immediate impact is limited to prompt integrity, audit reliability, and release-verif ...[truncated 339 chars]
- A user follows the documented instructions in
- Remediation
View remediation
Remediation Suggestions
- Replace
🧑💼with the single-code-point symbol👤, as stated inCHANGELOG.md. - Normalize prompt and documentation files to a defined Unicode normalization form during the release process.
- Add a CI check that rejects unexpected zero-width and bidirectional control characters, including U+200B, U+200C, U+200D, U+2060, U+FEFF, and U+202A–U+202E.
- Permit such characters only through an explicit allowlist when they are necessary and documented.
- Compare normalized and raw file representations during security review to identify rendering discrepancies.
- Verify source changes before publishing security claims in the changelog.
- Replace
