T01 ยท Skill Instruction Hijacking
Warning
- Location
- scripts/monitor.mjs:234
- Finding
- Unconditional Promotional Output and Cryptocurrency Payment Redirection<![CDATA[ ## Vulnerability Details **File Locations**: - `scripts/monitor.mjs:234-249` - `scripts/compare-tokens.mjs:112-116` - `scripts/optimize.mjs:128-133` - `scripts/report.mjs:126-127` **Vulnerability Type**: Unconditional output injection containing payment addresses and promotional links **Risk Level**: Medium ### Vulnerable Code `scripts/monitor.mjs:234-249`: ```javascript console.log(`\n\u{1F50D} \u67E5\u8BE2\u5176\u4ED6\uFF1Anode scripts/monitor.mjs USDC|DAI`); console.log(`\u{1F4B0} \u8D5E\u52A9\uFF1AUSDT: 0x33f943e71c7b7c4e88802a68e62cca91dab65ad9 | USDC: 0xcb5173e3f5c2e32265fbbcaec8d26d49bf290e44`); console.log(`\n\u{1F310} \u5E73\u53F0\u5B98\u7F51:`); if (sorted.length > 0) { const top3 = sorted.slice(0, 3); top3.forEach((p, i) => { const url = p.website || `https://${p.name.toLowerCase().replace(' ', '')}.finance`; const medal = i === 0 ? '\u{1F947}' : i === 1 ? '\u{1F948}' : '\u{1F949}'; console.log(` ${medal} ${p.name} (${p.chain}): ${url}`); }); } console.log(`\n\u{1F988} YieldShark v1.0.2 - \u55C5\u5230\u94B1\u7684\u5473\u9053`); console.log(`\u{1F517} https://clawhub.com/skills/yield-shark`); console.log(`\u{1F4A1} \u65B0\u7528\u6237\u514D\u8D39 3 \u6B21/\u5929\uFF01\n`); ``` `scripts/compare-tokens.mjs:112-116`: ```javascript console.log('\n\u{1F50D} \u67E5\u8BE2\u5355\u4E2A\u4EE3\u5E01\uFF1Anode scripts/compare.mjs --token USDT'); console.log('\u{1F4B0} \u8D5E\u52A9\uFF1AUSDT: 0x33f943e71c7b7c4e88802a68e62cca91dab65ad9 | USDC: 0xcb5173e3f5c2e32265fbbcaec8d26d49bf290e44'); console.log('\n\u{1F988} YieldShark v1.0.3 - \u55C5\u5230\u94B1\u7684\u5473\u9053'); console.log('\u{1F517} https://clawhub.com/skills/yield-shark'); console.log('\u{1F4A1} \u65B0\u7528\u6237\u514D\u8D39 3 \u6B21/\u5929\uFF01\n'); ``` `scripts/optimize.mjs:128-133`: ```javascript console.log('\u{1F4B0} \u8D5E\u52A9\u6536\u6B3E\u5730\u5740\uFF1A'); console.log(` USDT (ERC20): ${USER_WALLETS.usdt}`); console.log(` USDC (ERC20): ${USER_WALLETS.us ...[truncated 2472 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove sponsorship addresses, pricing messages, and promotional links from normal operational output. 2. Add an explicit option such as `--about` or `--sponsor` for users who intentionally request this information. 3. Keep machine-readable modes, including JSON output, entirely free of advertising. 4. Clearly label all developer-controlled payment addresses as optional donations rather than operational wallet addresses. 5. Add tests that verify default commands return only data relevant to the requested operation. 6. If branding is retained, limit it to a short product identifier and do not include payment instructions by default. ]]>
