Back to skill

Security audit

Quick Img V2

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its image-generation purpose, but it also includes an unrelated command that contacts a third-party IP-check service.

Review this skill before installing. The core image command sends prompts and SKILLBOSS_API_KEY to the SkillBoss/HeyBoss API, which is expected for image generation, but avoid sensitive prompts unless you accept that data flow. The separate Check IP command is unrelated to image generation and contacts httpbin.org, exposing the runtime environment's public IP; remove or avoid that workflow unless you specifically need it.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

other

Note
Location
scripts/hello.mjs:2
Finding
Unrelated Public IP Reconnaissance Through a Third-Party Service## Vulnerability Details **File Location**: `scripts/hello.mjs:2-4` (invoked by `SKILL.md:20-24`) **Vulnerability Type**: Environment Reconnaissance **Risk Level**: Low ### Vulnerable Code ```javascript const resp = await fetch("https://httpbin.org/get"); const data = await resp.json(); console.log(data.origin); ``` The corresponding invocation documented in `SKILL.md` is: ```markdown ## Check IP ```bash node {baseDir}/scripts/hello.mjs ``` ``` ### Technical Analysis The script makes an outbound request to `https://httpbin.org/get`, causing an unrelated third-party service to observe the execution environment's public source IP address. It then extracts and prints the returned `origin` value. This network-reconnaissance behavior is not necessary for the Skill's declared image-generation purpose. Although the code does not transmit the returned address to an additional destination or execute remote content, invoking the feature discloses network-location metadata to `httpbin.org` and reveals the public IP in local output. ### Attack Path 1. A user or agent follows the documented **Check IP** workflow. 2. Node.js executes `scripts/hello.mjs`. 3. The script sends an HTTPS request to `httpbin.org`. 4. `httpbin.org` observes the host's public source IP and returns it in the JSON response. 5. The script prints that public IP to standard output. No further exploitation, privilege escalation, persistence, or remote payload execution was identified. ### Impact Assessment The behavior reveals the execution environment's public IP address to an unrelated external provider and exposes it in command output. This can disclose infrastructure location, hosting-provider information, NAT or gateway details, and other network metadata useful for reconnaissance. The behavior does not grant filesystem access, elevated privileges, code execution, persistence, or access to additional credentials. Its scope is limi ...[truncated 81 chars]
Remediation
## Remediation Suggestions 1. Remove the **Check IP** section from `SKILL.md` and delete `scripts/hello.mjs`, because this functionality is unrelated to image generation. 2. If public-IP diagnostics are operationally necessary, clearly document their purpose and require explicit user consent before making the outbound request. 3. Use an organization-controlled diagnostic endpoint rather than an unrelated public service. 4. Restrict outbound network access to the image-generation API endpoint required by the Skill. 5. Avoid printing network identifiers unless necessary, and redact or minimize diagnostic output where possible.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

External Script Fetching

High
Category
Supply Chain
Content
---
name: quick-img
description: "Generate images using curl and the SkillBoss API."
allowed-tools: Bash
metadata: {"clawdbot":{"requires":{"env":["SKILLBOSS_API_KEY"]},"primaryEnv":"SKILLBOSS_API_KEY"}}
---
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Lp1

High
Category
MCP Least Privilege
Confidence
94% confidence
Finding
The script performs an outbound network request, but that capability is not aligned with the declared permissions and is therefore hidden from the expected trust model. Even though the request targets httpbin, undeclared network access can be repurposed for tracking, data exfiltration, or contacting arbitrary external services.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The skill claims to generate images via the SkillBoss API, but the code instead calls an unrelated external service and prints the caller's apparent origin IP. This mismatch is a strong indicator of deceptive or unauthorized behavior, because it introduces network reconnaissance/tracking functionality unrelated to the declared purpose.

External Transmission

Medium
Category
Data Exfiltration
Content
---
name: quick-img
description: "Generate images using curl and the SkillBoss API."
allowed-tools: Bash
metadata: {"clawdbot":{"requires":{"env":["SKILLBOSS_API_KEY"]},"primaryEnv":"SKILLBOSS_API_KEY"}}
---
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The example sends the user's API key and prompt content to a third-party service without any explicit notice about external transmission, logging, retention, or privacy implications. Prompts may contain sensitive data, and embedding the API key in the request body also increases exposure through shell history, process inspection, or accidental logging.

External Transmission

Medium
Category
Data Exfiltration
Content
## Generate

```bash
curl -s -X POST https://api.heybossai.com/v1/run \
  -H "Content-Type: application/json" \
  -d "{\"api_key\":\"$SKILLBOSS_API_KEY\",\"model\":\"mm/img\",\"inputs\":{\"prompt\":\"A sunset\"}}" \
  | node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{const j=JSON.parse(d);console.log(j.image_url||JSON.stringify(j))})"
Confidence
83% confidence
Finding
The command transmits prompt data and an API credential to an external domain. While contacting the image-generation API is part of the skill's function, the transmission is still security-relevant because sensitive prompt content or credentials may be exposed to the remote service or intermediary logs if users are not properly warned.

Intent-Code Divergence

Medium
Confidence
87% confidence
Finding
The skill documents a 'Check IP' action but actually executes a local Node script, creating a mismatch between stated behavior and executed behavior. That kind of deceptive or confusing documentation increases risk because users may run code they do not understand or intend, and the script could be changed later to perform unrelated or unsafe actions.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
Exposing network-origin information reveals environmental or user-adjacent metadata that is not needed for an image-generation skill. In context, this makes the behavior more suspicious because it can be used for fingerprinting, infrastructure discovery, or covert telemetry.

Missing User Warnings

Low
Confidence
90% confidence
Finding
The script makes an outbound request without any disclosure to the user, which undermines transparency and can hide unexpected data flows. In this skill, the lack of notice is more concerning because the request is unrelated to the advertised image-generation behavior.

Static analysis

No suspicious patterns detected.