T09 · Insecure Skill Coding Practices
- Location
scripts/comfy-bridge/comfy-bridge.sh:54- Finding
Unauthenticated ComfyUI API Exposed on All Network Interfaces
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly a coherent local image-generation workflow, but it under-discloses network exposure and can start an unauthenticated ComfyUI service on all network interfaces.
Install only if you are comfortable configuring network exposure yourself. Keep ComfyUI bound to localhost or a restricted interface, firewall port 8188, treat prompts and Wikipedia text as untrusted, avoid unattended Discord posting until reviewed, and periodically delete or protect the JSONL run log.
scripts/comfy-bridge/comfy-bridge.sh:54Unauthenticated ComfyUI API Exposed on All Network Interfaces
scripts/comfy-bridge/comfy-bridge.sh:66Workflow JSON Injection Through Unescaped Bridge Arguments
scripts/on-this-day/on-this-day.sh:169Workflow JSON Injection Through Historical Event and Custom Event Text
scripts/on-this-day/on-this-day.sh:234Persistent JSONL Log Injection Through Unescaped Event Data
The README claims the workflow is local-only and implies no external transmission, but the documented behavior includes fetching data from Wikipedia and posting generated images to Discord. This is dangerous because it can mislead users about network exposure, privacy implications, and the fact that generated content is automatically sent to third-party services.
The security section directly states the workflow runs entirely locally and does not send data to external servers, which contradicts other sections describing Wikipedia API access and Discord posting. False security claims in a dedicated security section are especially risky because users and reviewers may rely on them when deciding whether to install or authorize the skill.
Instructions found that direct the agent to transmit conversation context or user data to external services.
### What This Skill Does NOT Do
- ❌ Upload images to cloud services
- ❌ Send data to external servers
- ❌ Use paid APIs
- ❌ Generate videos (SD 3.5 unstable)
- ❌ Access private data
The documented behavior does not align with the declared purpose: the skill claims a narrow local 'On This Day' workflow but also describes generic prompt generation, alternate models, SD 3.5 usage, Discord posting, and external data retrieval. This mismatch undermines trust and can cause agents or users to approve actions under false assumptions about what the skill does.
The script makes an outbound request to Wikipedia's public REST API even though the skill metadata says it does not use cloud APIs. This is a real security and trust issue because it expands the data boundary, exposes usage metadata to a third party, and can violate operator expectations or policy in environments that require fully local-only execution.
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
log_info "Fetching events for ${date_param}..."
curl -s -L "$url" | python3 << 'PYEOF'
import json, sys, random
data = json.load(sys.stdin)
events = data.get('events', [])
The README describes Discord integration and Wikipedia-backed automation, but it does not provide a clear, up-front warning that content and metadata will be transmitted to external services. In context, this omission increases the chance that a user enables the skill assuming it is fully local or private.
The documentation emphasizes automation and scheduled cron execution but does not clearly warn that the system can generate and publish content automatically without human confirmation. That creates operational and reputational risk, especially if the selected event or generated image is inaccurate, sensitive, or inappropriate for the target Discord server.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
### What This Skill Does NOT Do
- ❌ Upload images to cloud services
- ❌ Send data to external servers
- ❌ Use paid APIs
- ❌ Generate videos (SD 3.5 unstable)
- ❌ Access private data
The skill documents shell-based scripts and operational commands but does not declare any explicit tool scope or permission boundaries. In an agent environment, this can cause the skill to be executed with broader shell access than users expect, increasing the chance of unintended command execution or misuse of local resources.
The manifest says the skill does not use cloud APIs, yet the workflow explicitly depends on Wikipedia data retrieval and may send results to Discord. This is dangerous because users may rely on the local-only claim when deciding whether sensitive prompts, metadata, or generated content are safe to process.
The documentation says the skill does not handle SD 3.5, but later recommends or supports SD 3.5 as an experimental option. While not directly an exploit primitive, contradictory capability claims can mislead users and agents into invoking unsupported or unstable workflows, potentially causing crashes, resource exhaustion, or unsafe fallback behavior.
The skill description omits an upfront warning that generated images and related metadata may be sent to Discord. This creates a privacy and data-handling risk because users may provide prompts or generate content assuming a local-only workflow, when output distribution to a third-party platform is possible.
The setup guide states the workflow 'runs automatically' and 'posts to Discord', which conflicts with the skill metadata claiming local-only image generation and no cloud API use. This creates an undeclared outbound data flow and behavior expansion that could cause users to expose generated content and associated metadata to a third-party service without informed consent.
Automatic daily posting to Discord introduces recurring network transmission without prominent warning or explicit opt-in, and the guide notes posts include date and location. Even if the data seems low sensitivity, silent scheduled disclosure to an external platform increases privacy and operational risk, especially because users may believe the skill is local-only.
The bridge is hardcoded to communicate with a fixed LAN IP and launches ComfyUI with --listen 0.0.0.0, so the workflow is not truly local-only and may expose prompts, generated content, and service control to the network. In the context of a skill described as local image generation, this mismatch increases risk because users may trust it as local while it actually depends on reachable network services.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
mkdir -p "$SHARED_INPUT" "$SHARED_OUTPUT"
check_comfy() {
curl -s "http://${COMFY_HOST}:${COMFY_PORT}" > /dev/null 2>&1
}
wait_for_comfy() {
The manifest frames this skill as generating daily historical images using a local ComfyUI workflow. In addition to generation, the script starts the ComfyUI server process itself via Windows cmd.exe and exposes it with '--listen 0.0.0.0', which is an operational/service-management capability not clearly justified by the stated purpose.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
WFEOF
)
local response=$(curl -s -X POST "http://${API_HOST}:${API_PORT}/prompt" \
-H "Content-Type: application/json" \
-d "$workflow")
The script persistently logs run metadata including date, event text, inferred location, prompt, image path, and timestamp to a JSONL memory file. This creates a privacy and data-retention risk beyond the stated purpose of one-off image generation, especially because prompts and event selections may reveal user interests or sensitive usage patterns over time.
Appending run metadata to a persistent memory file without clear disclosure is a genuine privacy/security weakness. Users may not expect their prompts, locations, and output paths to be retained indefinitely, and such accumulated records can be exposed to other local users, backups, or later tooling.
The module comment presents the script as a Wikipedia-driven historical-event generator, yet run_on_this_day bypasses Wikipedia entirely when a test event argument is provided and then generates an image from that arbitrary input. This is a real intent mismatch between the file-level documentation and implemented behavior.
No suspicious patterns detected.