Verification
L1 · Found
Security
Medium
Health
Active
Trust
Unrated
What it does
Installation
dsh plugin --profile web add github:ArcherLyu/dsh-plugin-sshInstall method: GitHub · not yet tested in container (L3+)
Compatibility
| DSH Version | Status |
|---|---|
| not stated | Declared — not tested |
Requirements
- • Node.js: not stated
- • DSH: declared "not stated"
- • External credentials: none detected
Security Report
Automated static scan, not manual review.
DSH.SO AUDITMEDIUM26e329
Security reviewAutomated review · daily
MEDIUM
Critical findings in non-blocking categories (dynamic code execution, shell execution, install scripts, obfuscation). Common in CLI/terminal plugins but worth reviewing.
2 critical·9 warning·18 info·9 files scanned
code-exec ×2plugin version
0.1.0dsh manifestscanned commit
26e329400cf22026-08-21latest commit
26e329400cf2The scan result is valid for the scanned commit. New commits within 7 days are tolerated (the rating still counts); after 7 days without a rescan the badge shows outdated.
`[](https://www.dsh.so/artifact/dsh-plugin-ssh/)`Disclaimer: automated static analysis, not a security guarantee. Always review what you install.
Risk details
| Risk | Rule | Location | Description |
|---|---|---|---|
| critical | Child process module usage (Node.js) | lib/browser.js:3 | import { spawn } from "node:child_process"; |
| critical | Child process module usage (Node.js) | lib/tunnel.js:8 | import { spawn, spawnSync } from "node:child_process"; |
| warning | HTTP request to a raw IP address | bin/dsh-ssh.js:197 | if (s.localPort && s.http.up) process.stdout.write(`url: http://127.0.0.1:${s.localPort}\n`); |
| warning | HTTP request to a raw IP address | bin/dsh-ssh.js:244 | openBrowser(`http://127.0.0.1:${localPort}`); |
| warning | HTTP request to a raw IP address | bin/dsh-ssh.js:245 | process.stdout.write(`dsh-ssh: opened http://127.0.0.1:${localPort}\n`); |
| warning | HTTP request to a raw IP address | lib/client.js:214 | remote.localPort ? el("div", { style: subStyle }, settingsEn.url + ": http://127.0.0.1:" + remote.localPort) : null, |
| warning | HTTP request to a raw IP address | lib/index.js:86 | openBrowser(`http://127.0.0.1:${localPort}`); |
| warning | HTTP request to a raw IP address | lib/index.js:87 | return { ok: true, url: `http://127.0.0.1:${localPort}` }; |
| warning | HTTP request to a raw IP address | lib/remote.js:18 | return `http://127.0.0.1:${localPort}`; |
| warning | Base64 decode-and-run pattern | lib/remote.js:77 | const result = sshRun(remote, `mkdir -p ~/.dsh/remotes && echo ${encoded} | base64 -d > ${remoteStateFile(name)} && echo ok`); |
| warning | Base64 decode-and-run pattern | lib/remote.js:201 | const sent = sshRun(remote, `mkdir -p ~/.dsh && echo ${encoded} | base64 -d > ~/.dsh/settings.yaml && echo ok`); |
Heuristic static scan — may produce false positives. Review the source yourself before trusting.
Activity
Last commit 2026-08-17 · activity: Active
• Repo created: 2026-08-21
• Stars: ★ 0 · Forks: 0
• Health: Active — committed within last 30 days
