T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:29- Finding
Installation Instructions Execute Mutable Remote Scripts Directly
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a real session-sync utility, but it has broad local access and risky install/dashboard behavior that users should review before installing.
Install only if you are comfortable letting this skill read, copy, archive, and write AI-agent conversation histories across your local agent stores. Avoid the one-line remote installers unless you fully trust the publisher and current GitHub branch; prefer a pinned, reviewed package or offline install. Do not run the dashboard while browsing untrusted sites, and back up affected agent data before using restore, prune, doctor, or cross-agent write commands.
SKILL.md:29Installation Instructions Execute Mutable Remote Scripts Directly
install.sh:18Installers Deploy an Unverified Archive from a Mutable Branch
install.ps1:124PowerShell Installer Executes Unverified Python Bootstrap Code and Installs Unpinned Packages
agentsync/webui/__init__.py:374Unauthenticated Local Dashboard Exposes Session Data and State-Changing Operations
The shell pipeline | bash is particularly risky because it chains untrusted network content directly into a command interpreter with no validation checkpoint. In the context of a skill intended for use by other agents that can execute commands, this becomes more dangerous: the README is effectively encouraging autonomous agents to perform remote-code execution as part of installation.
Linux / macOS / WSL:
帮我安装 agent-session-sync:curl -fsSL https://raw.githubusercontent.com/Chendestiny/agent-session-sync/main/install.sh | bash
WSL/Linux 只发现该系统内装的 agent,Windows 侧的请在 Windows 上跑。
The explicit | bash pattern is a classic command-chaining anti-pattern because it removes the opportunity to inspect fetched content before execution. Given this skill also registers commands globally and bridges into many agents' skill directories, successful abuse could establish persistence or tamper with multiple agent environments at once.
Linux / macOS / WSL:
curl -fsSL https://raw.githubusercontent.com/Chendestiny/agent-session-sync/main/install.sh | bash
The installer drops the toolkit at ~/.agents/skills/session-sync, registers global commands (session-sync, alias ass), and bridges the skill into each detected agent's own skills dir — single source, upgrade once.
The documentation presents the tool as a session sync/archive helper, but it actually supports bidirectional multi-target writes, a local web server, destructive prune operations, backup/restore, metadata mutation, and diagnostic operations. In a security review context, this breadth materially increases the attack surface and the likelihood that users will authorize a much more powerful skill than they intended.
The documentation presents the tool as a session sync/archive helper, but it actually supports bidirectional multi-target writes, a local web server, destructive prune operations, backup/restore, metadata mutation, and diagnostic operations. In a security review context, this breadth materially increases the attack surface and the likelihood that users will authorize a much more powerful skill than they intended.
The documentation presents the tool as a session sync/archive helper, but it actually supports bidirectional multi-target writes, a local web server, destructive prune operations, backup/restore, metadata mutation, and diagnostic operations. In a security review context, this breadth materially increases the attack surface and the likelihood that users will authorize a much more powerful skill than they intended.
The documentation presents the tool as a session sync/archive helper, but it actually supports bidirectional multi-target writes, a local web server, destructive prune operations, backup/restore, metadata mutation, and diagnostic operations. In a security review context, this breadth materially increases the attack surface and the likelihood that users will authorize a much more powerful skill than they intended.
The documentation presents the tool as a session sync/archive helper, but it actually supports bidirectional multi-target writes, a local web server, destructive prune operations, backup/restore, metadata mutation, and diagnostic operations. In a security review context, this breadth materially increases the attack surface and the likelihood that users will authorize a much more powerful skill than they intended.
The documentation presents the tool as a session sync/archive helper, but it actually supports bidirectional multi-target writes, a local web server, destructive prune operations, backup/restore, metadata mutation, and diagnostic operations. In a security review context, this breadth materially increases the attack surface and the likelihood that users will authorize a much more powerful skill than they intended.
The documentation presents the tool as a session sync/archive helper, but it actually supports bidirectional multi-target writes, a local web server, destructive prune operations, backup/restore, metadata mutation, and diagnostic operations. In a security review context, this breadth materially increases the attack surface and the likelihood that users will authorize a much more powerful skill than they intended.
The documentation presents the tool as a session sync/archive helper, but it actually supports bidirectional multi-target writes, a local web server, destructive prune operations, backup/restore, metadata mutation, and diagnostic operations. In a security review context, this breadth materially increases the attack surface and the likelihood that users will authorize a much more powerful skill than they intended.
The skill is expressly designed to aggregate full conversation histories from many AI agents and migrate them into other agents and archives. Even if intended as a utility feature, this creates a significant confidentiality risk because chat transcripts may contain secrets, proprietary code, credentials, tokens, personal data, or sensitive business context that can be replicated across multiple stores.
The command set encourages broad backup, archive, restore, and propagation workflows over all session data, which increases the blast radius of any mistake or misuse. Because the content being moved is conversational history, these bulk operations can duplicate sensitive information into many locations, complicating access control, retention, and deletion.
do_raw_restore overwrites original database files listed in the manifest without any confirmation, rollback, file locking, or destination validation beyond simple source/ts regex checks. Because the manifest stores absolute origin paths from backup time, restoring a snapshot can silently replace live application databases and corrupt or destroy user data, especially if the application is still running or the manifest has been tampered with.
The module-level documentation and startup banner describe the dashboard as read-only, but the server exposes state-changing POST endpoints for backup creation, restore, snapshot deletion, and path binding. In a local web app, this mismatch is dangerous because users and integrators may trust the service more than they should, enabling accidental destructive actions or browser-driven requests against localhost without appreciating the write surface.
The inline documentation explicitly says only path-binding POST endpoints exist, but the implementation also exposes backup, restore, and snapshot deletion handlers. This inaccurate security contract increases the chance that operators, reviewers, or upstream callers expose or trust the service under false assumptions, especially given that restore and delete operations can alter local state.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ ├── workspace.json ← 工作区注册表 + 分组挂载(§6,分组的关键) │ ├── session_projcache.json ← 会话投影缓存(侧栏标题数据源 + 统计/token,attach-dsh 回填 title 行) │ └── cost_tracker.json └── settings.yaml / .credentials.yaml / profiles/ ...
## 2. 目录名编码(源码级:dsh-session-persistence-jsonl)
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
# 转换示例 1:zcode 会话 → dsh 可续聊会话
**源**:zcode 会话 `sess_e5ffd0df`(标题「你好」,工作区 `C:\Users\demo\.zcode\workspace\default`,2 轮对话)
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
# 转换示例 1:zcode 会话 → dsh 可续聊会话
**源**:zcode 会话 `sess_e5ffd0df`(标题「你好」,工作区 `C:\Users\demo\.zcode\workspace\default`,2 轮对话)
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
# 转换示例 1:zcode 会话 → dsh 可续聊会话
**源**:zcode 会话 `sess_e5ffd0df`(标题「你好」,工作区 `C:\Users\demo\.zcode\workspace\default`,2 轮对话)
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
# 转换示例 1:zcode 会话 → dsh 可续聊会话
**源**:zcode 会话 `sess_e5ffd0df`(标题「你好」,工作区 `C:\Users\demo\.zcode\workspace\default`,2 轮对话)
The documented use of '| bash' is a classic command-chaining anti-pattern because it combines network retrieval and shell execution into a single step. In the context of a session-sync skill that will be installed into multiple agent environments, this makes compromise especially impactful: a malicious installer could persist across several agent skill directories and capture or alter future session-handling behavior.
# agent-session-sync 一键安装(跨 Agent 会话同步:codex/hermes/dsh/zcode/workbuddy -> dsh)
# 用法:
# 在线(Linux / macOS / WSL):
# curl -fsSL https://raw.githubusercontent.com/Chendestiny/agent-session-sync/main/install.sh | bash
# 离线(GitHub 访问慢/不可达):浏览器下载 zip 解压,进入 agent-session-sync-main 目录执行:
# bash install.sh
# 也可显式指定来源(zip 文件或已解压目录):
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
fi
done
# 脚本自身所在目录(curl | bash 管道执行时为空;旁边有 sync.py 则原地安装,不联网)
SCRIPT_DIR=''
if [ -n "${BASH_SOURCE[0]:-}" ] && [ -f "$(dirname "${BASH_SOURCE[0]}")/sync.py" ]; then
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
The skill metadata and top-level description frame the tool as one-way session sync to dsh plus archiving, but the code implements write paths into many other agents and destructive state-changing workflows. This scope mismatch is dangerous because users or orchestrating agents may grant trust based on the narrower description while the tool actually has broad write capabilities across multiple local application stores.
The implemented backup/restore functionality, including raw snapshot handling, is materially more powerful than the declared sync/archive scope. Hidden restore capability can overwrite or roll back user data stores, so the mismatch undermines informed consent and increases the chance that a user or agent invokes a skill with far more destructive authority than expected.
The doctor command goes well beyond session synchronization by installing packages, creating global command shims, and altering skill bridge locations. These actions modify the execution environment and persistence mechanisms across the system, which can be abused to establish broader footholds, change future command resolution, or normalize unexpected privilege expansion from a data-sync tool.
No suspicious patterns detected.