Back to skill

Security audit

Client Relationship Manager

Security checks for vulnerabilities and agentic risk

Overview

This CRM skill is mostly coherent, but it includes optional recurring automation that can repeatedly send sensitive CRM summaries to external services and gives weak guidance around client credentials.

Review this skill before installing if your CRM data is confidential. Avoid enabling the weekly Telegram cron unless external model processing and Telegram delivery are approved for your client data, and do not place passwords, API keys, or login secrets in the CRM markdown files; use a password manager or approved secret-sharing process instead.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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)

T06 · System Persistence

Error
Location
SKILL.md:225
Finding
Recurring External Disclosure of CRM Data Through a Persistent Scheduled Task<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 225–240 **Vulnerability Type**: Persistent scheduled task with recurring external processing and transmission of sensitive CRM information **Risk Level**: High ### Vulnerable Code ```bash openclaw cron add \ --name "weekly-crm-review" \ --cron "0 9 * * MON" \ --model "anthropic/claude-3-5-haiku-20241022" \ --session isolated \ --message "Read crm/pipeline.md and crm/follow-ups.md. Report: overdue follow-ups, pipeline value by stage, clients not touched in 30+ days, and deals with no movement in 14+ days. Be concise." \ --announce \ --to "[YOUR_TELEGRAM_CHAT_ID]" \ --tz "America/Chicago" ``` ### Technical Analysis The documented command installs a weekly OpenClaw scheduled task that survives the current skill run. On each execution, the task reads `crm/pipeline.md` and `crm/follow-ups.md`, processes their contents using the configured external model, and announces the resulting report to a Telegram destination. These CRM files can contain client identities, deal stages, monetary values, relationship activity, deadlines, and follow-up details. The command therefore establishes a recurring path from locally stored business records to external model-processing and messaging services. Although the automation is presented as optional and the destination is supplied by the user, the documentation does not place a clear disclosure warning beside the command, require per-run confirmation, recommend redaction, or provide instructions to inspect and remove the persistent task. This is also in tension with the privacy statement at `SKILL.md:306`, which emphasizes that CRM data remains local unless the user explicitly asks for it to be sent. Enabling the task constitutes a one-time authorization that can result in repeated future disclosures without additional confirmation. The scheduled task operates with whatever file access and outbound communication capabilities are available t ...[truncated 1836 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Default to a local, non-networked review that does not use `--announce`, `--to`, or an externally hosted model. 2. Place a prominent warning immediately before the command explaining: - Which files will be read - Which external services will process the data - Which information may be sent to Telegram - That the task will execute repeatedly without per-run confirmation 3. Require explicit informed consent before creating the scheduled task. 4. Prefer a one-time review command unless recurring execution is necessary. 5. Redact client names, contact details, interaction notes, and exact financial values before external processing or delivery. 6. Transmit only minimum necessary aggregates, such as counts by stage, where possible. 7. Validate the Telegram destination before scheduling recurring delivery and recommend a private, access-controlled destination. 8. Provide commands to list, inspect, disable, and permanently remove the scheduled task. 9. Recommend a dedicated least-privilege execution context restricted to the minimum required CRM files. 10. Update the privacy section to state clearly that enabling external models or Telegram delivery causes CRM information to leave the local workspace. 11. For users subject to contractual, legal, financial, or healthcare confidentiality requirements, recommend avoiding external processing unless an approved data-processing agreement and retention policy are in place. ]]>
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 (1)

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The onboarding checklist explicitly includes collecting client access credentials, but provides no guidance on secure handling, storage, transmission, or least-privilege practices. In a text-file CRM skill, this can normalize placing secrets in plain markdown or adjacent notes, increasing the risk of credential leakage, reuse exposure, or unauthorized access if the repository, device, or agent context is compromised.

Static analysis

Detected: suspicious.prompt_injection_instructions

Prompt-injection style instruction pattern detected.

Warn
Code
suspicious.prompt_injection_instructions
Location
SKILL.md:144