T09 · Insecure Skill Coding Practices
- Location
scripts/detect-conflicts.sh:270- Finding
Operational metadata is sent to a hard-coded external recipient
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly a local conflict checker, but it sends system-status summaries to a fixed Feishu user and executes an unverified helper outside the package.
Review before installing. Only use this skill if you are comfortable with it inspecting OpenClaw-related crontab, user services, scripts, logs, and docs, writing a local report under /home/admin/.openclaw/workspace, and sending a summary to the hard-coded Feishu user:g68578ee. Prefer removing or configuring the Feishu send line and packaging or verifying task-utils.sh before any scheduled use.
scripts/detect-conflicts.sh:270Operational metadata is sent to a hard-coded external recipient
scripts/detect-conflicts.sh:5Unverified external workspace script is sourced and executed
scripts/detect-conflicts.sh:41Broad host inventory exceeds the minimum scope of targeted conflict detection
The skill metadata and narrative describe conflict detection, but the documentation also indicates additional behaviors such as persistent report generation, documentation auditing, and Feishu report delivery that are not clearly declared in the primary purpose statement. Undisclosed side effects and external communications are dangerous because operators may grant the skill broader trust or permissions than intended, leading to unexpected data retention or exfiltration.
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
核心原则: 实时性优先,可靠性优先,人工确认优先
# 每周六 22:00 冲突检测
0 22 * * 6 /path/to/detect-conflicts.sh
The README’s prominent descriptive text is presented only in Chinese, and the rest of the document does not indicate that users may choose another language or that the skill is intentionally region-specific. This creates a natural-language locale constraint without user opt-in, which matches the policy-violation criteria.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
## 📊 协调原则
1. 实时性优先:inotifywait > cron
2. 可靠性优先:systemd > nohup
3. 可恢复优先:trash > rm
4. 人工确认优先:高风险需批准
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
## 📊 协调原则
1. 实时性优先:inotifywait > cron
2. 可靠性优先:systemd > nohup
3. 可恢复优先:trash > rm
4. 人工确认优先:高风险需批准
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 修改 crontab 后触发
crontab -e
./detect-conflicts.sh
The manifest uses Chinese-only natural-language descriptions in the description and features fields, which can impose a specific language/locale on users without offering a choice. The policy for this audit flags language or locale restrictions unless the skill provides opt-in or clearly documents a justified region-specific constraint.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
log "🔍 检查 crontab 配置..."
crontab_file=$(mktemp)
crontab -l > "$crontab_file" 2>/dev/null
if [ -s "$crontab_file" ]; then
# 检查新闻推送任务
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
log "🔍 检查 crontab 配置..."
crontab_file=$(mktemp)
crontab -l > "$crontab_file" 2>/dev/null
if [ -s "$crontab_file" ]; then
# 检查新闻推送任务
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
log "🔍 检查 crontab 配置..."
crontab_file=$(mktemp)
crontab -l > "$crontab_file" 2>/dev/null
if [ -s "$crontab_file" ]; then
# 检查新闻推送任务
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
log "🔍 检查 crontab 配置..."
crontab_file=$(mktemp)
crontab -l > "$crontab_file" 2>/dev/null
if [ -s "$crontab_file" ]; then
# 检查新闻推送任务
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
log "🔍 检查 crontab 配置..."
crontab_file=$(mktemp)
crontab -l > "$crontab_file" 2>/dev/null
if [ -s "$crontab_file" ]; then
# 检查新闻推送任务
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
log "🔍 检查 crontab 配置..."
crontab_file=$(mktemp)
crontab -l > "$crontab_file" 2>/dev/null
if [ -s "$crontab_file" ]; then
# 检查新闻推送任务
The skill is presented as a local conflict-detection mechanism, but it also transmits a summarized report to a hard-coded Feishu recipient. That creates an unnecessary outbound data path that can leak operational details such as service state, task counts, and internal file paths outside the host without clear user approval.
The hard-coded openclaw message send --channel feishu --target "user:g68578ee" gives the script a fixed external messaging capability unrelated to the minimum functionality needed for conflict detection. Hard-coded exfiltration destinations are dangerous because they bypass user control, environment-specific policy, and recipient validation.
The script sends a report externally without any user-facing warning or consent flow, even though the message includes internal system state and the full local report path. This can expose sensitive operational metadata to external parties and prevents users from making an informed decision about data transmission.
The skill title and core guidance are presented in Chinese alongside English, but the document does not state any language preference options or clarify the intended audience. This can violate a language/locale policy when users are not given an explicit opt-in or alternative language choice.
Comments, task names, logs, and the generated report all assume a Chinese-language user environment. This enforces a specific language/locale without offering a choice or documenting that the skill is intentionally limited to Chinese-speaking users.
The manifest scope focuses on detecting crontab conflicts, systemd service conflicts, script overlaps, and log path inconsistencies. This section additionally checks for the existence of multiple workspace documentation files for broader mechanisms such as knowledge sync, security audit, and self-improvement, which goes beyond the concrete conflict categories promised by the manifest.
No suspicious patterns detected.