Back to skill

Security audit

Shopify/WooCommerce Marketing Partner: Attribuly AllyClaw

Security checks for vulnerabilities and agentic risk

Overview

This looks like a legitimate Attribuly marketing analytics skill, but its setup guidance can expose a sensitive API key and its automatic analysis triggers need clearer user control.

Before installing, use a secret manager or masked OpenClaw secret facility if available. Avoid putting real keys in shell history, .bashrc/.zshrc, Compose files, screenshots, or support logs, and rotate the key if it may have been exposed. Confirm that automatic daily, weekly, and threshold-triggered analyses are opt-in and scoped to the intended workspace/account.

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
README.md:149
Finding

API Key Exposed Through Command Arguments, Plaintext Configuration, and Diagnostic Output

Content
View full analysis
> ~/.bashrc source ~/.bashrc ``` ```bash echo 'export ATTRIBULY_API_KEY="att_your_actual_key"' >> ~/.zshrc source ~/.zshrc ``` It also embeds the key directly in Docker configuration or process arguments: ```yaml services: openclaw: image: openclaw/openclaw:latest environment: - ATTRIBULY_API_KEY=att_your_actual_key ``` ```bash docker run -e ATTRIBULY_API_KEY=att_your_actual_key openclaw/openclaw:latest ``` The verification and troubleshooting instructions explicitly print or inspect the stored secret: ```bash openclaw config get skills.entries.attribuly-dtc-analyst.env.ATTRIBULY_API_KEY ``` ```bash cat ~/.openclaw/openclaw.json | grep -A 5 "attribuly-dtc-analyst" ``` Equivalent instructions are duplicated in the Japanese and Simplified Chinese README files at the locations listed above. ### Technical Analysis The documented setup procedures expose a long-lived authentication credential through several observable or insufficiently protected channels: 1. Passing the API key directly as a command argument can preserve it in shell history. Depending on the operating system and process-isolation settings, process arguments may also be observable by other local processes while the command runs. 2. Writing the key into `.bashrc` or `.zshrc` stores it as plaintext in a general-purpose startup file. The documentation does n ...[truncated 2934 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
Findings (122)

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

Scanner excerpt · README.ja.md (reported line 142)May include surrounding context.

uly-dtc-analyst.env.ATTRIBULY_API_KEY

text

预期输出:`att_your_actual_key`

### 方法 2:环境变量(用于本地/手动设置)

对于本地开发或手动设置,您可以直接设置环境变量。

#### 临时设置(仅当前会话)

```bash
export ATTRIBULY_API_KEY="att_your_actual_key"

永久设置(Ubuntu/Debian)

添加到您的 shell 配置文件:

bash
echo 'export ATTRIBULY_API_KEY="att_your_actual_key"' >> ~/.bashrc
source ~/.bashrc

或者对于 zsh:

bash
echo 'export ATTRIBULY_API_KEY="att_your_actual_key"' >> ~/.zshrc
source ~/.zshrc

注意: 对于 systemd 服务或 Docker 容器,您需要在服务配置或 Dockerfile 中设置环境变量。

方法 3:Docker 部署

如果在 Docker 中运行 OpenClaw,请在配置中设置环境变量:

使用 docker-compose.yml

yaml
services:
  openclaw:
    image: openclaw/openclaw:latest
    environment:
      - ATTRIBULY_API_KEY=att_your_actual_key
    # ..

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

Scanner excerpt · README.md (reported line 187)May include surrounding context.

uly-dtc-analyst.env.ATTRIBULY_API_KEY

text

预期输出:`att_your_actual_key`

### 方法 2:环境变量(用于本地/手动设置)

对于本地开发或手动设置,您可以直接设置环境变量。

#### 临时设置(仅当前会话)

```bash
export ATTRIBULY_API_KEY="att_your_actual_key"

永久设置(Ubuntu/Debian)

添加到您的 shell 配置文件:

bash
echo 'export ATTRIBULY_API_KEY="att_your_actual_key"' >> ~/.bashrc
source ~/.bashrc

或者对于 zsh:

bash
echo 'export ATTRIBULY_API_KEY="att_your_actual_key"' >> ~/.zshrc
source ~/.zshrc

注意: 对于 systemd 服务或 Docker 容器,您需要在服务配置或 Dockerfile 中设置环境变量。

方法 3:Docker 部署

如果在 Docker 中运行 OpenClaw,请在配置中设置环境变量:

使用 docker-compose.yml

yaml
services:
  openclaw:
    image: openclaw/openclaw:latest
    environment:
      - ATTRIBULY_API_KEY=att_your_actual_key
    # ..

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

Scanner excerpt · README.zh-CN.md (reported line 142)May include surrounding context.

uly-dtc-analyst.env.ATTRIBULY_API_KEY

text

预期输出:`att_your_actual_key`

### 方法 2:环境变量(用于本地/手动设置)

对于本地开发或手动设置,您可以直接设置环境变量。

#### 临时设置(仅当前会话)

```bash
export ATTRIBULY_API_KEY="att_your_actual_key"

永久设置(Ubuntu/Debian)

添加到您的 shell 配置文件:

bash
echo 'export ATTRIBULY_API_KEY="att_your_actual_key"' >> ~/.bashrc
source ~/.bashrc

或者对于 zsh:

bash
echo 'export ATTRIBULY_API_KEY="att_your_actual_key"' >> ~/.zshrc
source ~/.zshrc

注意: 对于 systemd 服务或 Docker 容器,您需要在服务配置或 Dockerfile 中设置环境变量。

方法 3:Docker 部署

如果在 Docker 中运行 OpenClaw,请在配置中设置环境变量:

使用 docker-compose.yml

yaml
services:
  openclaw:
    image: openclaw/openclaw:latest
    environment:
      - ATTRIBULY_API_KEY=att_your_actual_key
    # ..

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- **Reference:** [references/funnel-analysis.md](references/funnel-analysis.md)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README tells users to retrieve and print the full API key value for verification. This increases the chance of credential exposure via terminal history, screen sharing, logs, shell capture tools, or copied troubleshooting output.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README recommends storing the API key in shell startup files and Docker configuration without warning that these locations may persist secrets in plaintext. That can expose credentials to local users, backups, repo mistakes, process inspection, or config leakage in shared environments.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The README instructs users to run a container image using the mutable tag openclaw/openclaw:latest. Using :latest can pull different code over time, weakening reproducibility and increasing supply-chain risk if the upstream image changes or is compromised.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

The README instructs users to send an API key in a header to an external service via curl. Although this is expected for a SaaS integration, it still causes credential-bearing outbound transmission and can expose secrets through shell history, process inspection, copied commands, logs, or use against the wrong endpoint if the docs are imitated blindly.

Content

Scanner excerpt · README.md (reported line 230)May include surrounding context.

md
[ -n "$ATTRIBULY_API_KEY" ] && echo "API key is set" || echo "API key is missing"

# Test the API key with a simple API call
curl -X POST "https://data.api.attribuly.com/v2-4-2/api/all-attribution/get-list-sum" \
  -H "ApiKey: $ATTRIBULY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"start_date": "2025-01-01", "end_date": "2025-01-07", "dimensions": ["channel"], "model": "linear", "goal": "purchase"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

The README instructs users to send an API key in a header to an external service via curl. Although this is expected for a SaaS integration, it still causes credential-bearing outbound transmission and can expose secrets through shell history, process inspection, copied commands, logs, or use against the wrong endpoint if the docs are imitated blindly.

Content

Scanner excerpt · README.md (reported line 230)May include surrounding context.

md
[ -n "$ATTRIBULY_API_KEY" ] && echo "API key is set" || echo "API key is missing"

# Test the API key with a simple API call
curl -X POST "https://data.api.attribuly.com/v2-4-2/api/all-attribution/get-list-sum" \
  -H "ApiKey: $ATTRIBULY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"start_date": "2025-01-01", "end_date": "2025-01-07", "dimensions": ["channel"], "model": "linear", "goal": "purchase"}'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README instructs users to retrieve, set, and verify an API key, including commands that can display the secret back to the terminal or place it in shell startup files. In a skill-installation context, this increases the chance of accidental credential exposure through shell history, screen sharing, logs, or plaintext config files, especially for less technical users following copy-paste setup steps.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

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 · README.ja.md (reported line 185)May include surrounding context.

md
[ -n "$ATTRIBULY_API_KEY" ] && echo "API key is set" || echo "API key is missing"

# 使用简单的 API 调用测试 API 密钥
curl -X POST "https://data.api.attribuly.com/v2-4-2/api/all-attribution/get-list-sum" \
  -H "ApiKey: $ATTRIBULY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"start_date": "2025-01-01", "end_date": "2025-01-07", "dimensions": ["channel"], "model": "linear", "goal": "purchase"}'

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 · README.zh-CN.md (reported line 185)May include surrounding context.

md
[ -n "$ATTRIBULY_API_KEY" ] && echo "API key is set" || echo "API key is missing"

# 使用简单的 API 调用测试 API 密钥
curl -X POST "https://data.api.attribuly.com/v2-4-2/api/all-attribution/get-list-sum" \
  -H "ApiKey: $ATTRIBULY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"start_date": "2025-01-01", "end_date": "2025-01-07", "dimensions": ["channel"], "model": "linear", "goal": "purchase"}'

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill defines broad automatic triggers such as time-based execution and metric-threshold activation without clear scoping, opt-in requirements, or exclusions. In a marketing skill that can chain into multiple analyses and potentially drive operational recommendations, this can cause unintended autonomous behavior, excessive data access, or repeated actions based on ambiguous conditions.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% 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 · README.md (reported line 355)May include surrounding context.

md
| `page_size` | `100`         | Max records per page                                           |

**Base URL:** `https://data.api.attribuly.com`
**Authentication:** `ApiKey` header (Read from `ATTRIBULY_API_KEY` Environment Variable / Secret Manager. NEVER ask the user for this in chat.)

***

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% 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 218)May include surrounding context.

md
| `page_size` | `100`         | Max records per page                                           |

**Base URL:** `https://data.api.attribuly.com`
**Authentication:** `ApiKey` header (Read from `ATTRIBULY_API_KEY` Environment Variable / Secret Manager. NEVER ask the user for this in chat.)

***

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/attribution-discrepancy.md (reported line 10)May include surrounding context.

md
## Skill Metadata

| Field           | Value                                                                                                                                                                      |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Skill ID**    | `attribution_discrepancy`                                                                                                                                                  |
| **Name**        | AllyClaw Attribution Discrepancy Analysis                                                                                                                                  |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/attribution-discrepancy.md (reported line 15)May include surrounding context.

md
## Skill Metadata

| Field           | Value                                                                                                                                                                      |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Skill ID**    | `attribution_discrepancy`                                                                                                                                                  |
| **Name**        | AllyClaw Attribution Discrepancy Analysis                                                                                                                                  |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/attribution-discrepancy.md (reported line 12)May include surrounding context.

md
| Field           | Value                                                                                                                                                                      |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Skill ID**    | `attribution_discrepancy`                                                                                                                                                  |
| **Name**        | AllyClaw Attribution Discrepancy Analysis                                                                                                                                  |
| **Description** | Identifies and diagnoses reporting discrepancies between ad platform metrics (Meta/Google), Attribuly's unified attribution, and backend store data (Shopify/WooCommerce). |
| **Version**     | 1.0.0                                                                                                                                                                      |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/attribution-discrepancy.md (reported line 13)May include surrounding context.

md
| Field           | Value                                                                                                                                                                      |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Skill ID**    | `attribution_discrepancy`                                                                                                                                                  |
| **Name**        | AllyClaw Attribution Discrepancy Analysis                                                                                                                                  |
| **Description** | Identifies and diagnoses reporting discrepancies between ad platform metrics (Meta/Google), Attribuly's unified attribution, and backend store data (Shopify/WooCommerce). |
| **Version**     | 1.0.0                                                                                                                                                                      |
| **Category**    | Diagnostic Skills                                                                                                                                                          |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · references/attribution-discrepancy.md (reported line 16)May include surrounding context.

md
| **Name**        | AllyClaw Attribution Discrepancy Analysis                                                                                                                                  |
| **Description** | Identifies and diagnoses reporting discrepancies between ad platform metrics (Meta/Google), Attribuly's unified attribution, and backend store data (Shopify/WooCommerce). |
| **Version**     | 1.0.0                                                                                                                                                                      |
| **Category**    | Diagnostic Skills                                                                                                                                                          |
| **Trigger**     | On-demand / Auto (when platform vs backend gap > 20%)                                                                                                                      |

***

Static analysis

No suspicious patterns detected.