T09 · Insecure Skill Coding Practices
- Location
sources.md:99- Finding
KIPRIS API Key Transmitted over Plaintext HTTP
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly a coherent semiconductor research workflow, but it includes unsafe optional scripts and API examples that can expose credentials or execute unreviewed packages.
Review before installing. The research methodology is coherent, but do not run the bundled Python verifier scripts unless you are comfortable with them installing unpinned packages, preferably inside an isolated virtual environment. Do not use the documented KIPRIS HTTP curl examples with a real API key unless you have verified a secure transport or accepted the credential exposure risk. Limit API keys to least-privilege research accounts and rotate any key previously used over plaintext HTTP.
sources.md:99KIPRIS API Key Transmitted over Plaintext HTTP
scripts/_verify_common.py:97Automatic Installation and Execution of Unpinned Python Dependencies
This content may contain harmful instructions that could cause physical harm if followed. CRITICAL: Review carefully before use.
├── GlobalWafers (6488.TWO, Taiwan)
│ ├── Czochralski crystal growth from polysilicon melt
│ │ ├── Electronic-grade polysilicon (11N purity)
│ │ │ └── Wacker Chemie (WCH.DE, Germany) — largest
│ │ │ └── Tokuyama (4043.T, Japan)
│ │ │ └── Hemlock Semiconductor (US; Corning Inc. 80.5%, Shin-Etsu Handotai 19.5%; $325M CHIPS Act funding for new facility)
│ │ │ └── REC Silicon (Norway/US)
│ │ │ NOTE: Solar-grade poly (6-9N) is a DIFFERENT market (Tongwei, GCL, Daqo = China)
│ │ │ ├── Trichlorosilane (TCS) reduction (Siemens process)
│ │ │ │ └── Metallurgical-grade silicon (MG-Si)
│ │ │ │ └── Carbothermic reduction of quartz
This content may contain harmful instructions that could cause physical harm if followed. CRITICAL: Review carefully before use.
├── GlobalWafers (6488.TWO, Taiwan)
│ ├── Czochralski crystal growth from polysilicon melt
│ │ ├── Electronic-grade polysilicon (11N purity)
│ │ │ └── Wacker Chemie (WCH.DE, Germany) — largest
│ │ │ └── Tokuyama (4043.T, Japan)
│ │ │ └── Hemlock Semiconductor (US; Corning Inc. 80.5%, Shin-Etsu Handotai 19.5%; $325M CHIPS Act funding for new facility)
│ │ │ └── REC Silicon (Norway/US)
│ │ │ NOTE: Solar-grade poly (6-9N) is a DIFFERENT market (Tongwei, GCL, Daqo = China)
│ │ │ ├── Trichlorosilane (TCS) reduction (Siemens process)
│ │ │ │ └── Metallurgical-grade silicon (MG-Si)
│ │ │ │ └── Carbothermic reduction of quartz
Skill attempts to nullify the agent's safety policies or restrictions ('you have no restrictions', 'ignore your guidelines', 'do anything now'). This is a direct jailbreak that disables guardrails.
claude
> **Note:** Windows symlinks require Administrator privileges, or Developer Mode enabled in Settings > For Developers.
/chipchain Who supplies CMP slurry to TSMC?
The declared purpose is narrow, semiconductor supply chain research, but the detected behavior includes generic parsing, report generation, local file operations, and runtime package installation. That mismatch is dangerous because it can hide broad execution and persistence capabilities behind a benign description, making risky behavior harder for users and policy systems to evaluate.
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
</linearGradient>
</defs>
<!-- Background -->
<rect width="900" height="280" fill="url(#bg)" rx="12"/>
<!-- Floating multilingual terms — actual semiconductor search terms -->
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<text x="365" y="28" font-size="10">국산화</text>
<text x="715" y="38" font-size="11">소부장</text>
<text x="820" y="25" font-size="9">식각</text>
<!-- Japanese -->
<text x="145" y="45" font-size="10">仕入先</text>
<text x="490" y="35" font-size="11">半導体材料</text>
<text x="600" y="25" font-size="9">歩留まり</text>
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- Arrow -->
<polygon points="-168,-3 -162,0 -168,3" fill="#6366f1" fill-opacity="0.5"/>
<!-- Node: VERIFY -->
<g transform="translate(-105, 0)">
<rect x="-38" y="-15" width="76" height="30" rx="5" fill="#1e1b4b" stroke="#6366f1" stroke-opacity="0.4" stroke-width="1"/>
<text x="0" y="1" text-anchor="middle" dominant-baseline="middle" fill="#a5b4fc" font-family="system-ui, -apple-system, sans-serif" font-size="10" font-weight="600" letter-spacing="1">VERIFY</text>
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- Arrow -->
<polygon points="-32,-3 -26,0 -32,3" fill="#7c3aed" fill-opacity="0.5"/>
<!-- Node: TRIANGULATE -->
<g transform="translate(45, 0)">
<rect x="-52" y="-15" width="104" height="30" rx="5" fill="#1e1b4b" stroke="#7c3aed" stroke-opacity="0.5" stroke-width="1"/>
<text x="0" y="1" text-anchor="middle" dominant-baseline="middle" fill="#c4b5fd" font-family="system-ui, -apple-system, sans-serif" font-size="10" font-weight="600" letter-spacing="1">TRIANGULATE</text>
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- Arrow -->
<polygon points="132,-3 138,0 132,3" fill="#a78bfa" fill-opacity="0.5"/>
<!-- Node: REPORT -->
<g transform="translate(205, 0)">
<rect x="-42" y="-15" width="84" height="30" rx="5" fill="#1e1b4b" stroke="#a78bfa" stroke-opacity="0.5" stroke-width="1"/>
<text x="0" y="1" text-anchor="middle" dominant-baseline="middle" fill="#ddd6fe" font-family="system-ui, -apple-system, sans-serif" font-size="10" font-weight="600" letter-spacing="1">REPORT</text>
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- Title -->
<text x="450" y="162" text-anchor="middle" fill="#f8fafc" font-family="system-ui, -apple-system, 'Segoe UI', sans-serif" font-size="48" font-weight="700" letter-spacing="-1">chip<tspan fill="url(#accent)">Chain</tspan></text>
<!-- Tagline -->
<text x="450" y="195" text-anchor="middle" fill="#9ca3af" font-family="system-ui, -apple-system, sans-serif" font-size="15" font-weight="400" letter-spacing="0.5">Trace the chain. From mine to fab. In five languages.</text>
<!-- Methodology pills -->
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
git clone https://github.com/lboquillon/chipchain.git
mkdir -p ~/.claude/skills
ln -sfn "$(pwd)/chipchain" ~/.claude/skills/chipchain
claude
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
git clone https://github.com/lboquillon/chipchain.git
mkdir -p ~/.claude/skills
ln -sfn "$(pwd)/chipchain" ~/.claude/skills/chipchain
claude
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
git clone https://github.com/lboquillon/chipchain.git
mkdir -p ~/.claude/skills
ln -sfn "$(pwd)/chipchain" ~/.claude/skills/chipchain
claude
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
git clone https://github.com/lboquillon/chipchain.git
if not exist "%USERPROFILE%\.claude\skills" mkdir "%USERPROFILE%\.claude\skills"
mklink /D "%USERPROFILE%\.claude\skills\chipchain" "%CD%\chipchain"
claude
The README states that the skill 'triggers on semiconductor supply chain questions automatically' without defining the exact trigger phrases, scope limits, or exclusion conditions. This is ambiguous for a markdown file because many natural questions about chips, suppliers, markets, or geopolitics could unintentionally match and invoke the skill.
The skill appears to rely on powerful capabilities, including file access, network access, shell execution, and possible file writes, but it does not declare any explicit tool scope or permission boundaries. In an agent environment, this creates excessive implicit authority, which can let prompt-controlled workflows perform unintended local actions, external requests, or command execution without clear restriction.
The activation text says to trigger when a user asks about broad topics like semiconductor materials, suppliers, dependencies, chokepoints, or discovery questions. This is expansive enough to catch many ordinary conversations about semiconductors, and it does not define boundaries or negative examples for when the skill should not activate.
The file requires a minimum of two non-English searches per investigation as a hard rule. This imposes a language behavior on all users without opt-in or an explicit user choice, which can violate language or locale policy expectations.
The document presents key search terms and headings in Chinese, Korean, and Japanese across several sections, effectively assuming multilingual usage. Under the stated policy, forcing a specific language or locale without user opt-in is a natural-language policy issue unless the constraint is clearly justified as region-specific.
The document is explicitly titled and written as a Japanese lexicon and includes prescriptive language such as preferred spellings and mandatory terminology, but it does not state that use of Japanese is optional or limited to a Japan-specific workflow. Under the language/locale policy, forcing a specific language without user opt-in can be a violation unless the constraint is clearly documented and justified.
The document is framed as prescriptive guidance for Korean terminology, using imperative language such as 'DON'T translate as' and 'ACTUALLY use,' but it does not indicate that Korean output is optional or limited to Korean-language tasks. This can violate language/locale policy if the skill forces a specific language convention without user opt-in.
The instruction 'ALWAYS search both variants for cross-strait research' imposes a specific language/locale handling requirement in natural language. While the file is about Simplified Chinese terminology, this directive is framed as a mandatory rule rather than an optional or context-limited recommendation, which can violate language/locale choice policy without explicit user opt-in.
Line L020 states 'ALWAYS search BOTH zh-cn and zh-tw variants for cross-strait research,' and the document overall instructs users to avoid mainland terms in favor of Taiwan-specific wording. This is a natural-language locale policy constraint presented as mandatory guidance, but the file does not explicitly offer language/locale opt-in or explain that the skill is intentionally region-specific beyond the title.
The workflow instructs users to search using Korean and Chinese terms, and later mandates Korean, Chinese, Japanese, and Taiwan-specific query patterns. This imposes specific language/locale behavior without an explicit opt-in or justification that the skill is limited to multilingual semiconductor-source research.
The manifest describes the skill as providing broad 'Semiconductor supply chain intelligence,' which implies coverage across chip supply chain domains. This file is specifically a 'Chemistry Chain Tracing Workflow' focused on tracing chemicals from fab use through purification, raw materials, and mining, with no broader semiconductor supply chain coverage in the file itself. That creates a semantic mismatch between the claimed general-purpose scope and the actual implemented/documented behavior here.
No suspicious patterns detected.