dsh-bigfish
github.com/gosomea/dsh-bigfish
v0.6.0
技能包
含混淆或编码代码写入文件发起网络请求
Adaptive DSH companion with replaceable, extensible character packs
该插件尚未翻译,显示作者原文。
deepseekdeepseek-harnessdshvirtual-petcompanionskillsanimation
检测报告
有一定能力。命中了若干能力模式,大多是插件正常工作时会用到的。
4需留意3一般17未命中
高关注需留意一般
能力清单
- 含混淆或编码代码
obfuscated-code需留意33 处命中lib/index.js:22if (bytes.length > limits.archive || bytes.length < 22) throw Error(limits.archive === MAX_ARCHIVE ? "\u89D2\u8272\u5305…lib/index.js:32if (count > 256 || count !== v.getUint16(end + 8, true) || at + centralSize !== end) throw Error("ZIP \u76EE\u5F55\u65E0…lib/index.js:41if (!safePath(path) || Object.hasOwn(files, path) || flags & 1 || ![0, 8].includes(method) || expanded > limits.expanded…lib/index.js:160if (p.format !== "dsh-pet" || p.formatVersion !== 1) throw Error("\u4E0D\u652F\u6301\u7684\u89D2\u8272\u5305\u534F\u8BAE…- 混淆本身不是恶意,但公开源码里出现大段混淆值得问一句为什么。
- 写入文件
writes-files需留意11 处命中lib/index.js:288await mkdir(directory, { recursive: true });lib/index.js:3503await writeFile(temp, data);lib/index.js:3504await rename(temp, path);lib/index.js:3506await unlink(temp).catch(() => {- 看写入位置。写自己的配置目录是正常的,写系统目录不是。
- 发起网络请求
network需留意2 处命中lib/index.js:4593scoped.effect(() => scoped.connection.fetch.register({ path: "/api/bigfish-pets", methods: ["GET", "POST"], requestBody:…lib/index.js:4594scoped.effect(() => scoped.connection.fetch.register({ path: "/api/bigfish-pets-upload", methods: ["POST"], requestBody:…- 看请求发往哪些域名。发往作者自己的后端是常见做法。
- 动态执行代码
dynamic-code需留意1 处命中lib/index.js:3967schema.callback = new Function("return " + schema.callback)();- 看 eval / new Function 的入参来自哪里。常量字符串和用户输入是两回事。
- 动态加载模块
dynamic-import一般22 处命中lib/index.js:3534async import(bytes) {lib/index.js:3689return Response.json(await store.import(await boundedBody(request)));…/src/client/backup-settings.d.ts:4}): import("react/jsx-runtime").JSX.Element;…src/client/behavior-preview.d.ts:8}): import("react/jsx-runtime").JSX.Element;- 动态导入本身无害,但会让依赖关系难以静态审阅。
- 读取文件
reads-files一般9 处命中lib/index.js:3492await readFile(join(this.directory, "catalog.json"), "utf8")lib/index.js:3525return new Uint8Array(await readFile(join(this.directory, filename)));lib/index.js:3529await readFile(join(this.directory, key + ".dshpet"))bin/install-skill.mjs:16for (const entry of (await readdir(join(root, prefix), { withFileTypes: true })).sort((a,b)=>a.name.localeCompare(b.name…- 读文件是绝大多数插件的正常工作方式,本身不构成顾虑。
- 读取环境变量
reads-env一般2 处命中lib/index.js:3481process.env.DSH_HOME ?? join(homedir(), ".dsh"),bin/install-skill.mjs:27const root = resolve(skillsDir ?? join(process.env.DSH_HOME || join(homedir(), '.dsh'), 'skills'));- 环境变量里常混有密钥。看它是否把整个 env 都读走。
逐条扫描明细
| 能力 | 标识 | 关注度 | 命中次数 |
|---|---|---|---|
| 含混淆或编码代码 | obfuscated-code | 需留意 | 33 |
| 写入文件 | writes-files | 需留意 | 11 |
| 发起网络请求 | network | 需留意 | 2 |
| 动态执行代码 | dynamic-code | 需留意 | 1 |
| 动态加载模块 | dynamic-import | 一般 | 22 |
| 读取文件 | reads-files | 一般 | 9 |
| 读取环境变量 | reads-env | 一般 | 2 |
这份报告的口径
扫描读的是包里的源码,全程不执行第三方代码。 本次读了 128 个文件,扫描于 2026-10-15。 命中次数只说明源码里出现过这类调用,不说明行为好坏——一个插件读写文件 500 次和 1 次 都会被记为「读取文件」。这是能力清单,不是信任评分,也不是安全结论: 没扫出来的能力可能只是写法没被规则覆盖。
依赖安全公告
已查询这个插件声明的全部依赖,没有匹配到已公开的安全公告。(含 DSH 框架包在内的 @deepseek-ai/* 不作查询——那是运行时自己的问题,不是插件的。)