T03 · Remote Payload Retrieval and Execution
- Location
scripts/es_search.py:104- Finding
Unverified Remote Executable Download and Execution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent local search and note-taking purpose, but it under-discloses file-content reading, persistent storage, scheduler setup, and an unverified executable download.
Install only if you are comfortable with a local agent searching files, potentially reading matched file contents when workflows are used, and storing summaries plus source paths persistently. Require confirmation before any file-content ingestion, scheduled task setup, or Everything CLI download, and prefer a manually installed, verified es.exe. Review and restrict the data directory and recovery backups if stored knowledge may be sensitive.
scripts/es_search.py:104Unverified Remote Executable Download and Execution
references/workflow.md:58Recurring Automation Guidance Can Establish Cross-Session Persistence
references/workflow.md:5Workflow Directs File-Content Access Beyond the Declared Metadata-Only Scope
scripts/breadcrumb.py:78Private Knowledge Data Is Duplicated into Reversibly Encoded Executable Backups
The skill claims to implement Everything search, breadcrumb management, and Ebbinghaus scheduling, but the analyzed behavior suggests only partial consumption of existing data and missing core features. This mismatch undermines trust boundaries and can conceal the real operational surface, making it harder to review whether the skill's actual actions are safe.
The skill claims to implement Everything search, breadcrumb management, and Ebbinghaus scheduling, but the analyzed behavior suggests only partial consumption of existing data and missing core features. This mismatch undermines trust boundaries and can conceal the real operational surface, making it harder to review whether the skill's actual actions are safe.
The skill claims to implement Everything search, breadcrumb management, and Ebbinghaus scheduling, but the analyzed behavior suggests only partial consumption of existing data and missing core features. This mismatch undermines trust boundaries and can conceal the real operational surface, making it harder to review whether the skill's actual actions are safe.
Referenced artifact was not completely inspected
> 📚 **渐进式加载**:本技能采用渐进式 MD 体系,`SKILL.md` 为入口(≤230行),详细内容拆分到 `references/*.md` 按需加载。
The code supports an '-exit' capability that locates the Everything process, sends WM_CLOSE, and waits for the process to terminate. In an agent skill marketed for search, process-termination functionality is unnecessary and dangerous because it can be abused to disrupt indexing/search availability or terminate a user service without clear consent.
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
��用 `topology_donut.py generate` 重新分析面包屑关联
2. 新关联发现时向用户报告更新摘要
3. 配合 `daily-review-expand` 在复习时自动利用拓扑扩展
---
## 跨平台调度指南
脚本本身是平台无关的纯 Python CLI,可由任意调度器触发:
| 平台 | 实现方式 | 命令示例 |
|------|---------|---------|
| **Linux/macOS cron** | `crontab -e` 添加定时任务 | `0 2 * * * python3 ~/.workbuddy/skills/everything-search-breadmemory/scripts/topology_donut.py generate` |
| **Windows 任务计划** | `schtasks` 命令行或 GUI | `schtasks /create /tn "拓扑甜甜圈更新" /tr "python topology_donut.py generate" /sc daily /st 02:00` |
| **macOS Launchd** | 创建 `.plist` 到 `~/Library/LaunchAgents/` | 配置 StartCalendarInterval 和 ProgramArguments |
| **WorkBuddy** | `automation_update` 工具 | prompt: "调用 topology_donut.py generate" |
| **Claude Code** | `.claude/settings.json` hooks | 同 cron 语法 |
|
The skill metadata does not declare tool scope or allowed tools, yet the described behavior and static analysis indicate capabilities for shell execution, file read/write, and network access. This creates a permission-transparency gap: an agent or user cannot accurately assess what the skill may do, increasing the risk of unintended execution, file changes, or downloads.
The documentation reportedly contradicts itself about whether the skill reads file contents. Ambiguity around data access is security-relevant because users may believe only filenames/paths are processed, while the implementation might parse or ingest file content, exposing sensitive local information.
The skill states that on first use it may automatically download and place es.exe into the skill directory, but the warning is not sufficiently clear in the description. Automatically retrieving and installing an executable is risky because it changes the environment and introduces supply-chain exposure, particularly if users did not knowingly approve network and file-write actions.
The manifest description is entirely in Chinese and presents the skill as generally applicable ("Agent通用") without indicating that use of Chinese is optional or region-specific. This creates a natural-language locale constraint that may violate organizational language-choice policy because no user opt-in or justification is provided.
Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.
int es_hide_empty_search_results = 0;
int es_save = 0;
HWND es_everything_hwnd = 0;
DWORD es_timeout = 0;
int es_get_result_count = 0; // 1 = show result count only
int es_get_total_size = 0; // 1 = calculate total result size, only display this total size and exit.
int es_no_result_error = 0; // 1 = set errorlevel if no results found.
Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.
int es_hide_empty_search_results = 0;
int es_save = 0;
HWND es_everything_hwnd = 0;
DWORD es_timeout = 0;
int es_get_result_count = 0; // 1 = show result count only
int es_get_total_size = 0; // 1 = calculate total result size, only display this total size and exit.
int es_no_result_error = 0; // 1 = set errorlevel if no results found.
This CLI is described as a local file-search interface, but it also exposes state-changing administrative controls over the Everything service, such as reindexing and saving the database. That expands the effective privilege and behavior surface beyond user expectations, enabling misuse or unintended operational changes if this binary is invoked by a higher-level agent or automation without strict command restrictions.
The '-clear-settings' path directly deletes the es.ini file with DeleteFileA and immediately exits, without confirmation, backup, or clear warning at execution time. In an agent or scripted context, this can silently wipe user configuration and produce destructive side effects disproportionate to a search task.
The document presents the skill behavior rules entirely in Chinese and frames them as mandatory instructions for agent use, without offering any language choice or stating that Chinese is required for a region-specific reason. This can violate language/locale policy when users have not opted into that language.
The workflow explicitly instructs the agent to read local files, extract content, and persist derived knowledge into a breadcrumb store, but it does not require any explicit user warning or confirmation before modifying persistent storage. In an agent context, this creates a real transparency and consent problem because users may trigger a search task without realizing it will also perform ingestion and long-term retention of file-derived data.
The scheduled task documentation describes recurring automated searches, file reads, knowledge extraction, and database updates without disclosing that this will continuously process local files and write derived content to persistent storage. In a long-running agent deployment, that lack of disclosure can lead to unexpected collection and retention of sensitive local information over time.
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.
| 平台 | 实现方式 | 命令示例 |
|------|---------|---------|
| **Linux/macOS cron** | `crontab -e` 添加定时任务 | `0 2 * * * python3 ~/.workbuddy/skills/everything-search-breadmemory/scripts/topology_donut.py generate` |
| **Windows 任务计划** | `schtasks` 命令行或 GUI | `schtasks /create /tn "拓扑甜甜圈更新" /tr "python topology_donut.py generate" /sc daily /st 02:00` |
| **macOS Launchd** | 创建 `.plist` 到 `~/Library/LaunchAgents/` | 配置 StartCalendarInterval 和 ProgramArguments |
| **WorkBuddy** | `automation_update` 工具 | prompt: "调用 topology_donut.py generate" |
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.
|------|---------|---------|
| **Linux/macOS cron** | `crontab -e` 添加定时任务 | `0 2 * * * python3 ~/.workbuddy/skills/everything-search-breadmemory/scripts/topology_donut.py generate` |
| **Windows 任务计划** | `schtasks` 命令行或 GUI | `schtasks /create /tn "拓扑甜甜圈更新" /tr "python topology_donut.py generate" /sc daily /st 02:00` |
| **macOS Launchd** | 创建 `.plist` 到 `~/Library/LaunchAgents/` | 配置 StartCalendarInterval 和 ProgramArguments |
| **WorkBuddy** | `automation_update` 工具 | prompt: "调用 topology_donut.py generate" |
| **Claude Code** | `.claude/settings.json` hooks | 同 cron 语法 |
| **GitHub Actions** | `.github/workflows/` YAML | `on: schedule: - cron: '0 2 * * *'` |
This code file contains user-facing natural-language descriptions entirely in Chinese, including the module docstring and later CLI help text, which establishes a fixed language experience. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified.
The top-level documentation states that breadcrumb data is stored at ~/.everything_search/breadcrumb.json. However, the implementation sets DATA_DIR to a skill-specific .standardization directory and BREADCRUMB_FILE under that path, so the documented storage location contradicts actual behavior.
The script generates executable .py and .bat recovery files during normal data writes, which expands the skill from passive knowledge storage into code generation and execution enablement. Because backup contents include user-controlled entry data serialized into restorable scripts, this increases the attack surface and may cause users to execute locally generated code they did not expect from a note-taking feature.
Writing Windows .bat launchers as part of routine updates creates executable artifacts in the data directory, which is unnecessary for core breadcrumb storage and encourages click-to-run restoration. In a skill whose stated purpose is local search and knowledge management, automatic creation of runnable shell files is contextually suspicious because it conditions users to trust and execute generated files.
The argparse descriptions, subcommand help, and argument help strings are all user-facing text and are written only in Chinese. Because the skill does not offer a language selection or state a justified region-specific constraint, this creates a language-policy issue.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
def get_review_records():
"""从 breadcrumb.py 获取复习记录"""
result = subprocess.run(
[sys.executable, BREADCRUMB_PY, "review-records"],
capture_output=True, text=True, encoding="utf-8", errors="replace"
)