Install verification: runtime verified (L5) · tested on dsh 0.2.1-rc.2 · last checked Install verification details →
What it doesAI
DeepSeek Harness tools that drive the Obscura Rust headless browser from WSL: status, fetch (dump/eval/stealth) and MCP/CDP wiring hints.
- Resolve the Obscura binary and version via obscura status
- Fetch pages with dump, eval and stealth options
- Prints how to wire MCP / CDP; does not start a server
Capability tags are AI-inferred or rule-extracted from the README (see badge) — vocabulary-limited, not install-verified. AI = inferred; README = literal keyword from the readme.
Installation
dsh plugin --profile web add github:173787247/dsh-wsl-obscuraInstall method: GitHub · runtime verified (L5)
Verification & Compatibility
Grouped by plugin version: each card lists the dsh versions actually tested against that artifact version and their install verdicts (L5 wins). Untested combinations are omitted — absence means untested, never assumed compatible. L1–L3 are a plugin-level static archive (independent of the dsh version — the same verdict on every dsh row): they sit in each row's level grid next to L4/L5, marked "static", while their evidence is stored once per plugin inside that row's "checks & evidence" instead of being duplicated per version.
External credentials (plugin-level): none detected
○ The author declares no dsh version requirement — install is not blocked by version.
| plugin \ dsh | dsh 0.2.1-rc.2 current | dsh 0.2.1-alpha.4 | dsh 0.2.1-alpha.2 |
|---|---|---|---|
| 9a2f7b | ✓ | ✓ | ✓ |
9a2f7bgithub✓ 3 runtime-verified2026-10-19
https://github.com/173787247/dsh-wsl-obscura
✓dsh 0.2.1-rc.2current2026-10-19L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • Plugin artifact: github · https://github.com/173787247/dsh-wsl-obscura (version unstated)
ID: dsh-wsl-obscura@9a2f7b@dsh0.2.1-rc.2 · profile: l4-sandbox
Issued: 2026-10-19 · expires: 2026-10-26
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.2.1-alpha.42026-10-16L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • Plugin artifact: github · github:173787247/dsh-wsl-obscura (version unstated)
ID: dsh-wsl-obscura@9a2f7b@dsh0.2.1-alpha.4 · profile: l5-web-smoke
Issued: 2026-10-16 · expires: 2027-01-14
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✓dsh 0.2.1-alpha.22026-10-14L5 · runtime verified
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • Plugin artifact: github · https://github.com/173787247/dsh-wsl-obscura (version unstated)
ID: dsh-wsl-obscura@9a2f7b@dsh0.2.1-alpha.2 · profile: l4-sandbox
Issued: 2026-10-14 · expires: 2026-10-21
View checks & evidence
active in loader tree (150 entries)
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
Author badges
Embed the official badges in your README to showcase security & install-test status:
`[](https://www.dsh.so/artifact/dsh-wsl-obscura/)``[](https://www.dsh.so/artifact/dsh-wsl-obscura/)`Security Report
Two automated layers, neither a manual review: a static scan (per-plugin rule checks) and a model-driven dynamic security audit that covers only the subset static-flagged at warn or above and never executes plugin code.
Static low, dynamic medium — stricter wins → overall medium.
v0.1.0dsh manifest0.1.0git2026-10-210.1.0same versionclean · gitVet is an AST static scan (npm artifact or git source).
show static findings (3)
- criticalshellExec · shell
lib/obscura.js:145const { stdout, stderr } = await exec(bin, args, { - warningnetIp · network
lib/obscura.js:209" endpoint: http://127.0.0.1:8080/mcp", - warningchildProcessImport · code-exec
lib/wsl-host.js:3import { execFile } from "node:child_process";
show 3 audit findings
- mediumBinary search path includes other Windows users' Desktop folders and is executed without integrity check
lib/obscura.js:21DEFAULT_CANDIDATES is built from every directory under /mnt/c/Users, including the world-writable C:\Users\Public profile (and any other local account's Desktop if writable). resolveObscuraBin only calls existsSync() and then index.js executes the first match with execFile, so a lower-privileged local Windows user could plant obscura.exe at e.g. C:\Users\Public\Desktop\obscura\target\release\obscura.exe and get code executed in the DSH/plugin user's context. No hash, owner or signature check is performed.
- mediumPrivate-network (SSRF) guard is delegated to the external binary and can be disabled by the caller
lib/obscura.js:89isSafeHttpUrl only enforces that the scheme is http/https (line 38: `if (u.protocol !== "http:" && u.protocol !== "https:")`) — no host, IP, or loopback/link-local filtering happens in the plugin. Whether http://127.0.0.1:*, http://169.254.169.254/ or LAN hosts can be reached depends entirely on the external obscura binary's default, and the exposing tool accepts allowPrivateNetwork from the same (LLM-driven, potentially page-influenced) caller, whose description explicitly says "SSRF guard off". This gives a prompt-injection-driven path to probe host-internal services.
- lowExported runPowerShell helper runs an arbitrary command string, but has no callers in this plugin
lib/wsl-host.js:38runPowerShell/runCmd accept a caller-supplied script and pass it to powershell.exe/cmd.exe -Command, i.e. a generic host command-execution primitive with no sanitising. In THIS plugin the functions are never imported or called (index.js only uses detectWsl), so the construct is currently unreachable; it is a latent risk for any future or sibling plugin that forwards untrusted text into runPowerShell.
Runtime code only wraps the Obscura CLI via execFile, but it executes unresolvable candidate binaries from other Windows users' Desktop paths and leaves private-network/SSRF filtering to the external binary with a caller-controlled opt-out.
Rule: the dynamic audit can only raise risk, never lower it (raise-only, never an exemption); a wrong raise is withdrawn by human review and the tier falls back to the static verdict. Overall verdict = the stricter of the two layers.
Disclaimer: the static scan and the dynamic security audit are both automated analysis, not a security guarantee. Always review what you install.
Activity
Last commit 2026-10-01 · activity: Active
• Repo created: 2026-09-05
• Stars: ★ 1 · Forks: 0
• Health: Active — committed within last 30 days
Source
Author README
View on GitHub ↗The author's original README from the repository — fetched live, unedited (the English page loads the default README).
