T09 · Insecure Skill Coding Practices
- Location
scripts/t2i.py:15- Finding
API Credentials and User Content Transmitted to an Undisclosed Third-Party Endpoint
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a user-run image generation skill, but it sends prompts, image URLs, and an API key to an undisclosed chatfire.site endpoint despite Volcengine branding.
Review this skill carefully before installing. Use only a narrowly scoped, disposable API key, prefer the HUOBAO_API_KEY environment variable over --api-key, avoid sensitive prompts or private/signed image URLs, and do not enable debug mode in shared terminals, CI, or logged environments. The publisher should clearly disclose why chatfire.site receives credentials and user content.
scripts/t2i.py:15API Credentials and User Content Transmitted to an Undisclosed Third-Party Endpoint
scripts/t2i.py:31API Secret Accepted Through Process Command-Line Arguments
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
)
try:
with urllib.request.urlopen(req, timeout=120) as response:
result = json.loads(response.read().decode("utf-8"))
except urllib.error.HTTPError as e:
error_body = e.read().decode("utf-8")
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
)
try:
with urllib.request.urlopen(req, timeout=120) as response:
result = json.loads(response.read().decode("utf-8"))
except urllib.error.HTTPError as e:
error_body = e.read().decode("utf-8")
The skill documents sending prompts and image URLs to external scripts/API endpoints and requires an API key, but it does not warn users that their inputs, referenced images, and credentials are transmitted off-system. This can lead to unintentional disclosure of sensitive prompts, private image URLs, or unsafe handling of API keys, especially when users copy examples directly with secrets on the command line.
Debug mode prints the input image URL, prompt, model, size, and full JSON request body to stderr, which can leak sensitive prompts, private asset URLs, or business data into terminal histories, CI logs, and centralized log systems. Although the API key is not printed, the logged content itself may be confidential and is emitted without any warning or redaction.
The script sends the user-provided image URL and prompt to an external service, which may disclose sensitive image content, private URLs, or confidential prompt text to a third party. While this is core functionality, the absence of an explicit privacy/data-sharing warning increases the risk that users unknowingly transmit sensitive data outside their environment.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
import urllib.error
API_URL = "https://api.chatfire.site/v1/images/generations"
# 支持的模型
MODELS = [
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
import urllib.error
API_URL = "https://api.chatfire.site/v1/images/generations"
# 支持的模型
MODELS = [
The script sends both user-provided prompts and an API credential to a third-party remote service, but it does not clearly warn the user at runtime or in structured output that their input leaves the local environment. In an agent-skill context, this can cause unintended disclosure of sensitive prompts, internal data, or secrets embedded in prompts if users assume the tool is local-only.
The description string is written entirely in Chinese and gives no indication that the skill supports user language selection or is intentionally limited to a Chinese-speaking audience. Under the policy rule, forcing a specific language without opt-in or documented locale justification is a natural-language policy concern.
The user-facing description, errors, warnings, and CLI help are written exclusively in Chinese, which effectively imposes a single language for interacting with the skill. There is no indication that this locale restriction is optional or required for a region-specific compliance reason.
No suspicious patterns detected.