T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:25- Finding
Unverified Mutable Remote Code Is Downloaded and Executed
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill appears to deploy the promised WeWe RSS service, but it uses high-impact deployment defaults that need careful review before installation.
Review this before installing. Prefer pinning the upstream repository to a known commit, verifying downloads, using localhost binding, generating a strong auth code, avoiding the default third-party relay unless you trust it, and enabling PM2 startup only after explicit approval. Run it in a contained environment if possible.
SKILL.md:25Unverified Mutable Remote Code Is Downloaded and Executed
SKILL.md:133Downloaded Application Is Configured for Cross-Session Startup Persistence
SKILL.md:77Service Is Exposed on All Interfaces with a Predictable Authorization Placeholder
SKILL.md:90Authentication-Related Traffic Is Routed Through an Unverified Third-Party Relay
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
# SKILL.md - 部署 WeWe RSS 微信公众号 RSS 服务
## 触发条件
当 WeWe RSS 服务未运行(端口 4000 无响应),或用户要求部署 WeWe RSS 项目时激活。
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
unzip -o /tmp/wewe-rss.zip -d ~/.openclaw/workspace/
rm /tmp/wewe-rss.zip
### Step 2:安装依赖
rm -rf prisma/ recursively deletes a directory inside the checked-out project as part of schema switching. Although intended to replace MySQL schema files with SQLite ones, recursive deletion is hazardous if executed from the wrong path or if path assumptions fail, making this a real safety risk in an automated skill.
ls prisma/
# 删除 MySQL schema(如果存在)
rm -rf prisma/
# 重命名 SQLite schema
mv prisma-sqlite prisma
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
│ │ │ └── wewe-rss.db │ │ ├── dist/ # 构建输出 │ │ ├── prisma/ # 数据库 schema │ │ └── .env # 环境配置 │ └── data/ # 数据文件软链接 └── package.json
rm -rf ~/.openclaw/workspace/wewe-rss-main is a real destructive command, even though it is part of an uninstall section. In an agent context, providing unattended deletion steps without confirmation can lead to accidental data loss if the directory contains user modifications or if the path is reused for other work.
pm2 delete wewe-rss
# 删除项目
rm -rf ~/.openclaw/workspace/wewe-rss-main
# 清理配置
rm -f ~/.openclaw/workspace/tools/wewe-rss-config.txt
rm -rf ~/.openclaw/workspace/wewe-rss-main is a real destructive command, even though it is part of an uninstall section. In an agent context, providing unattended deletion steps without confirmation can lead to accidental data loss if the directory contains user modifications or if the path is reused for other work.
pm2 delete wewe-rss
# 删除项目
rm -rf ~/.openclaw/workspace/wewe-rss-main
# 清理配置
rm -f ~/.openclaw/workspace/tools/wewe-rss-config.txt
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
rm -rf ~/.openclaw/workspace/wewe-rss-main
rm -f ~/.openclaw/workspace/tools/wewe-rss-config.txt
---
The trigger condition activates whenever the service is down or when a user generically asks to deploy the project, which is broad enough to cause the agent to perform installation and service-start actions without narrowly scoped confirmation. In a skill system, overly broad activation raises the chance of unintended code download, dependency installation, and network exposure on the host.
The skill instructs the agent to fetch code from external network sources (git clone or curl from GitHub) and then execute build/install steps on that code. This is expected for deployment, but it remains a genuine supply-chain and external transmission risk because unreviewed remote content is imported into the environment and later executed.
git clone https://github.com/cooderl/wewe-rss.git ~/.openclaw/workspace/wewe-rss-main
如果 Git 克隆失败,使用 curl 下载压缩包:
```bash
# 下载
curl -L "https://github.com/cooderl/wewe-rss/archive/refs/heads/main.zip" -o /tmp/wewe-rss.zip
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/workspace/wewe-rss-main/apps/server/data
mkdir -p ~/.openclaw/workspace/wewe-rss-main/apps/data
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/workspace/wewe-rss-main/apps/server/data
mkdir -p ~/.openclaw/workspace/wewe-rss-main/apps/data
The .env example binds the service to 0.0.0.0, exposing it on all network interfaces, yet the skill does not clearly warn that this makes the RSS service reachable beyond localhost. Combined with a web UI and article/account management features, this can unintentionally expose a locally deployed service to other users on the network or the internet if port forwarding/firewall rules permit it.
The skill recommends a public third-party forwarding service (PLATFORM_URL) without a privacy or trust warning. Because the service is used in a workflow involving account login and retrieval of reading/article data, users may unknowingly transmit sensitive metadata or content through infrastructure they do not control.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
Writing the installation path into ~/.openclaw/workspace/tools/wewe-rss-config.txt creates cross-session state intended for later skills to discover and reuse. In an agent environment, this is persistence behavior that can influence future runs and should be disclosed and consented to, especially because it affects tool behavior beyond the current task.
为了后续 Skill 能够找到项目,将路径写入配置:
mkdir -p ~/.openclaw/workspace/tools/
echo "~/.openclaw/workspace/wewe-rss-main" > ~/.openclaw/workspace/tools/wewe-rss-config.txt
The entire skill documentation is written in Chinese and assumes Chinese UI flows such as WeChat Reading login, without indicating that language is fixed or offering an alternative language option. This can be a locale-policy issue when a skill implicitly forces a specific language without user opt-in or justification.