T09 · Insecure Skill Coding Practices
- Location
SKILL.md:68- Finding
Unsafe interpolation of user-controlled data into shell-executed SQL commands
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent local family organizer, but it stores sensitive family data through shell-run SQLite commands and broad chat triggers that need careful review before installation.
Review this before installing if the OpenClaw user may receive messages from other people or external chat platforms. Store only family details you are comfortable keeping in a local SQLite database, prefer explicit commands for sensitive actions, avoid untrusted free-form input, and run OpenClaw under a limited account with access scoped to the Family Partner data directory.
SKILL.md:68Unsafe interpolation of user-controlled data into shell-executed SQL commands
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.
# Update the entire skills package
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
ogs --tail 50
#### 问题:查询无结果
```bash
# 检查数据是否存在
sqlite3 ~/.openclaw/family-partner/family.db "SELECT * FROM events LIMIT 5"
# 检查日期格式
sqlite3 ~/.openclaw/family-partner/family.db "SELECT date('now')"
# 验证表结构
sqlite3 ~/.openclaw/family-partner/family.db ".schema"
# 检查定时任务配置
crontab -l | grep openclaw
# 手动测试
openclaw chat --message "早上好"
# 查看详细错误
openclaw chat --message "早上好" --verbose
# 定期清理旧数据(可选)
sqlite3 ~/.openclaw/family-partner/family.db \
"DELETE FROM labor WHERE date < date('now', '-1 year')"
# 优化数据库性能
sqlite3 ~/.openclaw/family-partner/family.db "VACUUM"
sqlite3 ~/.openclaw/family-partner/family.db "ANALYZE"
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
ogs --tail 50
#### 问题:查询无结果
```bash
# 检查数据是否存在
sqlite3 ~/.openclaw/family-partner/family.db "SELECT * FROM events LIMIT 5"
# 检查日期格式
sqlite3 ~/.openclaw/family-partner/family.db "SELECT date('now')"
# 验证表结构
sqlite3 ~/.openclaw/family-partner/family.db ".schema"
# 检查定时任务配置
crontab -l | grep openclaw
# 手动测试
openclaw chat --message "早上好"
# 查看详细错误
openclaw chat --message "早上好" --verbose
# 定期清理旧数据(可选)
sqlite3 ~/.openclaw/family-partner/family.db \
"DELETE FROM labor WHERE date < date('now', '-1 year')"
# 优化数据库性能
sqlite3 ~/.openclaw/family-partner/family.db "VACUUM"
sqlite3 ~/.openclaw/family-partner/family.db "ANALYZE"
The README markets the skill as 'privacy-first' and 'pure local storage,' yet its architecture explicitly includes external messaging platforms and an agent that executes shell commands. This can mislead users about the actual data exposure and execution surface, causing them to grant trust or deploy it in environments where message contents and operational metadata may leave the local host.
Using a broad everyday phrase like 'Good morning' as a trigger can cause accidental invocation of the morning briefing workflow. In an agent context, overly generic triggers increase the risk of unintended data disclosure, since a casual greeting could reveal schedules, tasks, anniversaries, or other sensitive family information.
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.
If not automatically initialized during installation, manually execute:
# Create database directory
mkdir -p ~/.openclaw/family-partner
# Execute initialization script
The examples rely on unconstrained natural-language inputs for creating records, retrieving private memories, updating votes, and modifying challenge progress. Without clearly scoped intents or confirmation requirements, common conversation can be misclassified as commands, leading to unintended writes, data leakage, or state changes affecting family records.
The file is explicitly a Chinese-only README ("README_CN.md") and all user-facing instructions, examples, and operational guidance are presented only in Chinese. Under the policy for natural-language violations, forcing a single language without opt-in or an offered alternative can be a locale-policy issue unless the regional scope is clearly justified.
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.
# 创建数据库目录
mkdir -p ~/.openclaw/family-partner
# 执行初始化脚本
sqlite3 ~/.openclaw/family-partner/family.db < init.sql
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.
# 创建数据库目录
mkdir -p ~/.openclaw/family-partner
# 执行初始化脚本
sqlite3 ~/.openclaw/family-partner/family.db < init.sql
Code scans file system directories looking for sensitive files. This could be reconnaissance for credential theft.
sqlite3 --version
# 检查数据库文件
ls -la ~/.openclaw/family-partner/family.db
# 重新初始化数据库
sqlite3 ~/.openclaw/family-partner/family.db < init.sql
Code scans file system directories looking for sensitive files. This could be reconnaissance for credential theft.
sqlite3 --version
# 检查数据库文件
ls -la ~/.openclaw/family-partner/family.db
# 重新初始化数据库
sqlite3 ~/.openclaw/family-partner/family.db < init.sql
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 -l | grep openclaw
# 手动测试
openclaw chat --message "早上好"
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 -l | grep openclaw
# 手动测试
openclaw chat --message "早上好"
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.
## Overview
Family Partner is a complete family management solution powered by AI. It includes 11 integrated skills that work together to help families organize their daily lives, track important information, and create lasting memories.
## Included Skills
This section encourages storage of highly sensitive family information, including allergies, medical, school, and work details, but does not provide any privacy notice, retention guidance, access warning, or explanation that data is persisted locally in SQLite. Users may disclose sensitive personal data without understanding where it is stored or who with local system access might read it.
The phrase "remember..." is extremely broad and can match normal conversational requests unrelated to this skill, causing accidental writes of personal or sensitive information into local storage. Because this skill stores preferences, allergies, medical, school, and work details, accidental capture increases privacy risk and can create incorrect persistent records.
Using "good morning" as a trigger is overly generic and likely to overlap with ordinary conversation, which can cause unintended invocation of the Family Morning skill. In this skill, unintended activation can expose schedules, tasks, shopping lists, and upcoming family events without the user explicitly intending to access that bundled personal data.
The README's examples are primarily in English, but one assistant response includes Chinese text ("Mom承担较多,建议重新分配部分家务哦~") without explaining language selection. This suggests the skill may emit a specific language without user choice, which can violate language/locale policy expectations.
No suspicious patterns detected.