Repository navigation
Conversation
sky-mirrors
approved these changes
Oct 12, 2026
sky-mirrors
left a comment
Collaborator
There was a problem hiding this comment.
独立复验通过 ✅
在 origin/main @ abb7628 上套用本 PR diff 实测:
- 专项测试:
src/mcp/__tests__/stdio-env.test.ts15/15 通过(160ms,4 个 suite); - 回归:
renamed-node-mcp.test.ts5/5(含 win32 重命名 runtime 的生产 npx MCP 握手端到端)。
实现核验:CODE_EXEC_ENV_VARS 清单(NODE_OPTIONS / JAVA_TOOL_OPTIONS / _JAVA_OPTIONS / JDK_JAVA_OPTIONS / LD_PRELOAD / DYLD_INSERT_LIBRARIES)大小写不敏感剥离,覆盖 win32 场景;注释把动机写得很清楚——审批指纹刻意不绑 env 键值(凭据轮换容忍),env 因此是免审通道,必须在此显式净化,与 bash 侧 #137 硬化对齐。transport-factory.ts 的 buildStdioChildEnv 接线确认到位。
与 #452(hooks 侧对称净化)同批收编效果最佳。可收编。
Owner
|
已通过 sync 流程合入 dev,感谢 @Ver-zhzh 的贡献 🎉 本 PR 的改动(fix(mcp): stdio 子进程 env 剥离启动即执行类变量(对称 #137))已经 sync 流程合入主仓(本次 sync),并已收录进 CONTRIBUTORS.md。 按仓库的双仓流程,公开仓 PR 不经 merge 按钮合入(保持 dev 主仓唯一事实源),现以 sync-merged 标记关闭。欢迎继续贡献! |
huiliyi37
added a commit
that referenced
this pull request
Oct 12, 2026
内容已经 sync 流程合入(本次 sync),本提交为作者署名落账: GitHub 贡献者图谱按 Co-authored-by trailer 计入。 Co-authored-by: Ver-zhzh <Ver-zhzh@users.noreply.github.com>
huiliyi37
pushed a commit
that referenced
this pull request
Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
修复批次:MCP stdio 子进程 env 硬化(对称 #137)
1. 配置可控的 env 值可在 MCP stdio 子进程启动时执行任意代码
现象:
mcpServerFingerprint只取envKeys: Object.keys(cfg.env).sort()(server-approval.ts:113-122);buildStdioChildEnv把配置 env 原样并入子进程 env(stdio-env.ts)。探针实证:同键集、值从tok_ORIGINAL改为tok_ATTACKER→ 指纹逐字节相同;NODE_OPTIONS=--require <hook>随 env 进子进程并被 Node 执行(marker 文件落盘)。根因:审批指纹的「值不参与」是刻意设计(容忍凭据轮换),真正的缺口是 env 组装处未像 bash 路径(#137)一样剥离启动即执行类变量。
修复:
src/mcp/stdio-env.ts新增stripCodeExecEnvVars,在buildStdioChildEnv组装最终 env 时显式剥离NODE_OPTIONS、JAVA_TOOL_OPTIONS、_JAVA_OPTIONS、JDK_JAVA_OPTIONS、LD_PRELOAD、DYLD_INSERT_LIBRARIES(大小写不敏感)。指纹逻辑不动,凭据轮换容忍保留。未修观察(如实报告,非本批引入)
buildStdioEnvWithNodePath另被src/lsp/multi-manager.ts复用(LSP 子进程同类威胁面),本轮按最小改动原则未动,留待 LSP 模块审计时处理。resolve-node-cli.tsargs 逐字进 argv(无 shell、无穿越)、工具清单持久化已 fail-closed(名+hash、变更双态 block)、待批登记 payload 仅含 env 键名。验证
CI 说明(基线预存失败,非本批引入)
windows-smoke与ci (24)红项已与干净上游 main(run 38137254300,abb7628)逐项核对,失败集合完全一致,均为上游基线预存: