mubu-integration@1.3.16
CAUTION· install onlyPublisher claims: "幕布(mubu)与 Obsidian 集成:将幕布大纲导入 Obsidian、把 Markdown 同步到幕布、查询/导出幕布笔记。触发词:幕布、mubu、幕布导入 Obsidian、mubu 同步、幕布笔记导出" Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-07 and scored it 78/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Access to sensitive file paths; References a credential file in the home directory. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
也可在 `~/.workbuddy/.env.mubu` 中配置(由 Skill 宿主加载为环境变量,且仅属主可读写):Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.- **读取**:仅读取环境变量 `MUBU_PHONE` / `MUBU_PASSWORD` / `MUBU_MEMBER_ID`(环境变量未设置时,才由仓库外的 `~/.workbuddy/.env.mubu` 补全;`MUBU_MEMBER_ID` 即幕布 colla 成员 ID,仅 `save` 写回需要。**该值任何 API 都不返回,无法自动获取,必须手动设置 `MUBU_MEMBERFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.``create --md`` / ``save --file`` 读取 ``/etc/passwd``、``~/.ssh/id_rsa``Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 凭据优先来自环境变量 / .env.mubu;缺失时交互式输入Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# T5:在读取 phone/password 之前,先尝试从 .env 文件补全凭据Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.脚本通过环境变量读取凭据(优先级:环境变量 > `~/.workbuddy/.env.mubu` 文件;Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.<summary>技术细节</summary> mubu-integration 是一个**非官方**集成,使用的接口与幕布 Web 端一致。所有请求发往 `https://api2.mubu.com/v3/api`;鉴权 JWT 通过请求头 `jwt-token` 传递。`access_token` 约 2 小时过期Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct."""从 .env 文件加载凭据(仅当环境变量未设置时补全)。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."login", help="登录幕布(凭据取自环境变量 / .env.mubu,缺失时交互式输入)"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 0) 展开 ~ 为用户目录(如 ~/.ssh/id_rsa → /Users/.../.ssh/id_rsa),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 登录(凭据取自环境变量 / ~/.workbuddy/.env.mubu;缺失时交互式输入,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 环境变量 MUBU_MEMBER_ID(~/.workbuddy/.env.mubu)> token 缓存兜底。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.path: 可选,指定 .env 文件路径(便于测试;默认用 ENV_FILE)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.环境变量(或 `~/.workbuddy/.env.mubu`)并加载本地缓存 Token:Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.默认读取 ENV_FILE(~/.workbuddy/.env.mubu);文件不存在则静默跳过。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.<summary>Technical notes</summary> mubu-integration is an **unofficial** integration that uses the same endpoints as the Mubu web client. All requests go to `htFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.> `~/.workbuddy/.env.mubu` 提供。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.``create --md`` / ``save --file`` 读取 ``/etc/passwd``、``~/.ssh/id_rsa``Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# .env 凭据文件路径:仅当环境变量未设置时用于补全 MUBU_PHONE / MUBU_PASSWORDFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.mubu_api._safe_local_path("~/.ssh/id_rsa")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 0) 展开 ~ 为用户目录(如 ~/.ssh/id_rsa → /Users/.../.ssh/id_rsa),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# T5:原子写(rename)之后追加 chmod 0o600Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.M2 的 T5:rename 之后追加 chmod 0o600,确保 Token 文件仅属主可读写。Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.# 隔离 ENV_FILE,避免读取用户真实 ~/.workbuddy/.env.mubu(其 chmod 会污染 os.chmod mock)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 隔离 ENV_FILE,避免读取用户真实 ~/.workbuddy/.env.mubu(其 chmod 会污染 os.chmod mock)Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.ENV_FILE = Path.home() / ".workbuddy" / ".env.mubu"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""原子写回收站快照:tmp → rename → chmod 600,整体置于文件锁内。"""Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.# M2 (P1) 新增测试:T5 网络健壮性 / .env / 权限,T6 本地搜索Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.envf = tmp_path / ".env.mubu"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.envf = tmp_path / ".env.mubu"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# 10. M2 T5 — .env 凭据加载(仅环境变量未设置时补全)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
2 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim liuboacean: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- References a credential file in the home directory≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.