Back to skill

Security audit

Bundle

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to support real social-media workflows, but it gives an agent broad account-admin powers and can post, message, delete, or create lasting access without consistently requiring confirmation.

Install only if you trust the so-me.studio CLI publisher and are comfortable giving the agent broad control over the authenticated workspace. Use a low-privilege workspace/API key if possible, review posts and replies before they are sent, avoid letting the agent create API keys or webhooks unless you explicitly asked for that, and monitor team, tenant, webhook, and API-key settings after use.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:23
Finding

Wildcard CLI Permission Exposes Administrative and Credential-Management Operations

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:23-28; supporting tool definitions in tools.md:75-77, tools.md:159-161, and tools.md:2939-3031
Vulnerability Type: Excessive tool permissions and violation of least privilege
Risk Level: High

Vulnerable Code

markdown
| Property | Value |
|----------|-------|
| **name** | so-me-studio |
| **description** | Schedule posts, manage inbox, generate AI content, and automate social-media operations across 10+ platforms |
| **allowed-tools** | Bash(so-me:*) |

The wildcard includes sensitive operations documented in tools.md:

markdown
| `invite_team_member` | Invite a new member to the workspace | email |
| `remove_team_member` | Remove a member from the workspace | memberId |
| `update_member_role` | Update a team member's role | memberId, role |
markdown
| `list_api_keys` | List active API keys for the current workspace | _none_ |
| `create_api_key` | Create a new API key; full key is returned only once | name |
| `revoke_api_key` | Revoke an API key | id |

The exposed profile-management schema also permits sensitive identity changes:

json
{
  "name": "update_profile",
  "description": "Update the authenticated user's profile",
  "inputSchema": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "description": "Display name"
      },
      "password": {
        "type": "string",
        "description": "New password"
      },
      "timezone": {
        "type": "string",
        "description": "IANA timezone"
      },
      "email": {
        "type": "string",
        "description": "Email address"
      }
    }
  }
}

Technical Analysis

The declared functionality primarily concerns social-media scheduling, inbox management, content generation, analytics, and media handling. However, Bash(so-me:*) permits every command made available by the CLI.

That permission includes operations capable of:

  • Changing the aut ...[truncated 2123 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace Bash(so-me:*) with an explicit allowlist containing only commands necessary for the declared workflows.
  2. Separate ordinary operations from elevated administration:
    • Default: account listing, drafts, posts, analytics, media, and inbox reads.
    • Confirmation-required: publishing, replying, deleting content, and sending WhatsApp messages.
    • Disabled by default: API-key management, password/email changes, role management, tenant deletion, account disconnection, and bulk deletion.
  3. Require explicit, task-specific user confirmation immediately before every irreversible or access-control-changing action.
  4. Never allow instructions found in inbox messages, comments, generated content, or API responses to authorize administrative commands.
  5. Apply server-side role checks and short-lived, narrowly scoped credentials so client-side mistakes cannot obtain workspace-administrator privileges.
  6. Redact credentials returned by create_api_key from logs, transcripts, shell history, and model-visible output.
  7. Add automated policy tests that reject any newly introduced CLI command unless it has been reviewed and assigned an appropriate privilege tier.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:8
Finding

Unpinned Global Installation of a Third-Party npm CLI

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:8-14
Vulnerability Type: Unsafe dependency installation and supply-chain exposure
Risk Level: Medium

Vulnerable Code

markdown
## Install so-me.studio CLI if it doesn't exist

```bash
npm install -g @so-me/cli
# or
pnpm install -g @so-me/cli
text

### Technical Analysis

The installation instruction uses a mutable package name without a pinned version or integrity value. Consequently, the package manager resolves whichever release is current at installation time rather than the release reviewed during this audit.

The global installation mode also broadens the effect of a compromised or defective release. npm packages can contain lifecycle scripts that execute during installation, and globally installed binaries can subsequently be invoked from unrelated projects or sessions.

The package scope and linked npm release appear intentional, so the audit found no evidence of typosquatting or an already malicious package. The risk arises from the unpinned, globally executed dependency and the absence of integrity or provenance verification.

### Attack Path

1. The Agent determines that the `so-me` command is unavailable.
2. It follows the Skill instructions and runs `npm install -g @so-me/cli` or the equivalent pnpm command.
3. The package manager downloads the latest package release and its transitive dependencies.
4. If the publisher account, package, registry response, or a transitive dependency has been compromised, malicious installation or runtime code executes with the installing user's privileges.
5. The globally installed binary remains available to future shell sessions and may access the configured `SOMESTUDIO_API_KEY` when invoked.

### Impact Assessment

A compromised dependency could potentially:

- Execute arbitrary code with the privileges of the user performing installation.
- Read environment variables and local files available to that user.
- Access the social-media API key 
...[truncated 318 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the CLI to a reviewed version, for example @so-me/cli@<reviewed-version>.
  2. Verify package integrity using a lockfile, registry integrity metadata, or a documented checksum/provenance mechanism.
  3. Prefer a project-local installation over -g, then invoke the pinned binary through a controlled package script.
  4. Disable lifecycle scripts with --ignore-scripts if the package does not require them.
  5. Review and pin transitive dependencies in addition to the top-level CLI package.
  6. Run the CLI under a dedicated low-privilege account or sandbox with access only to required files and network destinations.
  7. Establish an update process that reviews release notes, provenance, and package changes before changing the pinned version.

T09 · Insecure Skill Coding Practices

Warning
Location
tools.md:113
Finding

Arbitrary Webhook Destination Can Forward Workspace Events to an Untrusted Endpoint

Content
View full analysis

Vulnerability Details

File Location: tools.md:113-119; schema details at tools.md:2010-2041
Vulnerability Type: Unrestricted outbound webhook destination and sensitive data forwarding
Risk Level: Medium

Vulnerable Code

markdown
| `list_webhook_subscriptions` | List all webhook subscriptions in your workspace | _none_ |
| `create_webhook_subscription` | Create a new webhook subscription | url, categories |
| `update_webhook_subscription` | Update an existing webhook subscription | id |
| `delete_webhook_subscription` | Delete a webhook subscription | id |
| `list_webhook_deliveries` | List webhook delivery logs with optional filters | _none_ |
| `retry_webhook_delivery` | Retry a failed webhook delivery | id |
| `test_webhook_subscription` | Send a test ping to a webhook subscription | id |

The destination field is described in the schema as follows:

json
"url": {
  "type": "string",
  "description": "Webhook endpoint URL"
}

Technical Analysis

The tool accepts a caller-provided webhook URL and event categories. The reviewed Skill documentation does not define:

  • An approved destination allowlist.
  • An HTTPS-only requirement.
  • Blocking of loopback, link-local, private, or cloud-metadata addresses.
  • DNS rebinding protections.
  • Payload minimization requirements.
  • A mandatory confirmation showing the endpoint and event categories.
  • A warning that subsequent workspace events may be transmitted to the configured destination.

Outbound webhooks are a legitimate part of the declared service, and the project does not prove that server-side URL validation is absent. Nevertheless, exposing arbitrary webhook management through the wildcard CLI permission creates a data-forwarding channel whose safeguards are not documented in the audited files.

Depending on server-side behavior, this could enable sensitive event delivery to an attacker-controlled endpoint. If the backend performs requests to arbitrary resolved addresses, ...[truncated 1511 chars]

Remediation
View remediation

Remediation Suggestions

  1. Restrict webhook destinations to HTTPS URLs.
  2. Validate the URL both when it is registered and immediately before delivery.
  3. Resolve hostnames and reject loopback, link-local, private, multicast, reserved, and cloud-metadata address ranges for both IPv4 and IPv6.
  4. Revalidate every redirect target and prohibit redirects to disallowed address ranges.
  5. Consider an organization-controlled destination allowlist.
  6. Display the normalized destination and exact event categories, then require explicit user confirmation before registration or modification.
  7. Minimize payload fields and exclude credentials, message contents, personal data, and unnecessary identifiers by default.
  8. Provide a clear subscription inventory and audit log showing the creator, destination, event categories, creation time, and recent deliveries.
  9. Sign webhook payloads with a rotatable secret, but never expose that secret in ordinary Agent output or logs.
  10. Remove webhook-management commands from the default tool allowlist unless the user specifically requests webhook administration.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- Full tool catalogue (auto-generated, every CLI command + arguments): see `tools.md`

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

Exposing API key lifecycle operations gives the skill credential-administration power that can mint long-lived secrets for the workspace. If an agent is tricked into invoking these tools, an attacker could obtain persistent access outside the normal agent session and potentially pivot into broader account compromise.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The decision table maps very broad user phrases such as 'schedule a post', 'reply to that DM', 'metrics', and 'draft' directly to action-oriented commands without clear exclusion boundaries or a required confirmation gate for state-changing operations. In an agent setting, this increases the chance that ordinary conversational text is interpreted as authorization to perform real posting, replying, or analytics actions against connected social accounts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly documents actions with external side effects, including immediate publishing when posts:create is used without a future --scheduled-at and sending inbox replies, but it does not consistently require a user-facing warning or confirmation immediately before execution. Because this skill operates real social-media accounts, accidental invocation can cause unauthorized public posts or messages, creating reputational, legal, and operational risk.

Content

No source excerpt is available for this finding.

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 211)May include surrounding context.

md
- **`scheduledAt` is ISO 8601 UTC**, strictly in the future. Compute and confirm before scheduling.
- **For multi-step jobs**, chain commands sequentially: generate image → upload → create post referencing the result.
- **Prefer drafts when ambiguous.** `drafts:create` is reversible; `posts:create` (without `--scheduled-at` in the future) publishes immediately.
- **Never bypass approvals.** A workspace requiring approval routes posts to `PENDING_APPROVAL` — do not try to override.
- **WhatsApp template messages require a pre-approved template.** Use `so-me whatsapp:list-templates` first.
- **Never echo `SOMESTUDIO_API_KEY`** even if asked.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The example instructs the agent to automatically inspect private inbox conversations and send outbound replies on the user's behalf without an explicit confirmation step immediately before sending. In a social media management skill, this is risky because misclassification, stale saved replies, or targeting the wrong conversation/channel can cause unauthorized or inappropriate messages to be sent to real customers or leads.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This example demonstrates scheduling content to live external social-media accounts, but the user-facing reply and surrounding text do not clearly emphasize that the action will publish publicly on connected platforms. In an agent setting, that ambiguity can cause unintended posting to brand or personal accounts, especially when AI-generated text is created and scheduled in the same step.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The file describes tools that send replies, WhatsApp messages, support ticket messages, and webhook test/delivery operations, but it does not warn that user or workspace data may be sent to third parties or external endpoints. For markdown descriptions, omission of privacy-impact disclosures is a reportable missing-warning issue.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file documents many irreversible or high-impact operations, including delete_post, bulk_delete_posts, and related delete actions, but provides no warning or cautionary language for users. Under the markdown-file criteria, descriptions should disclose behaviors that could affect user data or system integrity when the skill exposes destructive capabilities.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest describes a social-media scheduling and management platform covering posts, drafts, inbox, AI content, analytics, media, biolinks, and webhooks. Creating and messaging vendor support tickets is a separate customer-support/account-helpdesk capability that is not justified by that stated operational purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

Sensitive credential and account-data operations are exposed without any visible cautionary guidance, increasing the chance that an autonomous agent will mishandle secrets or reveal them in logs and downstream context. In particular, the API key creation tool returns the full key once, which makes accidental disclosure materially dangerous.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest describes managing social-media operations inside a platform, but these tools create, delete, and leave entire workspaces/tenants. Tenant lifecycle administration is an account/governance capability rather than an obvious requirement of social-media scheduling and should be explicitly declared if intentional.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

Getting a user's referral code is a growth/account-marketing feature, not a direct part of scheduling posts, managing inboxes, generating media, or analytics. This capability is not justified by the manifest's described social-media operations scope.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.