Back to skill

Security audit

Syberz Chatflow Guardian

Security checks for vulnerabilities and agentic risk

Overview

The skill broadly matches a conversation-monitoring tool, but its install and runtime guidance grant more persistent and sensitive access than is clearly scoped.

Review carefully before installing. Avoid running the /root absolute-path deployment commands unless you can inspect those scripts first, do not install or enable the systemd service by default, prefer a user-level/manual run, and assume local logs may contain private conversation content and recipient identifiers. Regenerate dependencies from a trusted HTTPS registry before production use.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (4)

T06 · System Persistence

Error
Location
scripts/install.sh:232
Finding

System-Wide Persistence Is Created During the Default Installation Flow

Content
View full analysis
"$service_file" << EOF [Unit] Description=OpenClaw Dialog Manager Skill After=network.target [Service] Type=simple User=$USER WorkingDirectory=$(pwd) ExecStart=$(which node) start-dialog-manager.js Restart=on-failure RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target EOF if [ $? -eq 0 ]; then log_success "服务文件已创建: $service_file" log_info "使用以下命令启用服务:" echo " sudo systemctl enable openclaw-dialog-manager.service" echo " sudo systemctl start openclaw-dialog-manager.service" fi else log_info "系统服务目录不存在,跳过服务文件创建" fi } ``` The default installation flow invokes this function without a separate service-installation option: ```bash check_dependencies install_dependencies create_configs register_skill create_startup_script create_service_file ``` The quick-start guide then instructs the user to enable boot persistence: ```bash # 方式2:作为服务启动(需要systemd) sudo systemctl enable openclaw-dialog-manager.service sudo systemctl start openclaw-dialog-manager.service ``` ### Technical Analysis The installer unconditionally calls `create_service_file()`. If it runs with permission to write into `/etc/systemd/system`, it creates a system-wide service definition pointing to the current, potentially mutable project directory. Continuous background execution is related to the declared monitoring function, but a system-wide service is not the minimum privil ...[truncated 1762 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
package-lock.json:23
Finding

Dependency Lockfile Uses a Plaintext Third-Party Package Mirror

Content
View full analysis
/dev/null; then npm install --production elif command -v yarn &> /dev/null; then yarn install --production fi ``` Project documentation also instructs users to run ordinary `npm install`, which may install development dependencies represented by the demonstrated lockfile entries. ### Technical Analysis The lockfile points package downloads to a third-party mirror using unencrypted HTTP. This permits network intermediaries to observe dependency metadata, redirect or block requests, and attempt archive substitution. The committed SHA-512 integrity values materially reduce direct content-substitution risk when npm performs integrity verification correctly. Therefore, the finding is not evidence that the listed packages are malicious. The weakness is the avoidable reliance on a plaintext, noncanonical distribution channel and the assumption that integrity verification will always remain effective. Package provenance is also inconsistent: ```json // package.json "name": "syberz-chatflow-guardian" ``` ```json // package-loc ...[truncated 1176 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
src/platforms.js:61
Finding

Platform Adapters Persist Full Message Bodies and Recipient Targets in Logs

Content
View full analysis
{ this.logger.info('QQBot发送消息', { message, target }); // 这里应该集成实际的QQBot API // 暂时模拟发送 return { success: true, platform: 'qqbot', messageId: `qqbot-${Date.now()}` }; }, ``` Equivalent logging occurs in the WeCom and Slack adapters: ```javascript sendMessage: async (message, target) => { this.logger.info('企业微信发送消息', { message, target }); return { success: true, platform: 'wecom', messageId: `wecom-${Date.now()}` }; }, ``` ```javascript sendMessage: async (message, target) => { this.logger.info('Slack发送消息', { message, target }); return { success: true, platform: 'slack', messageId: `slack-${Date.now()}` }; }, ``` The logger serializes the data and writes it to disk: ```javascript const logEntry = { timestamp, level: level.toUpperCase(), message, data, pid: process.pid }; if (this.logFile) { this.writeToFile(this.logFile, logEntry); } ``` ```javascript writeToFile(filePath, entry) { try { const logLine = JSON.stringify(entry) + '\n'; if (fs.existsSync(filePath)) { const stats = fs.statSync(filePath); const maxSize = this.parseSize(this.config.max_size || '10MB'); if (stats.size > maxSize) { this.rotateLogFile(filePath); } } fs.appendFileSync(filePath, logLine, 'utf8'); } catch (error) { console.error('写入日志文件失败:', error); } } ``` The default configuration enables `info`-level file logging: ```json ...[truncated 2091 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:42
Finding

Primary Skill Instructions Execute Unshipped Absolute-Path Deployment Scripts

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (122)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The reset section includes rm -rf ~/.openclaw/cache/dialog-manager/* and log truncation without prominent warning that cached state and diagnostic history will be irreversibly deleted. In a quickstart, destructive cleanup commands are especially risky because users are encouraged to execute them directly, potentially destroying useful recovery or forensic data.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

rm -rf ~/.openclaw/cache/dialog-manager/* irreversibly deletes all contents of the cache directory, and users may run it blindly because it appears in a reset recipe. In this skill context, the command is somewhat scoped, but it still risks loss of state and normalizes dangerous shell patterns in installation documentation.

Content

Scanner excerpt · QUICKSTART.md (reported line 205)May include surrounding context.

md
pkill -f dialog-manager

# 清除缓存
rm -rf ~/.openclaw/cache/dialog-manager/*

# 清除日志(可选)
echo "" > ~/.openclaw/logs/dialog-manager.log

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

rm -rf ~/.openclaw/cache/dialog-manager/* irreversibly deletes all contents of the cache directory, and users may run it blindly because it appears in a reset recipe. In this skill context, the command is somewhat scoped, but it still risks loss of state and normalizes dangerous shell patterns in installation documentation.

Content

Scanner excerpt · QUICKSTART.md (reported line 205)May include surrounding context.

md
pkill -f dialog-manager

# 清除缓存
rm -rf ~/.openclaw/cache/dialog-manager/*

# 清除日志(可选)
echo "" > ~/.openclaw/logs/dialog-manager.log

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Persistent interaction history, user modeling, pattern analysis, future-intent prediction, and exportable statistics represent behavioral profiling, not merely conversation continuity. In this skill context, concealed profiling is especially dangerous because users may reveal sensitive interpersonal, workplace, or operational information during normal chat.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The screenshot spec advertises broad monitoring, intent recognition, predictive analytics, deep learning, security validation, and multi-platform broadcasting that substantially exceed the skill's stated purpose of preventing conversations from ending on the user's message. This kind of capability inflation is dangerous because it misrepresents the product's behavior, can hide undisclosed data processing expectations, and may induce unsafe trust from users or marketplace reviewers.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: js-yaml==3.14.2 — 4 advisory(ies): CVE-2026-84375 (js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge sources); CVE-2026-59869 (js-yaml: YAML merge-key chains can force quadratic CPU consumption); GHSA-5p4m-2wfm-xmqj (JS-YAML: Quadratic CPU consumption in !!omap resolution (3.x and 4.x) — CVE-2026) +1 more

High
Category
Supply Chain
Confidence
97% confidence
Finding

js-yaml 3.14.2 is present and has multiple denial-of-service style parser advisories involving crafted YAML structures. Although this instance is in a dev dependency chain, vulnerable parsers in the toolchain can still be abused in CI, local development, or any workflow that loads untrusted YAML.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: brace-expansion==1.1.12 — 4 advisory(ies): CVE-2026-13149 (brace-expansion: DoS via exponential-time expansion of consecutive non-expanding); CVE-2026-33750 (brace-expansion: Zero-step sequence causes process hang and memory exhaustion); CVE-2026-14257 (brace-expansion: DoS via unbounded expansion length causing an out-of-memory pro) +1 more

High
Category
Supply Chain
Confidence
96% confidence
Finding

brace-expansion 1.1.12 is present with multiple denial-of-service advisories caused by pathological expansion inputs. Here it is transitively pulled into dev tooling, so the main risk is resource exhaustion in developer or CI processes that evaluate attacker-controlled glob-like patterns.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: browserslist==4.28.1 — 2 advisory(ies): CVE-2026-73088 (Browserslist: Uncaught crash / prototype write via untrusted browserslist-stats.); CVE-2026-73089 (Browserslist: Unbounded memory growth (no cache eviction) via distinct query res)

High
Category
Supply Chain
Confidence
95% confidence
Finding

browserslist 4.28.1 is flagged for crash/prototype write and memory growth issues when given untrusted stats or crafted queries. In this lockfile it is a real vulnerable dependency, but it sits in development tooling, making the most plausible impact build-time denial of service or unsafe config processing rather than runtime compromise of the skill itself.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: js-yaml==4.1.1 — 4 advisory(ies): CVE-2026-84375 (js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge sources); CVE-2026-59869 (js-yaml: YAML merge-key chains can force quadratic CPU consumption); GHSA-5p4m-2wfm-xmqj (JS-YAML: Quadratic CPU consumption in !!omap resolution (3.x and 4.x) — CVE-2026) +1 more

High
Category
Supply Chain
Confidence
97% confidence
Finding

js-yaml 4.1.1 is also present elsewhere in the dependency tree and carries similar parser-based DoS risks. Multiple vulnerable versions increase exposure because different tools may invoke different copies during development or automation.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: lodash==4.17.23 — 2 advisory(ies): CVE-2025-13465 (lodash vulnerable to Prototype Pollution via array path bypass in `_.unset` and ); CVE-2021-23337 (lodash vulnerable to Code Injection via `_.template` imports key names)

High
Category
Supply Chain
Confidence
93% confidence
Finding

lodash 4.17.23 is a real vulnerable dependency with prototype pollution and template/code-injection history. Because lodash is a direct production dependency of this package, the risk is more relevant than the dev-only findings: if the application uses affected APIs on untrusted input, attackers could alter object prototypes or trigger unsafe template execution patterns.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script writes a systemd unit under /etc/systemd/system, enabling system-level persistence for a chat-related skill whose stated purpose does not justify privileged service installation. This creates a durable execution mechanism that could cause the skill to run automatically and expands the blast radius if the skill or its dependencies are compromised.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The code collects training data containing user identifiers, raw messages, predicted intents, context, and timestamps for deep-learning optimization, which exceeds the stated chat-guard purpose. This creates a privacy and data-governance risk because sensitive conversational content can be retained, repurposed, or exposed without a clear necessity or consent boundary.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module's implemented capability substantially exceeds the stated purpose of conversation-state monitoring: it initializes and operates outbound adapters for many external platforms and provides generalized send and broadcast functions. In a skill whose description is narrowly framed, this kind of scope mismatch is dangerous because it creates hidden message-routing functionality that could be used to exfiltrate data or send unsolicited messages across services without being obvious from the manifest.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This module goes far beyond the declared purpose of merely keeping conversations from ending: it persistently records per-user messages, intents, topics, activity hours, urgency patterns, and task patterns, then uses them to build behavioral profiles and predictive analytics. That creates a substantial hidden data-collection and surveillance risk, especially because the skill metadata does not justify long-term profiling or informed user consent for this level of tracking.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

A skill quickstart that presents all instructions in a single language can violate language/locale policy when it effectively forces that language on users without opt-in. This file provides no alternative language option or note that the skill is specifically intended for a Chinese-language audience.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.destructive_delete_command

Documentation contains a destructive delete command without an explicit confirmation gate.

Warn
Code
suspicious.destructive_delete_command
Location
QUICKSTART.md:205