Back to skill

Security audit

Mycobot

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent WhatsApp Business integration, but it documents high-impact account actions and an unsafe API-key troubleshooting step without enough guardrails.

Install only if you trust Maton with your WhatsApp Business access and customer messaging data. Before using destructive operations, require explicit user confirmation naming the exact account, connection, template, or media ID, and do not print or paste MATON_API_KEY; use a presence-only environment-variable check instead.

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

Warning
Location
SKILL.md:599
Finding

API Key Exposure Through Troubleshooting Command

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 599–603
Vulnerability Type: Secret exposure through terminal output
Risk Level: Medium

Vulnerable Code

bash
echo $MATON_API_KEY

Technical Analysis

The troubleshooting instructions tell users or agents to print the complete MATON_API_KEY value. Because this value is used as a bearer credential in the documented Authorization header, possession of it may be sufficient to authenticate to Maton services.

Terminal output can be retained in agent tool transcripts, CI/CD logs, shell session recordings, screenshots, support tickets, or copied diagnostic output. Printing the secret therefore unnecessarily expands its exposure beyond the process environment. The command is not required to establish whether the variable exists; a presence-only check would provide the same diagnostic value without revealing the credential.

Attack Path

  1. A user or automated agent encounters an authentication problem.
  2. It follows the troubleshooting instructions and runs echo $MATON_API_KEY.
  3. The full bearer credential appears in terminal output.
  4. That output is recorded in an agent transcript, build log, screen recording, or support material.
  5. An attacker or unauthorized party with access to the recorded output extracts the key.
  6. The exposed key is replayed against documented Maton gateway or connection-management endpoints, subject to the permissions and connections associated with that key.

Impact Assessment

Successful exploitation could allow an attacker to authenticate with the victim's Maton API key. Depending on the key's server-side permissions and connected accounts, this may expose connection metadata or permit WhatsApp Business operations, including sending messages, handling customer data, managing templates, accessing media-related endpoints, changing business-profile information, or deleting connections.

The exact scope i ...[truncated 182 chars]

Remediation
View remediation

Remediation Suggestions

Replace the secret-printing command with a presence-only test:

bash
if [ -n "${MATON_API_KEY:-}" ]; then
  echo "MATON_API_KEY is set"
else
  echo "MATON_API_KEY is not set"
fi

Additional hardening measures:

  • Explicitly warn users never to print, log, paste, or screenshot the API key.
  • Redact authorization headers and credentials from agent transcripts, application logs, CI output, and support bundles.
  • Use narrowly scoped API keys where Maton supports scope restrictions.
  • Rotate the key immediately if it has appeared in retained or shared output.
  • Add secret-detection checks to documentation review and CI pipelines to reject examples that output credential values.
  • Prefer a dedicated authentication-validation operation that returns only validity status and never reflects the submitted credential.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (11)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

The skill exposes a destructive delete-media operation without any guardrails, confirmation guidance, or parameter validation advice. In an agent setting, attacker-influenced prompts or mistaken identifiers could cause irreversible deletion of business media assets and disrupt messaging workflows.

Content

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

Delete Media

bash
DELETE /whatsapp-business/v21.0/{media_id}

Message Templates

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
92% confidence
Finding

Deleting templates is a high-risk action because templates may be business-critical and their removal can interrupt customer communications or compliance workflows. The skill presents the endpoint directly without safeguards, making prompt-driven misuse or accidental deletion more likely in an automated agent context.

Content

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

Delete Template

bash
DELETE /whatsapp-business/v21.0/{whatsapp_business_account_id}/message_templates?name=template_name

Phone Numbers

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill facilitates sending customer messages and media to an external third-party gateway and also exposes destructive delete operations, but the description does not warn users that customer data will leave the local environment or that some actions are irreversible. This can cause unintentional privacy violations or accidental destructive actions when an agent uses the skill without explicit user awareness.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
};

// Send text message
await fetch(
  'https://gateway.maton.ai/whatsapp-business/v21.0/PHONE_NUMBER_ID/messages',
  {
    method: 'POST',

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
};

// Send text message
await fetch(
  'https://gateway.maton.ai/whatsapp-business/v21.0/PHONE_NUMBER_ID/messages',
  {
    method: 'POST',

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
}

# Send text message
response = requests.post(
    'https://gateway.maton.ai/whatsapp-business/v21.0/PHONE_NUMBER_ID/messages',
    headers=headers,
    json={

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
}

# Send text message
response = requests.post(
    'https://gateway.maton.ai/whatsapp-business/v21.0/PHONE_NUMBER_ID/messages',
    headers=headers,
    json={

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
}

# Send text message
response = requests.post(
    'https://gateway.maton.ai/whatsapp-business/v21.0/PHONE_NUMBER_ID/messages',
    headers=headers,
    json={

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
}

# Send text message
response = requests.post(
    'https://gateway.maton.ai/whatsapp-business/v21.0/PHONE_NUMBER_ID/messages',
    headers=headers,
    json={

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The template-message examples specify en_US as the language code, and the template creation example later fixes language to en_US as well. Because the documentation does not present this as a user choice or explain that it is merely an example, it can be interpreted as imposing a specific language/locale by default.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This example sets the template language field to en_US and does not mention that other locales may be selected. Under the language/locale policy, documentation should avoid appearing to force a single locale unless it is optional or justified.

Content

No source excerpt is available for this finding.