cloud-drive-downloader@0.20.2
CAUTION· install onlyPublisher claims: "跨 macOS / Windows / Linux 的通用下载调度层,统一通过 Agent/MCP/CLI、Web UI 和浏览器插件投递任务;调度本机或可选 Docker/远程引擎。不解析分享页、不提取直链、不绕过鉴权/限速/风控/DRM。" 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-09 and scored it 77/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: Privileged sudo command; Destructive file system command detected; Privileged sudo command. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
"dylib 是 macOS 原生库格式。fix: 仓库内 sudo 二进制请走 platform 分支;Windows/Linux 由 pip wheel 提供"),Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# 仅对命令类规则,在 .py 里只追 subprocess.run([...]) 这样的真实调用。Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(argv, capture_output=True, text=True, timeout=8)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out." && apt-get clean && rm -rf /var/lib/apt/lists/*\n"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = subprocess.run(cmd, capture_output=True, text=True, timeout=10, env=env)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.echo "[pan_web] 剪贴板监听运行中(PID $CLIP_PID)。停止:kill $CLIP_PID"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = subprocess.run(argv, capture_output=True, text=True, timeout=0)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(["curl", "-sS", "--config", "-"], input=cfg_curl,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.rc = subprocess.call(argv, stdout=lf, stderr=lf)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."依赖安装:sudo apt-get install -y aria2 yt-dlp libsecret-tools;或 sudo dnf install -y aria2 yt-dlp libsecret",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run([engine, "who"], capture_output=True, text=True, timeout=15)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out." chown -R pan:pan /app /data\n"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.proc = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout, env=_env())Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.Popen(_argv(start, end, part), stdout=subprocess.DEVNULL,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.Popen(argv, stdin=subprocess.PIPE if input_data is not None else None,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.which = subprocess.run(["which", "rclone"], capture_output=True, text=True).returncodeFix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.Popen(argv, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.p_dav = pan.build_plan("https://dav.jianguoyun.com/dav/%E6%96%87%E4%BB%B6.zip", cfg=cfg_dav)Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.proc = subprocess.Popen(argv, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(argv, capture_output=True, text=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(remote_ssh_argv(profile, cmd), capture_output=True, text=True, timeout=20)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.assert pan.filename_from_url("https://x.com/%E6%96%87%E4%BB%B6.zip") == "文件.zip"Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.p = subprocess.run([sys.executable, str(ROOT / "scripts" / "pan_mcp.py")], input=payload,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run([sys.executable, str(PAN)] + args, capture_output=True, text=True, env=e, timeout=timeout)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.…tton><div class=msg id=msg></div></div> <script>fetch('/api/settings').then(r=>r.json()).then(d=>{const c=d.config||{};const e=c.engines||{};alist.value=e.alist_url||'';remote.value=e.rclone_remote||'';root.value=c.download_root||'';conn.v…Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.proc = subprocess.run(["rclone", "lsd", destination], capture_output=True, text=True, timeout=20)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.Popen(argv, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.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
3 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim lisong2003-lgtm: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Privileged sudo command≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Destructive file system command detected≈ +4 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.