Back to skill

Security audit

StickyHive

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent StickyHive automation CLI, but it can perform high-impact external actions and can send the API key to an unvalidated custom API URL.

Install only if you trust the StickyHive publisher and understand that this skill can change live community content, automations, DM sequences, enrollments, and webhooks. Use a least-privilege or sandbox API key, avoid setting STICKYHIVE_API_URL unless you fully control and trust the destination, and require explicit confirmation before publish, delete, workflow run/toggle, enrollment, or webhook commands.

Vulnerability Patterns
  • 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
  • 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
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
src/api.ts:9
Finding

Bearer Credential Disclosure Through an Unvalidated Custom API Endpoint

Content
View full analysis
v !== undefined && v !== ''), ); const qs = params.toString(); if (qs) url += `?${qs}`; } const headers: Record = { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json', }; const opts: RequestInit = { method, headers }; if (body && ['POST', 'PUT', 'PATCH'].includes(method)) { opts.body = JSON.stringify(body); } const res = await fetch(url, opts); ``` ### Technical Analysis The API base URL is taken directly from the `STICKYHIVE_API_URL` environment variable without validating its scheme, hostname, port, or trust relationship. The same request path then unconditionally attaches `STICKYHIVE_API_KEY` as a bearer credential. Consequently, the security boundary for the API credential is determined entirely by an environment variable. If an attacker can influence that variable through a compromised launcher, CI configuration, shell profile, Agent environment, container configuration, or unsafe wrapper script, the attacker can redirect every authenticated request to a server under their control. The custom destination does not need to emulate the complete StickyHive API. It only needs to accept an HTTP request and record the `Authorization` header. The compiled executable in `dist/index.js` contains the same behavior, so invoking the distributed CLI exposes the same risk. ### Attack Path 1. The ...[truncated 1536 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (28)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The declared description presents a broad community management and automation skill spanning multiple platforms and actions such as scheduling posts, automating workflows, and running DM sequences. However, the supplied code chunk only implements read-only retrieval of spaces: listing all spaces and getting one space by ID. This is a materially narrower and different behavior than the declared purpose. While 'spaces' could be loosely related to communities, the code does not demonstrate management, scheduling, automation, messaging, or engagement functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

This code chunk is narrowly focused on webhook administration through GET/POST/DELETE requests to /webhooks/ endpoints. The declared description emphasizes community management features such as scheduling posts, automating workflows, and running DM sequences across several community platforms. Webhook CRUD may support automation in a broader system, but it is not mentioned as a user-facing capability here and is materially different from the declared primary purpose. Therefore the description does not accurately represent this code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This code chunk is a build configuration file, not application logic. It sets up bundling for a Node CLI but does not show any functionality related to managing communities, scheduling posts, automating workflows, sending DMs, or integrating with the listed platforms. Because the declared description claims substantive operational capabilities while the supplied code only configures packaging, the description does not accurately represent what this code chunk actually does.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill documents use of an API key via environment variables and a networked CLI, but it does not declare any tool scope or permissions boundaries. In an agent setting, that omission can let the skill be invoked too broadly and access network/env capabilities without clear user-visible constraints, increasing the chance of unintended external actions or secret exposure.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The activation text is broad enough to trigger on common community-management requests, causing the agent to select a skill capable of posting content, sending DMs, changing workflows, and managing webhooks. Overbroad invocation increases the risk of unintended high-impact actions being proposed or executed in contexts where the user only wanted advice or non-operative assistance.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation includes destructive and user-impacting commands such as delete, publish, workflow execution/toggling, enrollment management, DM sequencing, and webhook administration without any cautionary guidance. In an agent environment, this can normalize direct execution of actions that affect users, content, or integrations, leading to accidental spam, unwanted messaging, data loss, or unauthorized changes across external platforms.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The code issues a DELETE request to remove scheduled posts directly, but there is no confirmation prompt, warning print, or inline disclosure at the point of execution. Although the command name indicates deletion, this file lacks any explicit user-facing warning about the irreversible effect of deleting a post.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The handler deletes a webhook endpoint via DELETE without a confirmation prompt, warning output, or nearby comment disclosing the action. Removing a webhook can affect integrations and data flow, so the lack of an explicit warning is a user-safety gap.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code performs an outbound HTTP request using a bearer API key and may also transmit request body or query data, but the file contains no confirmation prompt, user-facing log, or explanatory comment/docstring warning about the network transmission. Because this is a code file, outbound data transfer and credential use should have some visible disclosure unless clearly documented elsewhere as part of the skill's stated purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The deletePost function issues a DELETE request that can remove a scheduled post, but there is no confirmation prompt, warning message, or explanatory comment around this irreversible action. In this file, the operation is not accompanied by any visible disclosure to the user about its destructive effect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The publishNow function triggers immediate publication via an API call, which is a safety-relevant action affecting externally visible content. The code provides no confirmation, warning, or user-facing disclosure that the scheduled post will be published immediately.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The deleteSequence function performs a DELETE request that can remove sequence data, but the code shows no confirmation prompt, user-facing log/print, or inline warning/comment describing the destructive action. For a code file, destructive or irreversible operations should have some visible disclosure unless covered elsewhere, which is not evident in this file.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The deleteWebhook function issues a DELETE request that can permanently remove a webhook, but the code provides no confirmation prompt, warning message, or explanatory comment. This is a safety-relevant destructive action, and users are not given any visible notice at the point of execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The deleteWorkflow function issues a DELETE request that can irreversibly remove a workflow, but the code shows no confirmation prompt, user-facing warning, or explanatory comment/docstring. For code files, destructive operations should have some form of disclosure unless clearly covered elsewhere; no such disclosure is visible in this file.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code defines a delete operation for scheduled posts, but the CLI entry provides no confirmation prompt, cautionary messaging, or other user-facing disclosure before invoking the destructive handler. In this file, similar destructive or state-changing commands are presented as ordinary commands, which increases the chance of accidental data loss during agent or user invocation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

The command queues a post for immediate publishing, which can have externally visible and effectively irreversible effects, but the CLI definition contains no confirmation prompt or cautionary disclosure. The brief description states what it does, but it does not function as a safety warning for an action that may publicly publish content immediately.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

Registering a webhook endpoint configures outbound delivery of event data to a user-supplied URL, which is a network/data-transmission action. In this file there is no user-facing warning, confirmation, or explanatory text highlighting that events will be sent to an external destination.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The skill sends a DELETE request for workflows with no confirmation prompt or warning output in the handler. While the CLI description says "Soft-delete a workflow," the execution path itself provides no additional disclosure before altering workflow state.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The deleteSequence handler performs a DELETE request immediately and does not provide a confirmation prompt, warning message, or other user disclosure in the code path. Even though the command is labeled as a soft-delete elsewhere, the operation still changes user data and lacks explicit runtime warning.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: esbuild==0.27.7 — 1 advisory(ies): GHSA-g7r4-m6w7-qqqr (esbuild allows arbitrary file read when running the development server on Window)

Low
Category
Supply Chain
Confidence
88% confidence
Finding

This is a true dependency risk: the lockfile pins esbuild 0.27.7, and that version is reported as affected by GHSA-g7r4-m6w7-qqqr, which allows arbitrary file read when running esbuild's development server on Windows. In this package, esbuild is a devDependency transitively used by tsup rather than part of the runtime CLI, so exploitation is more situational and mainly impacts developers/build environments rather than end users.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This manifest file describes the skill in very broad terms such as community management, workflows, and DM sequences, but provides no narrow invocation conditions, exclusions, or trigger constraints. In a manifest context, such general-purpose wording can contribute to unintended invocation because it overlaps with many common social-media or automation requests.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 46)May include surrounding context.

json
"node": ">=18.0.0"
  },
  "dependencies": {
    "node-fetch": "^3.3.2",
    "yargs": "^17.7.2"
  },
  "devDependencies": {

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 47)May include surrounding context.

json
},
  "dependencies": {
    "node-fetch": "^3.3.2",
    "yargs": "^17.7.2"
  },
  "devDependencies": {
    "@types/node": "^20.11.19",

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 50)May include surrounding context.

json
"yargs": "^17.7.2"
  },
  "devDependencies": {
    "@types/node": "^20.11.19",
    "@types/yargs": "^17.0.32",
    "tsup": "^8.5.1",
    "typescript": "^5.3.3"

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 51)May include surrounding context.

json
},
  "devDependencies": {
    "@types/node": "^20.11.19",
    "@types/yargs": "^17.0.32",
    "tsup": "^8.5.1",
    "typescript": "^5.3.3"
  }

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
dist/index.js:32