T09 · Insecure Skill Coding Practices
- Location
scripts/viral-search.js:75- Finding
Shell Command Injection Through the X Search Query
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill’s social posting purpose is mostly disclosed, but it handles live account credentials and sessions while shipping exploitable command-generation patterns that should be reviewed before installation.
Review this skill carefully before installing. Use it only in an isolated environment with dedicated low-privilege social accounts, rotate any credentials used, avoid passing untrusted queries or action values, and require a manual preview/confirmation before any post is published.
scripts/viral-search.js:75Shell Command Injection Through the X Search Query
scripts/instagram-post.js:68Python Code Injection Through the Instagram Action Argument
SKILL.md:15Unpinned Third-Party Python Dependencies
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
print(f"Generating image ({size})...")
try:
resp = urllib.request.urlopen(req, timeout=120)
result = json.loads(resp.read())
b64 = result["data"][0]["b64_json"]
with open(output, "wb") as f:
Undisclosed reliance on external APIs and incomplete description of actual behavior can mislead users about data flows, costs, and account exposure. In security terms, hidden dependencies and omitted external-service interactions reduce informed consent and make risky operations easier to trigger unexpectedly.
Undisclosed reliance on external APIs and incomplete description of actual behavior can mislead users about data flows, costs, and account exposure. In security terms, hidden dependencies and omitted external-service interactions reduce informed consent and make risky operations easier to trigger unexpectedly.
Undisclosed reliance on external APIs and incomplete description of actual behavior can mislead users about data flows, costs, and account exposure. In security terms, hidden dependencies and omitted external-service interactions reduce informed consent and make risky operations easier to trigger unexpectedly.
Undisclosed reliance on external APIs and incomplete description of actual behavior can mislead users about data flows, costs, and account exposure. In security terms, hidden dependencies and omitted external-service interactions reduce informed consent and make risky operations easier to trigger unexpectedly.
The skill documents use of networked tools and environment-based credentials, but it declares no explicit tool scope or allowed-tools policy. That omission can cause overbroad execution in agent environments, making it easier for the skill to access network resources or secrets without clear user visibility or platform enforcement.
The skill instructs users to place sensitive API keys and account credentials in environment variables but gives no guidance on secure handling, storage, rotation, or least privilege. This raises the risk of credential leakage through logs, process inspection, shell history, or overly broad agent access to env vars.
Subtle instructions detected that may alter agent decision-making or introduce hidden biases.
1. **NEVER just put text on a solid dark background** — it looks flat and amateur
2. **ALWAYS use a photographic/cinematic background** — real scenes, real subjects
3. **ALWAYS use dark gradient overlay** on the lower 40% for text readability
4. **Keep subject visible** in the top 60% — face, setting, context
5. **Text lives in the bottom 40% only** — never cover the subject
6. **Use bold condensed typography** (Anton-style) — not regular weight fonts
The skill provides direct commands for publishing to live X/Twitter and Instagram accounts without an explicit safety warning or confirmation requirement. In an agent setting, that increases the chance of accidental posting, reputational harm, disclosure of sensitive information, or unwanted actions on behalf of the user.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
}).encode()
req = urllib.request.Request(
"https://api.openai.com/v1/images/generations",
data=data,
headers={
"Content-Type": "application/json",
The manifest describes a skill for finding trends, generating social graphics, and posting to Instagram/X without paid APIs, but it does not indicate that the implementation will collect account credentials from environment variables or command-line flags. Handling raw credentials is a more sensitive capability than the stated purpose alone implies, especially since the script also persists authenticated session state.
The script stores an authenticated Instagram session to a local file under the user's home directory, creating durable account-state material that can be reused if the file is read by another local process or user. In a skill marketed mainly as social posting automation, silently persisting reusable session state increases the blast radius of compromise beyond a one-time login and can enable unauthorized posting or account access.
The script accesses both environment credentials and a local OpenClaw config file to obtain a Brave API key, which expands its access beyond a narrowly scoped Instagram search helper. In an agent-skill context, reading unrelated local configuration can expose secrets from the host environment and creates unnecessary secret-discovery behavior that could be abused or repurposed if the skill is modified or combined with other components.
The manifest describes a skill that can 'find trending topics' in general, but this file's trending implementation only searches three fixed topic areas: crypto, DeFi, and AI trading. That materially narrows and biases the behavior relative to the broader claim in the description.
The code explicitly uses toLocaleDateString('en-GB', ...), which hard-codes a specific locale in user-visible output. This is a natural-language/locale policy concern because users are not offered a choice or informed that output formatting will be forced to British English conventions.