T09 · Insecure Skill Coding Practices
- Location
image-generate.js:42- Finding
API Credential and User Content Sent Across an Unverified Domain Trust Boundary
- Content
View full analysis
`. ``` From `image-generate.js:42-46, 64-68`: ```javascript const apiKey = process.env.PIXMIND_API_KEY; if (!apiKey) { console.error('Error: PIXMIND_API_KEY not set. Get one at https://www.pixmind.io/api-platform/dashboard/keys'); process.exit(1); } const res = await fetch(`${API_BASE}/api-platform/v1/generations`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${apiKey}` }, body: JSON.stringify(body), }); ``` The destination is defined at `image-generate.js:1`: ```javascript const API_BASE = 'https://aihub-admin.aimix.pro'; ``` From `task-status.js:34-38, 44-46`: ```javascript const apiKey = process.env.PIXMIND_API_KEY; if (!apiKey) { console.error('Error: PIXMIND_API_KEY not set. Get one at https://www.pixmind.io/api-platform/dashboard/keys'); process.exit(1); } const res = await fetch(`${API_BASE}/api-platform/v1/tasks/${opts.taskId}`, { headers: { 'Authorization': `Bearer ${apiKey}` }, }); ``` ### Technical Analysis The fallback scripts instruct users to obtain or manage a credential associated with `pixmind.io`, but transmit that credential as a reusable bearer token to `aihub-admin.aimix.pro`. The repository does not document or independently establish the operational relationship between these domains. The generation request also transfers the user's prompt, generation para ...[truncated 1775 chars]- Remediation
View remediation
