Back to skill

Security audit

Disposable Camera Photo Generator

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real image-generation skill, but it asks users to expose an API token on the command line and documents a mutable npx install path.

Review before installing. Prefer a trusted or pinned install path, use a dedicated low-scope Neta token, avoid putting real tokens directly in shell commands, and do not submit sensitive prompts or reference IDs unless you are comfortable sending them to the external image-generation service.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
disposablecameraphotogenerator.js:14
Finding

API Token Exposed Through Command-Line Arguments

Content
View full analysis
0) args.prompt = rest.join(' '); return args; } async function sleep(ms) { return new Promise((r) => setTimeout(r, ms)); } async function main() { const { size, prompt, token: tokenFlag, ref } = parseArgs(process.argv.slice(2)); const TOKEN = tokenFlag; ``` The insecure invocation is explicitly recommended in the documentation: ```bash node disposablecameraphotogenerator.js "your prompt" --token YOUR_TOKEN ``` ### Technical Analysis The application requires users to provide the Neta API token through the `--token` command-line option and retrieves it from `process.argv`. Command-line arguments are not an appropriate secret transport mechanism because they may be recorded in shell history, process-monitoring telemetry, crash diagnostics, terminal logs, or automation logs. Depending on operating-system process visibility controls, other local users or processes may also be able to inspect the command line while the program is running. The exposure window is material because the process polls the remote service for up to approximately three minutes. The appli ...[truncated 1266 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:32
Finding

Unpinned Package Execution Through npx Installation Command

Content
View full analysis
Remediation
View remediation
add blammectrappora/disposable-camera-photo-generator ``` Version pinning reduces unexpected changes but does not replace publisher verification, provenance checks, and integrity validation. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (9)

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The README instructs users to run npx skills add ... without pinning a specific version, which can cause execution of whatever package version is current at install time. If the upstream package, dependency chain, or namespace is compromised, users may execute unexpected code during installation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The README tells users to pass the API token directly on the command line, which exposes credentials through shell history, process listings, terminal logs, and CI logs. In the context of an API-backed image generation skill, token theft could allow unauthorized API use, quota exhaustion, billing abuse, or account misuse.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill advertises Bash usage and explicitly requires a Neta API token, which implies outbound network access, but it does not declare any tool scope such as allowed-tools or permissions. That creates a trust and containment problem: an agent may run a network-capable skill without explicit sandboxing or user-visible authorization boundaries, increasing the risk of unintended data egress or broader tool use than expected.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

Using npx skills add blammectrappora/disposable-camera-photo-generator without a pinned version allows installation of whatever package/version is current at execution time. If the upstream package is updated maliciously, compromised, or unexpectedly changed, users may install and run unreviewed code, creating a supply-chain risk.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · disposablecameraphotogenerator.js (reported line 74)May include surrounding context.

js
console.error(`→ Submitting (${dims.width}×${dims.height})...`);

  const submitRes = await fetch('https://api.talesofai.com/v3/make_image', {
    method: 'POST',
    headers,
    body: JSON.stringify(body),

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · disposablecameraphotogenerator.js (reported line 74)May include surrounding context.

js
console.error(`→ Submitting (${dims.width}×${dims.height})...`);

  const submitRes = await fetch('https://api.talesofai.com/v3/make_image', {
    method: 'POST',
    headers,
    body: JSON.stringify(body),

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · disposablecameraphotogenerator.js (reported line 105)May include surrounding context.

js
console.error(`→ Submitting (${dims.width}×${dims.height})...`);

  const submitRes = await fetch('https://api.talesofai.com/v3/make_image', {
    method: 'POST',
    headers,
    body: JSON.stringify(body),

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill sends the user's prompt and authentication token to a third-party service over the network, but it provides no clear privacy or data-handling disclosure beyond operational logging. This is risky because prompts may contain sensitive user content and the token is a credential for the external service, so users should be explicitly informed that their data is leaving the local environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

When --ref is supplied, the skill transmits the reference picture identifier to the external API without explicitly telling the user that this identifier will be shared. While a UUID alone is less sensitive than image content, it may still link to user assets or internal records on the provider side and therefore deserves disclosure.

Content

No source excerpt is available for this finding.