Back to skill

Security audit

Daily Brief

Security checks for vulnerabilities and agentic risk

Overview

This skill clearly describes a daily OpenClaw log summary sent to Telegram, with privacy risks that users should manage before enabling it.

Install only if you are comfortable sending OpenClaw operational summaries to Telegram. Use a restricted chat and bot, avoid logging secrets, add redaction for tokens and private data, and consider validating the generated report before a recurring cron job sends it automatically.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:47
Finding

Indirect Prompt Injection Through Untrusted Operational Logs

Content
View full analysis
&1 | tail -100) EVOLVER_LOG="" LATEST_EVOLVER=$(ls -t /tmp/evolver-*.log 2>/dev/null | head -1) if [ -n "$LATEST_EVOLVER" ]; then EVOLVER_LOG=$(tail -50 "$LATEST_EVOLVER") fi PROMPT="You are the private secretary. Build a concise daily brief with: 1) system status 2) what happened today 3) issues found 4) resolved vs unresolved 5) items requiring executive attention System logs: ${LOGS} Evolution report: ${EVOLVER_LOG}" ``` ### Technical Analysis The documented workflow directly interpolates gateway and evolver log contents into an instruction-bearing prompt. No clear trust boundary, structured encoding, content sanitization, or instruction is provided to require the agent to treat the appended logs strictly as untrusted data. Operational logs can contain attacker-controlled content originating from requests, error messages, agent responses, plugin output, or other runtime inputs. An attacker can therefore place natural-language instructions in a source that is later written to one of the collected logs. When the scheduled brief runs, those instructions become part of the prompt supplied to the `secretary` agent. Because the trusted reporting instructions and untrusted log content occupy the same prompt context, the model may interpret injected log text as instructions rather than evidence to summarize. Merely serializing the final prompt with `jq -Rs` protects JSON syntax but does not mitigate semantic prompt injection. ### Attack Path 1. An attacker identifies an input that is recorded in the `openclaw-gateway` logs or the latest `/tmp/evolver-*.log`. 2. The attacker submits content containing instructions such as asking the secretary to ignore the reporting format, conceal incid ...[truncated 1294 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:47
Finding

Potential Disclosure of Sensitive Log Data to Telegram

Content
View full analysis
&1 | tail -100) EVOLVER_LOG="" LATEST_EVOLVER=$(ls -t /tmp/evolver-*.log 2>/dev/null | head -1) if [ -n "$LATEST_EVOLVER" ]; then EVOLVER_LOG=$(tail -50 "$LATEST_EVOLVER") fi PROMPT="You are the private secretary. Build a concise daily brief with: 1) system status 2) what happened today 3) issues found 4) resolved vs unresolved 5) items requiring executive attention System logs: ${LOGS} Evolution report: ${EVOLVER_LOG}" RESPONSE=$(curl -s -X POST http://127.0.0.1:18789/v1/chat/completions \ -H "Authorization: Bearer ${OPENCLAW_TOKEN}" \ -H "Content-Type: application/json" \ -H "x-openclaw-agent-id: secretary" \ --max-time 180 \ -d "{\"model\":\"openclaw\",\"messages\":[{\"role\":\"user\",\"content\":$(echo "$PROMPT" | jq -Rs .)}]}") RESULT=$(echo "$RESPONSE" | jq -r '.choices[0].message.content // "Secretary unavailable"') curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \ -d chat_id="${CHAT_ID}" \ --data-urlencode text="${RESULT}" ``` ### Technical Analysis The workflow collects raw operational logs and submits them to an agent without first applying secret detection, field minimization, or redaction. It then extracts the generated text and immediately sends it to Telegram without inspecting or validating the output. Gateway and evolver logs may contain credentials, authorization headers, API tokens, request payloads, internal paths, hostnames, user identifiers, error details, or other confidential operational information. Although the agent is expected to summarize the records, no control prevents it from reproducing sensitive values verbatim. The Telegram request uses HTTPS, so this is not a plaintext network-transport issue. The securit ...[truncated 1805 chars]
Remediation
View remediation
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)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly says the skill collects gateway logs, reads evolver logs, summarizes them, and pushes the resulting operational brief to Telegram, but it does not warn users that potentially sensitive operational data will leave the local OpenClaw environment and be sent to a third-party messaging platform. Even if intended for legitimate monitoring, this creates a real privacy and data-exposure risk because logs and agent summaries may contain internal system state, errors, secrets, or other sensitive metadata.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly collects gateway and evolver logs and later sends the resulting brief to Telegram, but the description does not clearly warn users that operational data derived from local logs will leave the host and be transmitted to third-party infrastructure. This creates a material transparency and consent issue because users may deploy it assuming the digest remains local while it may contain sensitive operational details, incident traces, or internal identifiers.

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 73)May include surrounding context.

md
Evolution report:
${EVOLVER_LOG}"

RESPONSE=$(curl -s -X POST http://127.0.0.1:18789/v1/chat/completions \
  -H "Authorization: Bearer ${OPENCLAW_TOKEN}" \
  -H "Content-Type: application/json" \
  -H "x-openclaw-agent-id: secretary" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
98% confidence
Finding

The script sends the generated brief to Telegram, an external third-party service, and the brief is built from recent gateway and evolver logs. If those logs contain secrets, internal URLs, stack traces, customer data, or incident details, the skill can exfiltrate sensitive operational information outside the trusted environment on a recurring schedule.

Content

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

RESULT=$(echo "$RESPONSE" | jq -r '.choices[0].message.content // "Secretary unavailable"')

curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage"
-d chat_id="${CHAT_ID}"
--data-urlencode text="${RESULT}"

text

External Transmission

Medium
Category
Data Exfiltration
Confidence
98% confidence
Finding

The script sends the generated brief to Telegram, an external third-party service, and the brief is built from recent gateway and evolver logs. If those logs contain secrets, internal URLs, stack traces, customer data, or incident details, the skill can exfiltrate sensitive operational information outside the trusted environment on a recurring schedule.

Content

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

RESULT=$(echo "$RESPONSE" | jq -r '.choices[0].message.content // "Secretary unavailable"')

curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage"
-d chat_id="${CHAT_ID}"
--data-urlencode text="${RESULT}"

text

Static analysis

Detected: suspicious.generated_source_template_injection

User-controlled placeholder is embedded directly into generated source code.

Critical
Code
suspicious.generated_source_template_injection
Location
SKILL.md:48