T09 · Insecure Skill Coding Practices
- Location
scripts/moa.js:43- Finding
User Prompt Content Exposed in Process Logs
- Content
View full analysis
Vulnerability Details
File Location:
scripts/moa.js:43-44; equivalent behavior also occurs atscripts/moa-paid.js:21-22
Vulnerability Type: Sensitive data exposure through logging
Risk Level: LowComplete Code Snippet
From
scripts/moa.js:43-44:javascript console.log(`[MoA] Tier: ${tier.toUpperCase()} | Models: ${proposers.length}`); console.log(`[MoA] Prompt: "${prompt.substring(0, 60)}..."\n`);Equivalent code from
scripts/moa-paid.js:21-22:javascript console.log(`[MoA-Paid] Querying 3 models: Kimi 2.5, MiniMax 2.5, GLM 5...`); console.log(`[MoA-Paid] Prompt: "${prompt.substring(0, 80)}..."\n`);Technical Analysis
Both implementations write a portion of the submitted prompt to standard output. Prompts may contain source code, confidential business information, personal data, credentials, access tokens, or other sensitive material.
Standard output is frequently captured by terminal scrollback, CI/CD systems, process supervisors, container platforms, centralized logging services, or host-agent logs. Consequently, data intentionally supplied for remote model processing is also copied into an additional storage and disclosure channel. Logging prompt contents is not required for the declared multi-model synthesis functionality and exceeds the minimum diagnostic data needed to operate the Skill.
The exposure is limited to the first 60 characters in
moa.jsand the first 80 characters inmoa-paid.js, but secrets and identifying information can occur within those prefixes.Attack Path
- A user invokes the Skill with a prompt containing confidential or sensitive information near its beginning.
- The Skill executes the relevant
console.logstatement before making the model requests. - The prompt prefix is written to standard output.
- A shell, process manager, CI system, container runtime, or centralized logging platform records that output.
- A person ...[truncated 757 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove prompt-content logging from both scripts.
- Log only non-sensitive operational metadata, such as the selected tier, model count, request identifier, success count, and elapsed time.
- If prompt logging is required for debugging, place it behind an explicit opt-in debug setting that is disabled by default.
- Apply secret and personal-data redaction before any debug output is emitted.
- Document that diagnostic logs must not contain model prompts or responses.
- Configure deployment environments to limit log access, retention, and forwarding as defense in depth.
A safer implementation would be:
javascript console.log(`[MoA] Tier: ${tier.toUpperCase()} | Models: ${proposers.length}`); console.log('[MoA] Processing request');
