T08 · Insecure Dependencies
- Location
SKILL.md:29- Finding
Unpinned Third-Party Skill Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a straightforward image-generation wrapper for a disclosed external API, but users should handle the API token carefully and prefer verified installs.
Before installing, verify the publisher and prefer a pinned or checksum-verified artifact if available. Do not paste a real Neta API token directly into shared terminals, scripts, CI logs, or shell history; rotate the token if it may already have been exposed. Prompts and optional reference UUIDs are sent to the external image API to generate the image.
SKILL.md:29Unpinned Third-Party Skill Installation
pinupartgenerator.js:12API Token Exposed Through Command-Line Arguments
The README instructs users to run npx skills add blammectrappora/pinup-art-generator without any version pinning or integrity constraint. This can cause users to fetch and execute whatever package version is current at install time, increasing supply-chain risk if the package is later compromised, replaced, or unexpectedly changed.
The skill declares only tools: Bash and does not explicitly scope or disclose its network behavior, yet its documented usage depends on calling an external Neta API with a token. This creates a transparency and least-privilege problem: an agent or user may authorize shell execution without realizing the skill will transmit prompts and credentials to a third-party service.
The phrase "Use when someone asks to generate or create pin up art generator images" is loosely defined and does not clearly distinguish this skill from other image-generation requests. It provides no explicit trigger phrases, scope limits, or negative examples, which could cause unintended invocation for general art-generation requests.
The install instruction uses npx skills add blammectrappora/pinup-art-generator without a pinned version, which allows whatever package/version is current at execution time to be fetched and run. This is a supply-chain risk because a compromised publisher account, malicious update, or dependency swap could cause users to install unexpected code.
The script accepts the API token via a command-line flag, which can expose the credential through shell history, process listings, audit logs, or job runners. This is a real credential-handling weakness because the same token is then used to authenticate outbound API calls to a third-party service.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
console.error(`→ Submitting job (${dims.width}×${dims.height})...`);
const submitRes = await fetch('https://api.talesofai.com/v3/make_image', {
method: 'POST',
headers,
body: JSON.stringify(body),
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
console.error(`→ Submitting job (${dims.width}×${dims.height})...`);
const submitRes = await fetch('https://api.talesofai.com/v3/make_image', {
method: 'POST',
headers,
body: JSON.stringify(body),
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
console.error(`→ Submitting job (${dims.width}×${dims.height})...`);
const submitRes = await fetch('https://api.talesofai.com/v3/make_image', {
method: 'POST',
headers,
body: JSON.stringify(body),
No suspicious patterns detected.