Back to skill

Security audit

OpenTweet X Poster

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed OpenTweet social-posting integration with real posting and DM authority, but its sensitive actions are purpose-aligned and include review and confirmation guardrails.

Install only if you trust OpenTweet with the connected social accounts and API key. Review every publish, bulk schedule, evergreen setup, deletion, and DM campaign approval carefully, because these actions can create public posts or queued outreach from your account.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · SKILL.md (reported line 637)May include surrounding context.

md
2. `POST /api/v1/dm-campaigns` with the ICP, sources, message brief, limits, and `accept_policy: true`
3. `POST /api/v1/dm-campaigns/{id}/discover`, then poll `GET /api/v1/dm-campaigns/{id}` until status is `reviewing`
4. `GET /api/v1/dm-campaigns/{id}/leads?state=qualified` — show the user the qualified leads and their drafted messages
5. Only after the user approves specific leads: `PATCH .../leads/{leadId}` with `action: approve`. Never auto-approve every lead.
6. `GET /api/v1/dm-campaigns/{id}/inbox` later to read replies

**Find inspiration and repurpose it:**

Static analysis

No suspicious patterns detected.