Back to skill

Security audit

日本雅虎拍卖估价

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent auction-estimation purpose, but its script can run unintended shell commands from auction IDs or proxy settings and may print proxy credentials.

Review or patch the script before installing in an environment with secrets or broad file access. Use only trusted auction IDs, avoid embedding credentials in PROXY_SOCKS5, and prefer a version that uses safe argument arrays or a native HTTP client with strict ID and proxy validation.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/estimate.mjs:15
Finding

Shell Command Injection Through Auction ID and Proxy Configuration

Content
View full analysis
/dev/null`, { encoding: 'utf8', timeout: 30000 } ); } catch (e) { return ''; } } ``` The URL passed to this function contains a command-line argument: ```js async function getProductInfo(id) { const url = `https://auctions.yahoo.co.jp/jp/auction/${id}`; const html = curl(url); ``` The product IDs originate directly from process arguments: ```js async function main() { const ids = process.argv.slice(2); ``` ### Technical Analysis The application builds a shell command by interpolating two untrusted values into a template string passed to `execSync()`: 1. `PROXY` is populated from the `PROXY_SOCKS5` environment variable and is inserted into the command without shell quoting. 2. `id` originates from a command-line argument and is incorporated into `url`. Although the URL is enclosed in double quotes, shell command substitution and certain other shell expansions remain active inside double-quoted strings. Because `execSync()` executes the resulting string through a shell, shell metacharacters in either value can change the intended command structure. The application does not validate auction IDs or parse and constrain the proxy URL before command construction. The 30-second timeout limits execution duration but does not prevent an injected command from running or spawning an independent process. ### Attack Path 1. An attacker obtains the ability to influence an auction ID supplied to the Skill, or the `PROXY_SOCKS5` environment variable. 2. The attacker supplies a value containing shell syntax, such as command ...[truncated 1118 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
scripts/estimate.mjs:189
Finding

Proxy Credentials Exposed in Terminal and Application Logs

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill declares operational capabilities via metadata requirements and documented shell usage, but does not explicitly constrain tool scope with permissions or allowed-tools. In an agent environment, this can lead to broader-than-necessary command or environment access, increasing the chance of unintended command execution, secret exposure, or misuse of proxy/network settings.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script builds a shell command with string interpolation and passes both the proxy value and URL into execSync without safe argument separation. PROXY comes directly from an environment variable and the URL includes a user-controlled auction ID, so shell metacharacters in either value could trigger command injection and arbitrary command execution.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The markdown states that the tool performs timezone conversion specifically from Japan to China, which imposes a locale-specific output format. The file does not indicate that users can opt out, choose another locale, or that the China-specific conversion is required for a region-specific compliance purpose.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The description is written only in Japanese and specifies a Japan-specific auction tool, which may impose a language/locale expectation without offering user choice. The file does not document any opt-in, alternative locale support, or justification for restricting the skill to Japanese-language usage.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The file header presents the tool name in Japanese and Chinese, and all runtime user-facing messages are in Chinese, which indicates a fixed language choice. There is no visible option or documentation allowing users to select another language or opt in to this locale behavior.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/estimate.mjs:19