Dangerous exec
- Finding
- Shell command execution detected (child_process).
Security checks across static analysis, malware telemetry, and agentic risk
LoveClaw’s dating workflow is mostly coherent, but users should review it carefully because it handles sensitive dating data, has an undeclared token fallback, and routes report data through scheduled agent tasks.
Install only if you trust the LoveClaw backend and are comfortable sharing phone numbers, birth details, city, photos, and match reports with it. Check that LOVECLAW_API_TOKEN is set and no unrelated API_TOKEN is present, review the created OpenClaw cron jobs, and be aware that report delivery may expose sensitive data in local logs or agent context.
VirusTotal findings are pending for this skill version.
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
If a workspace already has a generic API_TOKEN for another service and the LoveClaw token is missing, that unrelated secret could be transmitted to LoveClaw’s backend.
The metadata declares LOVECLAW_API_TOKEN, but the code also uses an undeclared generic API_TOKEN and sends it as a Bearer token to the configured LoveClaw API endpoint.
const API_TOKEN = process.env.LOVECLAW_API_TOKEN || process.env.API_TOKEN || ''; ... headers: { 'Authorization': 'Bearer ' + API_TOKEN, ...headers }Remove the API_TOKEN fallback, use only LOVECLAW_API_TOKEN, and fail closed if the declared token is not present.
Users may rely on privacy claims that are stronger than what the included artifact set supports.
The security description says matching logic and full-user data are not present on the skill side, but included files contain matching/report calculation helpers and a helper for a full profiles endpoint.
SKILL.md: “Skill 端代码不包含匹配逻辑,不接触全量用户数据” / scripts/api-client.js: “async function getAllProfiles() { return await request('/api/profiles'); }” / scripts/bazi.js: “function calculateMatchScore(...)”Remove unused broad-access/local-matching helpers from the distributed skill or update the documentation to accurately describe what code and endpoints are included.
Phone numbers, notification targets, match report text, and image URLs may end up in cron logs or agent context instead of only being delivered to the intended user.
The cron task logs phone numbers and serializes report-delivery payloads that include userId, channel, target, imageUrl, and message content into command output for the agent to parse.
console.log(`[报告任务] 本机用户数: ${localUsers.length} (${localUsers.join(', ')})`); ... console.log(`[报告任务] 匹配报告数据:【REPORTS_JSON】${JSON.stringify(payload)}【REPORTS_JSON_END】`);Avoid logging phone numbers and full report payloads; redact identifiers, pass only minimal delivery data, and document any local log/context exposure.
A wrong or poisoned route/target could cause private match reports or photo URLs to be sent to the wrong messaging destination.
Scheduled report delivery depends on parsed command output and local OpenClaw session-route data to decide where sensitive notifications are sent.
cron-config.json: “对数组中每一条 ... 使用 message 工具发送通知 ... channel:使用 item.channel 字段 ... target:使用 item.notificationTarget 字段” / scripts/cloud-cron.js: “const p = path.join(os.homedir(), '.openclaw', 'agents', 'main', 'sessions', 'sessions.json')”
Constrain allowed channels and targets, verify the target belongs to the enrolled user, and avoid using broad local agent session stores unless clearly documented and permissioned.
The skill may continue running scheduled match/report tasks after setup until the user disables push notifications or removes the cron jobs.
The skill can register persistent OpenClaw cron jobs for evening report notifications, which matches the stated push-notification feature but persists beyond a single chat turn.
openclawExec(['cron', 'add', '--name', jobName, '--cron', '0 20 * * *', '--tz', 'Asia/Shanghai', '--message', reportHint, '--announce', '--channel', channel, '--to', toVal])
Before enabling push, confirm the cron jobs that will be created and know how to list/remove LoveClaw cron entries.