T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/generate.py:29- Finding
Mandatory Access to an Unused Tavily API Credential
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its image-card purpose, but it needs review because it requires an unused API key and sends topics/prompts to third-party services with limited disclosure.
Review before installing. Use this only with non-sensitive topics, use revocable low-quota API keys, and be aware that themes/prompts leave the local environment. The publisher should remove the unused Tavily key requirement, document the actual providers and data sent, narrow the triggers, and harden temporary-file handling.
scripts/generate.py:29Mandatory Access to an Unused Tavily API Credential
scripts/generate.py:247Pollinations API Key Exposed in a URL Query Parameter
scripts/generate.py:457Predictable Temporary Image File Permits Symlink-Based Overwrite
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
}
# print(f"🎨 正在生成背景图(风格:{style[:50]}...)") # 静默模式
response = requests.get(url, params=params, timeout=60)
if response.status_code == 200:
with open(output_path, 'wb') as f:
The introduction states that the skill uses Tavily Search and Pollinations AI, but it does not disclose that user prompts, topics, or generated content may be transmitted to third-party services. This creates a privacy and consent risk because users may provide sensitive educational, business, or personal topics without realizing they leave the local OpenClaw environment.
The description says the skill automatically searches Wikipedia and Baidu Baike, but it does not clearly warn users that their topic queries will be sent to external third-party services. This creates a privacy and data-handling risk, especially if users provide sensitive, proprietary, or personal topics assuming the request stays local to the assistant.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
- ✍️ Auto signature and timestamp
**Who it's for:**
- Students: Create learning note cards
- Educators: Quick teaching materials
- Content creators: Social media knowledge sharing
- Corporate training: Standardized training materials
The invocation phrases shown to users are very broad generic requests for image generation, such as asking to generate a picture about a topic. In an agent environment, broad triggers can cause this skill to activate when a user intended a different image workflow, leading to unintended external searches and generation behavior.
The skill explicitly advertises automatic search against external services, but the description does not warn users that their query/theme content will be transmitted to third-party providers such as Wikipedia, Baidu Baike, and likely API-backed summarization services. This creates a real privacy and transparency issue because users may provide sensitive topics or internal terms without realizing the data leaves the local environment.
The manifest advertises automatic search and summarization but does not disclose that user topics may be transmitted to third-party APIs via the configured POLLINATIONS_API_KEY and TAVILY_API_KEY integrations. This is dangerous because users may provide sensitive subjects, assuming local processing, while the skill silently sends that data to external providers with their own retention and logging practices.
The trigger phrases are broad enough to match generic image-generation requests, which can cause the skill to activate outside its intended sketch-note use case. This creates a prompt-routing and consent problem: users may unintentionally send topics to this skill and its linked external services when they expected a different tool or no third-party processing at all.
The script transmits user-provided themes and fetched content to external services (Jina Reader/Pollinations) without making that data-sharing behavior explicit at the point of use. In a skill/agent context, users may assume local-only processing, so undisclosed outbound transmission can leak sensitive prompts or private topics entered as themes.
The skill documentation does not clearly warn users that their topic input may be transmitted to external services for both search and image generation. This creates a privacy and consent risk, especially if users provide sensitive, personal, or proprietary topics assuming the operation is local or self-contained.
The trigger phrases are very broad and overlap with generic image-generation requests, which can cause the skill to activate in situations where the user did not specifically intend to use this tool. Because the skill sends prompts to external APIs and may perform web search, accidental invocation can expose user topics to third parties and produce unexpected actions.
The natural-language description labels the skill as a Chinese AI tool, which can imply a locale or language constraint. Although the file later lists support for Chinese and English, this early phrasing does not clearly present language choice or explain why a Chinese-specific framing is required.
The description is given in both English and Chinese, and the example usage uses a Chinese placeholder, which suggests language-specific behavior or expectations. The file does not state whether users may choose their preferred language/output locale or whether the skill is intentionally region-specific.
Keywords, tags, and trigger examples are exclusively Chinese-centric, including labels such as "chinese" and "中文 AI", but the manifest does not explicitly state whether other languages are supported or whether Chinese is an intentional regional constraint. This can create an implicit language policy restriction without user opt-in or clear justification.
The skill description, CLI help text, and generated fallback text are all written in Chinese, and the text filtering/compression logic is tailored to Chinese output, with no indication that users may choose another language. This constitutes a locale/language policy concern because the skill effectively forces one language without documented opt-in or justification.
The docstring says the function fetches Wikipedia content, which implies a specific source and behavior. In reality, the implemented primary behavior is to access Baidu Baike through r.jina.ai, with Wikipedia only as a secondary fallback, so the documentation actively misstates what the function does.
No suspicious patterns detected.