Back to skill

Security audit

test

Security checks for vulnerabilities and agentic risk

Overview

This Trello skill is purpose-aligned, but it asks users to run full-account Trello API commands that expose powerful credentials in command-line URLs.

Review before installing. Use a dedicated Trello token with the narrowest practical access, avoid running these commands with shell tracing or verbose logging, and revoke the token if it may have been exposed. Pay particular attention before allowing the agent to create, move, comment on, or archive cards.

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
SKILL.md:25
Finding
Trello Credentials Exposed in URL Query Strings<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 25; the same pattern recurs at lines 30, 35, 40, 48, 54, 60, 75, 79, and 83. **Vulnerability Type**: Credentials transmitted through command-line URL query parameters **Risk Level**: High ### Vulnerable Code ```bash curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}' ``` The same insecure credential-placement pattern is used by all documented Trello API commands, including write operations such as creating, moving, commenting on, and archiving cards. ### Technical Analysis The documented commands interpolate `TRELLO_API_KEY` and `TRELLO_TOKEN` directly into URL query strings passed as command-line arguments to `curl`. Once expanded by the shell, the complete URL can be visible through local process inspection while the command is running. Query strings may also be captured by API gateways, reverse proxies, HTTP diagnostics, monitoring platforms, debugging output, or other URL-logging infrastructure. Although HTTPS encrypts the URL in transit, it does not prevent credential disclosure through local process metadata or endpoint-side URL logging. The risk is significant because `SKILL.md` explicitly states that these credentials provide full access to the user's Trello account. ### Attack Path 1. A user configures `TRELLO_API_KEY` and `TRELLO_TOKEN` and executes one of the documented commands. 2. The shell expands both variables into the URL supplied to `curl`. 3. An attacker with access to local process metadata, diagnostic telemetry, proxy records, or URL-bearing service logs captures the expanded request URL. 4. The attacker extracts the API key and token from the `key` and `token` query parameters. 5. The attacker submits independent requests to the Trello REST API using the stolen credentials. 6. The attacker accesses or modifies Trello resources within the permissions granted to the compromised token. ### Impact As ...[truncated 726 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Use a Trello-supported authorization header instead of URL query parameters where the applicable endpoint and authentication mechanism permit it. 2. If query parameters are unavoidable, prevent secrets from appearing directly in ordinary command arguments by using a permission-restricted curl configuration or an equivalent protected credential mechanism. 3. Ensure any credential configuration file is readable only by its owner, for example with permissions equivalent to `0600`, and exclude it from version control. 4. Disable or redact query-string capture in proxies, API gateways, observability systems, shell tracing, and diagnostic tooling. 5. Avoid verbose curl output and never enable shell tracing such as `set -x` while credentials are being expanded. 6. Use the narrowest available token permissions and a dedicated integration identity where Trello supports those controls. 7. Document immediate token revocation and regeneration procedures for suspected exposure. 8. Replace every affected example in `SKILL.md`, including all read and write operations, so users are not directed to repeat the insecure pattern. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (11)

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### List boards
```bash
curl -s "https://api.trello.com/1/members/me/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" | jq '.[] | {name, id}'
```

### List lists in a board
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
### Create a card
```bash
curl -s -X POST "https://api.trello.com/1/cards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
  -d "idList={listId}" \
  -d "name=Card Title" \
  -d "desc=Card description"
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

No suspicious patterns detected.