Back to skill

Security audit

Grizzly Sms

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed Grizzly SMS integration, but it also collects API keys in chat, rents numbers, retrieves verification codes, and automates third-party account signups, which needs careful review before installation.

Install only if you intentionally want an agent to rent Grizzly SMS numbers, retrieve verification codes, and potentially automate third-party signups. Prefer configuring the API key through protected config or secret storage instead of chat, do not enable browser automation unless needed, restrict exec to the exact grizzly-cli.mjs commands, avoid full exec with ask off, and do not expose the MCP HTTP port without authentication.

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 (5)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
src/index.ts:363
Finding

Unauthenticated MCP HTTP Server Binds to All Network Interfaces

Content
View full analysis
{ if (req.url && !req.url.startsWith('/mcp') && req.url !== '/' && !req.url.startsWith('/?')) { res.statusCode = 404; res.end(); return; } try { let parsedBody: unknown; if (req.method === 'POST') { parsedBody = await readBody(req); } await transport.handleRequest(req as any, res, parsedBody); } catch (err) { console.error('Request error:', err); res.statusCode = 500; res.end(); } }); httpServer.listen(port, '0.0.0.0', () => { console.error(`Grizzly SMS MCP server listening on http://0.0.0.0:${port}/mcp`); }); } else { const transport = new StdioServerTransport(); await server.connect(transport); console.error('Grizzly SMS MCP server running (stdio)...'); } } ``` ### Technical Analysis When `MCP_TRANSPORT=http` is enabled, the MCP server listens on `0.0.0.0`, making it reachable through every available network interface. Requests are passed directly to `StreamableHTTPServerTransport` without any authentication, authorization, API token validation, or client identity check. The exposed MCP tools include operations that access or mutate the configured Grizzly account: - `get_balance` - `get_wallet` - `request_number` - `get_status` - `set_status` - `get_prices` - `get_countries` - `get_services` Several of these operations are sensitive or chargeable. In particular, `reque ...[truncated 1511 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
src/index.ts:21
Finding

Environment-Controlled API Origin Can Receive the Grizzly API Key

Content
View full analysis
): Promise { try { const response = await this.client.get('/stubs/handler_api.php', { params: { api_key: this.apiKey, ...params, }, transformResponse: [(data: any, headers: any) => { ``` ### Technical Analysis The MCP implementation accepts `GRIZZLY_SMS_BASE_URL` or `SMS_ACTIVATE_BASE_URL` without validating the URL scheme or hostname. The resulting Axios client sends the Grizzly API key to that destination as the `api_key` query parameter. This differs from `scripts/grizzly-cli.mjs`, which hard-codes `https://api.grizzlysms.com`. A compromised deployment configuration, malicious environment injection, or configuration mistake can therefore redirect MCP API traffic and credentials to an attacker-controlled server. The destination is selected at process startup, and the API key is transmitted when an MCP tool makes an API request. ### Attack Path 1. An attacker gains the ability to modify deployment environment variables, a compose override, service configuration, or process launch parameters. 2. The attacker sets `GRIZZLY_SMS_BASE_URL` ...[truncated 961 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/grizzly-cli.mjs:12
Finding

API Key Is Transmitted in URL Query Parameters

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
CONFIG.md:114
Finding

Setup Guidance Grants Broader Host Execution Privileges Than Required

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
package.json:24
Finding

Dependency Installation Is Not Reproducibly Locked

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (66)

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill claims to provide SMS verification and virtual numbers, but it also directs the agent to automate account registration on third-party services. This materially expands behavior into creation of external accounts using rented numbers, which is a higher-risk activity not transparently represented by the manifest and can facilitate abuse at scale.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Browser automation for Uber, Instagram, Telegram, WhatsApp, Facebook, and Google is unrelated to merely interacting with the Grizzly SMS API. Embedding this capability turns the skill into an end-to-end account creation workflow, increasing the risk of fraudulent registrations, policy evasion, and misuse of the browser tool.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The skill explicitly instructs the agent to retrieve SMS verification codes and present them in a copy-friendly format as part of account registration. This directly supports possession-based verification bypass using temporary numbers and can be used to create or control accounts in ways that defeat third-party trust and anti-abuse systems.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The collection performs credentialed requests to a third-party SMS provider and includes state-changing actions such as acquiring numbers and changing activation status, but provides no user-facing warning about balance consumption, external data sharing, or abuse-sensitive behavior. In this context, that omission is dangerous because the skill directly enables actions commonly associated with bypassing phone verification and can incur charges or expose account activity without informed consent.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The OpenAPI spec exposes email activation purchase, status, reorder, and cancellation endpoints even though the skill is described as only providing SMS verification and virtual phone numbers. This scope mismatch increases the chance that an agent or user will unknowingly gain access to disposable email acquisition capabilities, which can be abused for account creation, evasion of platform controls, or other policy-violating automation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill goes beyond SMS lookup and explicitly automates third-party account registration using rented phone numbers and browser actions. This is dangerous because it enables scalable creation of accounts on external platforms, can facilitate policy evasion or fraud, and combines browser automation with SMS interception to complete signups end-to-end.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The workflow explicitly obtains SMS verification codes from rented numbers and uses them to complete account signup. This is sensitive authentication data handling that materially enables account creation and verification on behalf of a user, and in this context it is especially dangerous because it supports disposable-number-based registrations that can be abused at scale.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation tells users to provide the Grizzly API key during conversation, which may expose the credential in chat transcripts, logs, agent memory, or downstream tooling. Because the skill already relies on agent-mediated execution, collecting secrets through conversational text is riskier than using a dedicated secret input path.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The configuration explicitly instructs enabling browser automation so the agent can open external sites and fill registration forms, which materially exceeds a narrow SMS API integration. In the context of a virtual-number/verification skill, this broadens the skill into automated account registration, increasing risk of credential misuse, unintended submissions, phishing exposure, and abuse of third-party services.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The browser-enabled workflow encourages the agent to interact with third-party registration pages and submit data, but the documentation does not clearly warn users that external websites may be opened and forms may be completed on their behalf. In this skill's context, that omission is more dangerous because the workflow is oriented toward account registration using virtual numbers, where user expectations and compliance boundaries are sensitive.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · CONFIG.md (reported line 151)May include surrounding context.

}

text

Then create or edit `~/.openclaw/exec-approvals.json` (macOS) and add `node` to the allowlist. Run `which node` to get your path:

```json
{

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill description says the bot asks for the API key during the conversation, which encourages users to place a secret directly into chat handling pathways. Secrets provided this way may be logged, retained in conversation history, exposed to other tools/components, or mishandled by downstream integrations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The README advertises browser-assisted form filling and a full registration workflow that can change user account state, but it does not clearly warn users that the skill may interact with third-party sites, submit forms, and consume paid SMS activations. In this context, the combination of browser automation and account verification workflows raises the risk of unintended actions, unauthorized registrations, or policy-violating use.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The workflow explicitly instructs the bot to ask the user for the Grizzly SMS API key in conversation. Because this skill also contemplates exec and browser-enabled flows, collecting credentials in chat is especially risky: the secret may be visible in logs and could be reused by any compromised component in the toolchain.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README tells users to enable the exec tool but does not clearly state that this grants shell-command execution capability to the skill. In a skills-only setup, that meaningfully expands the attack surface because any misuse, prompt injection, or implementation flaw could lead to arbitrary local command execution.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

Using npx openclaw gateway restart without pinning a version causes execution of whatever package version npm resolves at runtime. If the upstream package is compromised or a malicious version is published, users could run attacker-controlled code locally during setup.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The troubleshooting text says the API key may be provided in chat, normalizing insecure secret sharing even outside the main workflow. This can lead to accidental credential leakage through transcript storage, debugging logs, or prompt/context propagation across tools.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The Russian documentation repeats the same insecure pattern by directing the bot to request the API key in chat. Multilingual repetition strengthens the conclusion that this is intended behavior, increasing the likelihood users will expose secret material through conversation channels.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This pipeline step explicitly instructs the bot to ask users to hand over the API key during the conversation. That creates a direct secret-exposure path and is more dangerous here because the skill automates paid account actions and may be integrated into systems that retain transcripts.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

This is the same unpinned npx openclaw pattern repeated in the Russian instructions. It introduces supply-chain risk by allowing runtime resolution and execution of an unpinned package version on the user's machine.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The Russian troubleshooting section also permits passing the API key via chat, repeating the same insecure operational guidance. Repetition across support text increases the chance of real-world secret exposure by making the unsafe practice appear endorsed.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill uses sensitive capabilities including network access and environment-based secret handling, but it does not declare a restrictive tool scope. That increases the chance the agent can invoke broader tools than necessary, reducing containment if the skill is triggered unexpectedly or modified later.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.