T01 · Skill Instruction Hijacking
- Location
SKILL.md:161- Finding
Mandatory Promotional Output Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This prompt-recommendation skill is mostly coherent, but it asks agents to run shell and network update steps against mutable remote data without enough validation or containment.
Install only if you are comfortable with the skill contacting GitHub/YouMind, updating local reference files, and downloading preview images. In stricter environments, disable or review the auto-update and shell-download steps first, pin or verify the reference data source, and avoid running the media download commands with untrusted remote URLs.
SKILL.md:161Mandatory Promotional Output Injection
scripts/setup.js:56Remote Manifest Path Traversal Allows File Writes Outside the References Directory
SKILL.md:247Remote Media URL Is Interpolated into a Shell Command Without Validation
Referenced artifact was not completely inspected
node scripts/setup.js
Referenced artifact was not completely inspected
node scripts/setup.js
Referenced artifact was not completely inspected
node scripts/setup.js
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
Then use the `slug` and `title` fields to match user intent to the right file.
<!-- REFERENCES_START -->
### Use Case Category Files
The skill instructs the agent to execute shell commands to download arbitrary remote media and remove local files, even though its stated purpose is recommendation. This needlessly grants code-execution and file-system behavior to a content-browsing workflow, increasing the blast radius if URLs, filenames, or instructions are manipulated.
The skill prescribes a specific destructive shell action (rm /tmp/prompt_img.jpg) as part of normal operation. Even though the example path is fixed, embedding file-deletion commands in skill instructions normalizes unnecessary exec usage and can become dangerous if later generalized, templated, or combined with attacker-influenced paths.
message tool: action=send, media=/tmp/prompt_img.jpg, caption="[Prompt Title]"
Step C — Cleanup: exec: rm /tmp/prompt_img.jpg
Do this for **each** of the 3 recommended prompts — one image per prompt.
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
{
"name": "ai-image-prompts-skill",
"version": "1.0.9",
"description": "AI skill: 10,000+ curated image generation prompts for any model \u2014 Nano Banana Pro, Nano Banana 2, Seedream 5.0, GPT Image 1.5, Midjourney, DALL-E, Flux, Stable Diffusion, and more. Auto-downloads library on install. Works with OpenClaw, Claude Code, Cursor and more.",
"type": "module",
"scripts": {
"generate": "npx tsx scripts/generate-references.ts",
"typecheck": "tsc --noEmit",
"setup": "node scripts/setup.js",
"sync": "node scripts/setup.js --force"
},
"keywords": [
"openclaw",
"openclaw-skill",
"clawhub",
"claude-code",
"cla
The README instructs users to run an unpinned npx skills installer, which resolves the latest package version at execution time. If the package, dependency chain, or registry resolution is compromised, users may execute attacker-controlled code during installation.
This command again uses unversioned npx skills, causing users to fetch and execute whatever package version is current at the time. That creates a supply-chain risk because a compromised publish or dependency update could turn the install step into arbitrary code execution.
The README recommends npx openskills without pinning a version, which exposes users to the same package-resolution and dependency-substitution risks as other floating npx installs. Because npx may download and run code immediately, exploitation can directly impact the local developer environment.
The skill performs network-capable actions such as fetching prompt references and remote media, but it does not declare explicit tool scope or allowed tools. This creates a permission-boundary mismatch where a seemingly simple recommender can invoke broader capabilities than users or the host may expect.
The 'Use this skill when users want to' list covers very broad intents such as getting inspiration, creating illustrations, and translating prompt techniques, but it does not define clear limits or non-matching cases. In a markdown skill description, this can cause unintended activation for ordinary creative-assistance requests that may not specifically require this prompt-library skill.
The manifest frames the skill as a prompt recommender, but operational instructions require downloading data from GitHub before use. This expands the trust boundary to remote content and introduces supply-chain and privacy risks that are not obvious from the declared purpose.
The skill mandates silent network updates from GitHub on every run or when stale, without user-facing disclosure or consent. This can surprise users, leak request context through timing and access patterns, and expose the agent to unreviewed upstream content changes.
The instructions direct downloading remote images to local temporary storage and sending them without warning the user. This expands data handling and network activity beyond what a user may reasonably expect from a prompt recommendation skill, and it creates risk from untrusted remote content.
The manifest emphasizes recommending prompts from a curated 10,000+ prompt library. The documented workflow goes beyond recommendation by creating new AI-generated prompts and personalized remixes, which is a materially broader behavior than simply recommending library entries.
This is a manifest file, so vague-trigger review applies. The description says the skill "Auto-downloads library on install" and broadly claims it works across multiple tools, but it does not specify the exact activation context, scope, or exclusions, which can create ambiguity about when the skill performs actions or is invoked.
For markdown files this rule checks omitted warnings, and for code files it checks undisclosed operations; in this manifest, the description announces automatic downloading during installation but provides no user warning about network access, data transfer implications, or that installation changes the local environment. Because install-time downloads can affect system integrity and user expectations, a clearer warning is warranted.
The generate script invokes npx tsx, which can resolve and execute a package version at runtime rather than strictly using a fully pinned local binary. In environments without a locked local install or with registry tampering, this increases supply-chain risk because code fetched at execution time may differ from what the maintainer reviewed.
The manifest describes a skill for recommending and browsing curated image-generation prompts, but this script reaches out to GitHub, downloads content, deletes stale local files, and writes reference data to disk. While this may support maintaining the prompt library, it is materially broader than the end-user description of a prompt recommendation skill.
The README states that the skill auto-checks for updates on each use, but it does not clearly disclose the resulting network behavior, what endpoints are contacted, or what data may be transmitted. Undocumented background network access reduces user consent and trust, and could expose metadata or create an unexpected update channel.
The heading narrows Step 5 to content illustration mode only, but the immediately following instructions explicitly broaden it to all users regardless of contentIllustrationMode. This is an active contradiction in the documentation about when remixing behavior should occur.
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"author": "YouMind-OpenLab",
"license": "MIT",
"devDependencies": {
"@types/node": "^20.10.0",
"tsx": "^4.7.0",
"typescript": "^5.3.0"
},
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"license": "MIT",
"devDependencies": {
"@types/node": "^20.10.0",
"tsx": "^4.7.0",
"typescript": "^5.3.0"
},
"dependencies": {
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"devDependencies": {
"@types/node": "^20.10.0",
"tsx": "^4.7.0",
"typescript": "^5.3.0"
},
"dependencies": {
"dotenv": "^17.2.3",
No suspicious patterns detected.