T09 · Insecure Skill Coding Practices
- Location
scripts/generate.py:47- Finding
Arbitrary JavaScript Injection Through Crafted Asset Filenames
- Content
View full analysis
{ const btn = document.createElement("button"); btn.className = "item-btn " + category; btn.setAttribute("data-index", index); btn.innerHTML = ""; btn.onclick = () => selectItem(category, src, index); }); ``` ```javascript // assets/template/index.html:176-178 if (category === "hair") document.getElementById("layer-front-hair").innerHTML = "
"; else if (category === "dress") document.getElementById("layer-dress").innerHTML = "
"; else if (category === "shoes") document.getElementById("layer-shoes").innerHTML = "
"; ``` ### Technical Analysis The generator treats filenames from the caller-controlled input directory as trusted JavaScript source text. It checks only whether each filename ends in `.png`, `.jpg`, or `.jpeg`. It does not restrict metacharacters or escape the filename before placing it inside a single-quoted JavaScript stri ...[truncated 2031 chars]
- Remediation
View remediation
