dsh-inbox
github.com/Chance722/dsh-inbox
v0.2.15
其他
可执行外部程序含混淆或编码代码发起网络请求
给 DeepSeek Harness(`dsh`)的**本地收件箱插件**:把随手复制的东西收进一个仓库,需要的时候找得回来——包括**在对话里让助手替你取**。
作者原文(英文)
Personal paste inbox for DeepSeek Harness (dsh): capture, classify, browse and retrieve.
中文简介由 DeepSeek 模型翻译,仅供参考。
dshdsh-plugindeepseek-harnessinboxclipboardvault
检测报告
关注度高。命中了不少能力模式,其中可能有需要留意的。逐条看下面的清单。
1高关注3需留意4一般16未命中
高关注需留意一般
能力清单
- 可执行外部程序
spawns-processes高关注1 处命中lib/cli.js:8import { spawnSync } from "node:child_process";- 看它调用哪些程序。调用本机已有的工具是常见做法。
- 含混淆或编码代码
obfuscated-code需留意221 处命中lib/cli.js:28return `dsh-inbox init \u2014\u2014 \u628A inbox \u88C5\u8FDB\u4E00\u4E2A dsh profile\uFF0C\u5E76\u8BA9\u52A9\u624B\u770…lib/cli.js:34--profile <\u540D\u5B57> \u88C5\u8FDB\u54EA\u4E2A dsh profile\uFF1B\u4E0D\u7ED9\u5C31\u81EA\u5DF1\u6311\uFF1A\u4F18\u514…lib/cli.js:35\u5176\u6B21\u8FD9\u53F0\u673A\u5668\u4E0A\u552F\u4E00\u7684\u90A3\u4E2A\uFF08\u6311\u4E0D\u51FA\u6765\u4F1A\u62A5\u9519…lib/cli.js:36--create-profile profile \u4E0D\u5B58\u5728\u65F6\u7528 dsh \u81EA\u5E26\u7684 web \u6A21\u677F\u5EFA\u4E00\u4E2A\uFF08\…- 混淆本身不是恶意,但公开源码里出现大段混淆值得问一句为什么。
- 发起网络请求
network需留意27 处命中lib/client.js:1474const response = await fetch(`${INBOX_API_PREFIX}/${INBOX_ENDPOINT_LIST}`, {lib/client.js:1527const response = await fetch(`${INBOX_API_PREFIX}/${INBOX_ENDPOINT_DETAIL}`, {lib/client.js:2448const response = await fetch(`${INBOX_API_PREFIX}/${endpoint}`, {lib/index.js:270result = await web.fetch({ url: filed.url }, AbortSignal.timeout(FETCH_TIMEOUT_MS));- 看请求发往哪些域名。发往作者自己的后端是常见做法。
- 写入文件
writes-files需留意10 处命中lib/cli.js:188if (original.length > 0) writeFileSync(`${settingsPath}.bak-${String(Date.now())}`, original, "utf8");lib/cli.js:189writeFileSync(settingsPath, next, "utf8");lib/cli.js:200mkdirSync(dirname(settingsPath), { recursive: true });lib/cli.js:315mkdirSync(dirname(presetDir), { recursive: true });- 看写入位置。写自己的配置目录是正常的,写系统目录不是。
- 接触凭据或密钥
credentials一般494 处命中lib/client.js:660var INBOX_ENDPOINT_SECRET = "secret";lib/client.js:731"heading.credential": "\u5BC6\u94A5 / \u8D26\u5BC6",lib/client.js:746"category.secret": "\u5BC6\u94A5/\u8D26\u5BC6",lib/client.js:818// Settings: credentials and remote.- 看它读取哪些凭据、发往哪里。用于登录自己的服务是正常的。
- 读取文件
reads-files一般15 处命中lib/cli.js:87entries = readdirSync(root, { withFileTypes: true }).filter((entry) => entry.isDirectory() && !entry.name.startsWith("."…lib/cli.js:91return entries.filter((name) => existsSync(join(root, name, "package.json"))).sort();lib/cli.js:152if (existsSync(join(standard, "agent.cordis.yml"))) return standard;lib/cli.js:185const original = existsSync(settingsPath) ? readFileSync(settingsPath, "utf8") : "";- 读文件是绝大多数插件的正常工作方式,本身不构成顾虑。
- 动态加载模块
dynamic-import一般6 处命中lib/index.js:1944await vault.import(remote);lib/index.js:3414async import(item) {lib/types/host/vault/spec.d.ts:267items: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, {lib/types/host/vault/spec.d.ts:289attachments: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, {- 动态导入本身无害,但会让依赖关系难以静态审阅。
- 读取环境变量
reads-env一般1 处命中lib/cli.js:129const configured = process.env.DSH_HOME;- 环境变量里常混有密钥。看它是否把整个 env 都读走。
逐条扫描明细
| 能力 | 标识 | 关注度 | 命中次数 |
|---|---|---|---|
| 可执行外部程序 | spawns-processes | 高关注 | 1 |
| 含混淆或编码代码 | obfuscated-code | 需留意 | 221 |
| 发起网络请求 | network | 需留意 | 27 |
| 写入文件 | writes-files | 需留意 | 10 |
| 接触凭据或密钥 | credentials | 一般 | 494 |
| 读取文件 | reads-files | 一般 | 15 |
| 动态加载模块 | dynamic-import | 一般 | 6 |
| 读取环境变量 | reads-env | 一般 | 1 |
这份报告的口径
扫描读的是包里的源码,全程不执行第三方代码。 本次读了 48 个文件,扫描于 2026-10-14。 命中次数只说明源码里出现过这类调用,不说明行为好坏——一个插件读写文件 500 次和 1 次 都会被记为「读取文件」。这是能力清单,不是信任评分,也不是安全结论: 没扫出来的能力可能只是写法没被规则覆盖。