Repository navigation
Releases: ccr-wer/dsh-remote-rea
Releases · ccr-wer/dsh-remote-rea
Release list
v0.1.2 — engine 释放钩子修复(ctx.effect disposer)
修复
- engine 释放钩子从未生效:
ctx.effect(releaseEngine, …)直接传函数 —— cordis 的契约是注册期立即执行execute、把返回值登记为卸载 disposer,而releaseEngine无返回值,disposer 从未注册:进程内重载/停用插件时 SSH 池与清扫定时器不会被释放(进程整体退出不受影响)。现改为ctx.effect(() => releaseEngine, 'remote-rea:engine')。 - 0.1.0 条目「engine 单例经
ctx.effect()在插件 dispose 时释放」当时不成立,以本条为准(CHANGELOG 已更正)。
测试
- 插件套件
ctx.effectmock 对齐真 cordis 契约(注册期调 fn、返回值当 disposer);P11 改经登记的 disposer 走卸载路径。 - 新增 P11b 真 cordis 对照锚点:修复后形状卸载时 disposer 被调、修复前形状卸载零动作(证明测试能抓住该缺陷);cordis 不可解析时 SKIP。插件套件 181 → 184。
- 迷你宿主实证(真 cordis 4.0.2 + 真 index.js,句柄探针):fiber 卸载后
clearInterval恰 1 次且落在 engine 清扫定时器句柄上,再次调用按默认路径重建。
完整说明见 CHANGELOG.md 的 0.1.2 节与 README。
v0.1.1 — 兼容 dsh-tools 0.2.1-rc.2(peer 范围扩展)
变更
peerDependencies.@deepseek-ai/dsh-tools追加^0.2.1-rc.2,范围现为^0.1.5-rc.1 || ^0.2.0-rc.2 || ^0.2.1-rc.2- 代码零改动
验证
- 临时 profile 挂载自检通过(dsh-tools 0.2.1-rc.2 + cordis 4.0.5,无 peer 告警,dump-config 含
- id: remote-rea) - npm pack 17 文件,无 node_modules 泄漏
0.1.0 —— 首个可安装版本(远程连接 + 逆向分析)
0.1.0 (2026-10-17)
首个可安装版本。DSH 生态插件:远程连接 + 逆向分析。只分析、不利用。
功能
- 三个工具:
remote_hosts(主机库 CRUD、从~/.ssh/config导入、连通性 test)、
remote_fetch_binary(预检 → SFTP 拉取 → sha256 校验 → JSON 报告)、
remote_rea_analyze(拉取后探测能力面、选 provider/operation、下发分析、Evidence 落盘并出摘要)。 - 自动选路范围 = REA 广告面 ∩ 已用
--help核对过绑定的子命令:inspect-artifact、extract-artifact。
analyze-javascript-application(Electron ASAR)不在任何广告面里,作为带标记的手工例外参与
(surface=manual-exception、marker=manual-exception:not-advertised)。 - A 路(Ghidra)绑定表已写入代码:
analyze_function/procedure_pseudo_code/procedure_assembly
/xrefs/read_bytes五条,只在显式provider:"ghidra"且 REA readiness 判可用时才走。 - 跨平台预检降级:BSD/macOS 的
stat/file/wc差异已补丁(5 条);file缺失时按扩展名猜类型;
符号链接上stat -c %s给链接字符串长度,故大小判定豁免、以 sha256 为权威。 - 落盘:数据根
$REVERSE_HOME(回退$DSH_HOME,再回退~/.reverse)下的
reports/、targets/、evidence/。工具返回体只放摘要与路径,不放远端原始 stdout、不放全量 Evidence。 - 部署策略两级:远端已有
rea(preinstalled)或走npx;npxTimeoutMs默认 600000,可按调用覆盖。 - 插件挂载契约:
cordis.patch.yml插入 idremote-rea,inject: ['tools'],engine 单例经
ctx.effect()在插件 dispose 时释放。
安全边界
- 只做静态分析:不执行目标、不注入、不做任何利用动作;代码里没有利用链下发路径。
- 提权闸门
assertNoPrivilegeEscalation():远端命令里出现sudo、--break-system-packages等
形态直接拒绝。这是命令形状白名单,不是「效果过滤」——它不判断命令是否安全,只判断它是否
试图提权。 - 平台闸门:
uname -s回MINGW*/MSYS*/CYGWIN*/Windows*一律拒绝,只支持 POSIX shell 目标。 - 口令走
passwordEnv(环境变量名),不写进主机库、不进返回体。 - 远端 Node 版本闸门:走 npx 时要求 22.19+ / 24.11+ / 26+(不支持 23 和 25)。
已知限制
与 README 的「已知限制」一致,原文口径、不美化:
- Ghidra 路径已接,未实装验证:5 条绑定只有
--help证据、没有任何一次真机跑通,故不参与自动选路。
实装需自备 Ghidra 12.1.x 解包目录 +GHIDRA_INSTALL_DIR+ JDK 21。 analyze-javascript-application不在 capabilities 广告面(providers / capabilities / doctor 三处都没有),
只作为带标记的手工例外接入,其 effects 为空。rea-artifact-graph只做 inventory,findings=0是结构性的:Evidence 方言里没有semantic_graph,
unexplored_branches/next_probes原样透传,深度要靠 Ghidra 那一条路。- 冷缓存预热 50s 到 10 分钟不等:实测区间 50–83s,同一条路出现过 120s、420s,以及 2026-10-17 在
WSL 实测的 534s。npxTimeoutMs因此定为 600000。 doctor原文不是字节稳定的:identity.installations.paths[0]随 npx 缓存位置变化,故不对原文做逐字节断言。@latest可能漂移:npx --yes rea-agents@latest每次解析到的版本可能不同。pnpm peers check的 missing peer 是静态误报:profile 设了autoInstallPeers: false,
peer 由 DSH 运行时在profiles/node_modules/@deepseek-ai/提供,实际能解析。
另:离线 tarball 部署未实现(只支持 preinstalled / npx 两级,隔离内网需人工预装),留待未来版本迭代;
其余技术债见 TECH_DEBT.md。