Back to skill

Security audit

daily-agent

Security checks for vulnerabilities and agentic risk

Overview

This skill is a broad task orchestrator that automatically routes work, stores conversation-derived memory, can run local scripts, and can stage commits without enough user control or scoping.

Review carefully before installing. This skill should only be used in a tightly controlled workspace after disabling automatic memory/profile writes, automatic commits, unbundled script execution, and always-on activation, or after adding explicit user approval and diff review for each persistent change.

Vulnerability Patterns
  • 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
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (5)

T01 · Skill Instruction Hijacking

Error
Location
package.json:4
Finding

Always-On Orchestration Rules Hijack Agent Control Flow

Content
View full analysis
参考自 Superpowers using-superpowers 的 Red Flags 概念。 > > **核心原则**:即使只有 1% 的可能性需要某个技能,也必须加载。 **以下场景是必须加载技能的 Red Flags**: | 信号 | 行动 | |---------|------| | "帮我写个脚本" | 可能涉及编码,加载 coding-framework | | "这个文件怎么报错了" | 涉及**调试**,加载 debugging-and-error-recovery | | "帮我看看这段代码" | 可能涉及代码审查,加载 code-review | | "这个设计合理吗" | 涉及架构分析,加载 architecture-critic | **判断方法**:只要任务涉及任何编码/调试/审查 → 必须加载 `coding-framework` 并在 Step 0 检查 Anthropic 原则。 ``` ```markdown ### 2-Action Rule(v2.10 新增) > 每 2 次查询/浏览操作后,必须将发现写入文件。防止"只看不动手"。 规则 - 每 2 次 view/browser/search 操作后 - 必须将发现写入 findings.md - 然后继续下一步/更新进度 操作计数 - web_search 查询 +1 - web_fetch 页面 +1 - browser snapshot 操作 +1 - read (非规划文件) +1 每 2 次 → 必须写入 findings.md ``` ```markdown ### 规则1:长链任务必须spawn - 长链任务/复杂操作 → 必须使用 `sessions_spawn` - 不允许"长链任务"在主会话执行 - 违反 = 失职 ``` ### Technical Analysis The package metadata declares activation for every user message, while the Skill text claims mandatory control over tool routing, sub-agent creation, Skill loading, and filesystem writes. These directives are not limited to the declared long-task orchestration use case. The “1% rule” is especially unsafe because a weak keyword association is sufficient to load another Skill into the Agent context. Each additional Skill is another instruction and supply-chain boundary. The forced-write and forced-spawn rules also replace context-sensitive least-privilege decisions with unconditional behavior. ### Attack Path 1. A user submits an otherwise ordinary message containing a broad trigger such as “code,” “review,” or “d ...[truncated 990 chars]
Remediation
View remediation

T02 · Agent Memory Poisoning

Error
Location
scripts/profile_observer.py:43
Finding

Conversation-Derived Statements Are Persisted as User Profile State Without Consent or Trust Validation

Content
View full analysis
→ 更新到 memory/user_observations.json → 同时更新 USER.md 中的"个人偏好"部分 定期画像检查: python scripts/profile_observer.py hint → 检查最近7天的对话 → 发现语气/偏好有变化时提示 ``` ```python OBSERVATIONS_FILE = os.path.join( os.path.dirname(os.path.dirname(__file__)), '..', '..', 'memory', 'user_observations.json' ) ``` ```python def add_observation(category, fact, confidence='hint', source_text='', tags=None): """添加新的观察记录""" data = load_observations() # 检查是否已有相同事实 for obs in data['observations']: if obs['fact'] == fact and obs['category'] == category: # 提升置信度 old_conf = CONFIDENCE_LEVELS.get(obs['confidence'], 0.3) new_conf = min(1.0, old_conf + 0.2) obs['confidence'] = max( [k for k, v in CONFIDENCE_LEVELS.items() if v <= new_conf], key=lambda k: CONFIDENCE_LEVELS[k] ) obs['last_seen'] = datetime.now().isoformat() obs['mention_count'] = obs.get('mention_count', 1) + 1 save_observations(data) return {'status': 'updated', 'observation': obs} # 新增观察 obs = { 'category': category, 'fact': fact, 'confidence': confidence, 'confidence_score': CONFIDENCE_LEVELS.get(confidence, 0.5), 'source_text': source_text[:200], 'tags': tags or [], 'created': datetime.now().isoformat(), 'last_seen': datetime.now().isoformat(), 'mention_count': 1, } data['observations'].append(obs) save_observations(data) ...[truncated 2077 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:1205
Finding

Persistent Memory and Conversation-Derived Artifacts Are Automatically Staged for Git Commit

Content
View full analysis
10MB) - 敏感文件(*.key, *.pem) **提交流程**: ```bash # 1. 添加变更文件 git add memory/ skills/ .learnings/ ontology/ docs/ # 2. 检查变更 git diff --cached --stat # 3. 提交 git commit -m "daily: {task_description}" ``` ``` ### Technical Analysis The workflow creates memory, learning, ontology, profile, and task artifacts from conversation content and then requires those directories to be staged and committed. Its sensitive-file exclusion is extension-based and covers only a few cases such as private key files. It does not inspect file contents for credentials, API tokens, personal data, internal paths, customer data, or confidential source material. Git commits are durable: deleting the working-tree file does not remove it from repository history. Although the project does not contain an automatic `git push`, later synchronization of the repository can transmit the committed data to a remote service. ### Attack Path 1. A conversation includes a secret, personal detail, internal error message, sensitive path, or confidential task description. 2. The Skill records that information under `memory/`, `.learnings/`, `ontology/`, `docs/`, or a generated Skill. 3. The completion procedure executes the prescribed `git add` command. 4. The information becomes part of permanent local Git history. 5. A later manual or automated repository push publishes the historical cont ...[truncated 505 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:1399
Finding

Automatic Execution of an Unbundled PowerShell Script Uses Execution-Policy Bypass

Content
View full analysis
借鉴 Claude-Mem 的双层记忆机制——当任务涉及重要知识更新时,自动触发 L1 记忆同步,确保 markdown 记忆和向量记忆的同步。 **触发条件**:任务完成后发现以下任一情况: - 对话中出现了重要的新知识/经验/教训 - 对话中出现了关键决策/结论 - 对话中出现了需要记录的 bug/问题解决方案 - 对话中出现了值得记录的 skill/工具使用经验 - 对话中出现了用户偏好变化/新需求 **执行方法**: ``` 调用 PowerShell 脚本 powershell -ExecutionPolicy Bypass -File "D:\Users\yindb2\AppData\Roaming\mx\openclaw-home\yindb2\.openclaw\workspace\scripts\dual-memory-sync.ps1" -Mode sync-markdown ``` **预期效果**: - 自动将对话中的重要知识同步到 markdown 记忆文件(耗时约 1 分钟左右) - 确保向量记忆和 markdown 记忆的一致性 - 避免"对话中学到了但记忆中找不到"的情况 **注意事项**: - L1 同步是后台操作,不阻塞用户交互 - 同步过程中不影响对话的正常进行 - 同步完成后自动通知(如果有重要更新) ``` ### Technical Analysis The Skill automatically executes a PowerShell script that is not included in the audited package. Its contents, ownership, integrity, and network behavior therefore cannot be verified. The command explicitly uses `-ExecutionPolicy Bypass`, weakening a platform safeguard that may otherwise prevent untrusted script execution. The absolute, user-specific path also makes reviewed behavior dependent on mutable external state. Any process able to replace that script can change the effective payload without modifying the audited Skill package. This resembles an unsafe external execution channel, but remote payload retrieval was not confirmed because no download URL or retrieval command was found. ### Attack Path 1. An attacker or compromised local process gains write access to the referenced `dual-memory-sync.ps1` path. 2. The attacker replaces or modifies the script with arbitrary PowerShell commands. 3. A task produces a decision, lesson, user preference, or other event matching the automatic synchronization triggers. 4. The Skill invokes PowerShell with `ExecutionPolicy Bypass`. 5. The substituted script executes with the same operating-system permissio ...[truncated 516 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/skill_creator.py:38
Finding

Unrestricted Output Directory and Skill Name Permit Arbitrary File Placement

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (35)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description suggests an orchestration skill for complex multi-step tasks, including routing context, sub-agent spawning, system-level orchestration, and wrap-up checks. The supplied code instead implements a narrow parallel read-only tool executor: it parses CLI arguments, validates that requested tools belong to a read-only allowlist, checks path overlap in mixed read/write scenarios, and uses ThreadPoolExecutor to run a mock execute_tool function that only returns metadata rather than calling real tools. This is a materially different primary purpose and capability set from the declared skill. While both involve 'execution' and some form of scheduling, the actual code lacks the core declared behaviors and instead provides a separate utility focused on safe parallelization of read-only tool calls.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明描述的是一个任务编排/代理调度类skill,但给定代码是独立的CLI脚本,用于管理用户观察记忆。其核心功能集中在读取/写入 JSON 文件、添加 observation、更新 mention_count、应用衰减和列出记录。这与“长链任务执行”“spawn子代理”“Hat系统编排”在主要目的和实际能力上均明显不一致。即使两者都可能作为更大系统的一部分,该代码块本身展示的是用户画像持久化能力,这是声明中未体现且性质明显不同的能力,因此应判定为描述与行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says this skill is an orchestration/execution component for complex multi-step tasks, including dispatch, sub-agent spawning, and system coordination. The actual code does none of that. It implements a CLI utility for creating new skill folders and SKILL.md files, plus recording and checking repeated pattern suggestions in a local JSON memory file. This is a materially different primary purpose and introduces undeclared file-creation and suggestion-tracking behavior unrelated to the declared long-chain task executor role.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

Converse-mode trigger phrases include overly broad everyday language such as asking for opinions or analysis. Because Converse mode changes tool-use behavior, broad triggers can be exploited to suppress expected execution paths, alter safeguards, or silently move a request into a persistence-affecting discussion workflow.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs automatic execution of local shell and PowerShell scripts even though its declared role is orchestration. This creates a direct command-execution surface that can modify the host environment, access local resources, or run unsafe logic if the referenced scripts are altered or abused.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill directs automatic external script and shell execution without clear user-facing warning or consent. Hidden execution of local commands is dangerous because users may trigger behavior that changes files, environment state, or data processing beyond their expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

Automatic git add/git commit in a wrap-up routine can persist unintended or sensitive changes without the user's informed approval. This is especially risky in a multi-purpose orchestration skill because users may not expect repository history to be modified as a side effect of task completion.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill automatically extracts and stores user preferences and observations from conversation into persistent profile files. This is dangerous because it creates durable user profiling without clear consent, enabling privacy violations, over-collection, and possible misuse of inferred personal data.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill mandates a background PowerShell memory-sync script without clearly informing the user that conversation-derived data will be processed and persisted. This creates both execution risk and privacy risk, especially because the behavior is framed as automatic post-task maintenance.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The description states that this skill should be automatically invoked for any user message, making it an overly broad interception point with authority to classify tasks, route execution, spawn agents, and perform orchestration. In this context, the danger is amplified because the skill is a central dispatcher: universal activation can cause unnecessary exposure of all conversations to a powerful routing component, increasing the chance of unintended actions, privilege overreach, or misuse of downstream skills.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The file explicitly describes a passive profiling component that extracts user facts from conversations and retains them over time. That capability is unrelated to the stated role of long-chain task orchestration, so it represents unjustified data collection and expansion of scope, increasing privacy and misuse risk.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The code writes conversation-derived observations to a long-term JSON file under memory/user_observations.json. Persisting user facts to disk is a sensitive capability, and in the context of an orchestration skill it is unjustified and dangerous because it enables silent accumulation of personal data across sessions.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The implementation centers on adding, updating, decaying, and listing user observations rather than orchestrating tasks or managing sub-agents. This mismatch between declared purpose and actual behavior is dangerous because it can conceal sensitive data collection inside a trusted skill category where operators may not expect profiling.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill describes read/write behavior and persistent state updates but declares no explicit tool scope or allowed-tools boundary. In a highly capable orchestration skill, missing capability scoping increases the chance of unintended file modification or privilege creep when the skill is invoked by other components.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill is presented as a task scheduler but also includes persistent memory writes, user profiling, git commits, script execution, and skill generation. This scope expansion is dangerous because callers may trust it as an orchestrator while it performs unrelated high-impact state-changing actions across the workspace and user data.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Multiple built-in modes use vague activation criteria, making behavior changes unpredictable. Ambiguous mode switching in a powerful agent can lead to unauthorized writes being skipped or enabled, incorrect routing, or user confusion about whether the system is merely discussing, planning, or executing.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill claims Converse mode forbids any write operations, yet later mandates persisting discussion summaries to memory files. This contradiction can mislead users into believing a conversation is non-persistent while the system still writes sensitive discussion content after mode exit.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs default persistence of discussion topics, points, conclusions, and pending actions into memory files. Storing conversational content by default can expose sensitive user intent, plans, or personal information beyond the immediate session, especially when users believed they were only 'discussing'.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

L1081-L1101 把“禁止引用具体文件路径和行号,只描述行为”定义为铁律并适用于所有 spawn 委派。但同一文件前文多处实际委派/调用说明直接包含绝对路径,例如 L0387、L0569、L0597、L1410,表明文档宣称的委派原则与其自身指导行为不一致。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

该处规定“中文搜索优先”和“英文搜索优先”的固定策略,属于对语言/locale 的默认强制约束。文档没有说明用户可选择其他语言偏好,也未给出特定地区合规性理由,因此构成自然语言层面的语言/区域策略问题。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
79% confidence
Finding

The natural-language description is written as a Chinese-only operational directive and does not indicate any user language choice, opt-in, or locale limitation. This can violate language/locale policy when the skill implicitly constrains behavior to a specific language without user consent or documented regional scope.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The module docstring describes a real 'parallel read-only tool executor' with execution, result aggregation, and timeout handling. However, execute_tool explicitly states it is a simulation and merely returns validation metadata (L158-L177), so the documented behavior materially overstates what the code actually does.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file’s user-facing description and help text are primarily written in Chinese, including the module summary and feature list, without offering a language choice or documenting that the skill is intended only for Chinese-speaking users. This creates a language policy concern because it effectively constrains interaction language without explicit opt-in or justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The docstring states that the component passively extracts user facts from dialogue and stores them, but there is no user-facing warning, consent flow, or privacy disclosure. Silent profiling is risky because users may unknowingly reveal sensitive information that is retained and later reused.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file documents a design for passive retention of user facts with confidence scoring and decay, indicating deliberate profiling logic. In a task-orchestration skill, this is especially concerning because it normalizes background collection and later retrieval of user attributes unrelated to immediate task fulfillment.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.