Back to skill

Security audit

Organizze

Security checks for vulnerabilities and agentic risk

Overview

This non-official finance API skill is transparent about its purpose, but it can read, change, and delete sensitive financial records without documented confirmation safeguards.

Install only if you are comfortable giving the agent access to your Organizze financial data and the ability to modify or delete records. Prefer session environment variables or a secret manager over storing the token in config, protect any config file with owner-only permissions, rotate the token if it may have been exposed, and manually approve every create, update, or delete action after checking the resource IDs and amounts.

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:59
Finding
Plaintext Storage of Long-Lived API Credentials## Vulnerability Details **File Location**: `SKILL.md`, lines 59–72 **Vulnerability Type**: Plaintext sensitive credential storage **Risk Level**: Medium ### Vulnerable Code ```markdown Or configure in `~/.openclaw/openclaw.json`: ```json { "skills": { "entries": { "organizze": { "enabled": true, "env": { "ORGANIZZE_EMAIL": "seu_email@exemplo.com", "ORGANIZZE_API_TOKEN": "seu_token_aqui", "ORGANIZZE_USER_AGENT": "Nome Completo (seu_email@exemplo.com)" } } } } } ``` ``` ### Technical Analysis The setup documentation recommends storing the Organizze account email and a long-lived API token directly in a plaintext JSON configuration file. It does not require owner-only file permissions, encryption at rest, an operating-system credential store, or another secret-management mechanism. This creates a mismatch with the skill's stated credential-protection rules. Environment-variable references prevent credentials from being embedded in generated shell commands, but they do not protect credentials when their source is an unprotected plaintext file. Local users, compromised processes, backup systems, synchronization software, or accidentally shared diagnostic archives may be able to read the configuration. The token is subsequently used as the password in HTTP Basic authentication for API operations. Therefore, disclosure of both configured values can allow an attacker to authenticate independently of the skill. ### Attack Path 1. A user follows the documented setup procedure and places the Organizze email and API token in `~/.openclaw/openclaw.json`. 2. The file is created with permissive permissions, copied into an insecure backup, synchronized to another system, included in a support archive, or read after a local account/process compromise. 3. An attacker extracts `ORGANIZZE_EMAIL` and `ORGANIZZE_API_TOKEN` from the plaintext JSON. 4. The attacker uses those credentials with HTTP ...[truncated 740 chars]
Remediation
## Remediation Suggestions 1. Remove the recommendation to store the API token directly in a general-purpose plaintext JSON configuration file. 2. Prefer an operating-system keychain, encrypted credential manager, or secret-management integration supported by the runtime. 3. If file-based secret injection is unavoidable: - Store secrets in a dedicated file outside the project and synchronization directories. - Restrict the file and its parent directory to the owning user. - On POSIX systems, document owner-only permissions such as `chmod 600` for the secret file. - Ensure the file is excluded from version control, backups, logs, diagnostics, and support bundles where appropriate. 4. Keep configuration files limited to references identifying where secrets should be loaded, rather than containing the secret values themselves. 5. Document immediate token revocation and rotation procedures for suspected disclosure. 6. Use the narrowest API authorization available and periodically rotate long-lived tokens. 7. Preserve the existing HTTPS-only endpoint restriction and continue preventing credentials from being printed, logged, or included in model-visible output.
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 (5)

External Transmission

Medium
Category
Data Exfiltration
Content
---
name: organizze
description: Manage finances via the Organizze API — bank accounts, credit cards, invoices, transactions, transfers, categories, and budgets. THIS SKILL IS NON-OFICIAL AND YOUR USAGE IS BY YOUR RISK.
homepage: https://api.organizze.com.br/rest/v2
metadata:
  { "openclaw": { "emoji": "💰", "requires": { "env": ["ORGANIZZE_EMAIL", "ORGANIZZE_API_TOKEN", "ORGANIZZE_USER_AGENT"] }, "primaryEnv": "ORGANIZZE_API_TOKEN" } }
enabled: true
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
---
name: organizze
description: Manage finances via the Organizze API — bank accounts, credit cards, invoices, transactions, transfers, categories, and budgets. THIS SKILL IS NON-OFICIAL AND YOUR USAGE IS BY YOUR RISK.
homepage: https://api.organizze.com.br/rest/v2
metadata:
  { "openclaw": { "emoji": "💰", "requires": { "env": ["ORGANIZZE_EMAIL", "ORGANIZZE_API_TOKEN", "ORGANIZZE_USER_AGENT"] }, "primaryEnv": "ORGANIZZE_API_TOKEN" } }
enabled: true
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
### Detalhar usuário

```bash
curl -s "$BASE_URL/users/{user_id}" \
  -u "$ORGANIZZE_EMAIL:$ORGANIZZE_API_TOKEN" \
  -H "User-Agent: $USER_AGENT" \
  -H "Content-Type: application/json; charset=utf-8"
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill exposes destructive financial operations such as deleting accounts, categories, cards, transactions, and transfers, but it does not require an explicit confirmation step before execution. In a finance-management context, accidental or prompt-injected invocation could cause irreversible data loss, balance corruption, or unintended financial record changes.

Natural-Language Policy Violations

Low
Confidence
74% confidence
Finding
The document mixes English headings with Portuguese setup values, endpoint usage labels, and example content oriented to Portuguese-speaking users, but it does not state that the skill is region-specific or offer the user a language/locale choice. Under the policy, locale constraints should be documented and justified or made opt-in.

Static analysis

No suspicious patterns detected.