ymq
25c2452647
feat(secret_vault): 用户敏感信息管理模块(2026-09-17)
敏感信息入库 + 会话占位符引用 + 入站自动侦测 + 执行边界注入,真值全程不进
模型上下文/不落库/不进命令字符串(根治"用户贴apikey→每轮上行供应商"泄露面)。
核心 secret_vault.py:
- AES 密文入库(appPublic.aes + UTF-8包装 + AES1$版本前缀)。注:ahserver 的
password_encode 实测是 RC4 薄封装(globalEnv.py:61),非 AES,故直接用 aes 模块。
aes.py 第42/43行密文侧 iso-8859-1 必须保留(实测200组密文utf-8解码100%失败),
只在调用方对明文侧做 UTF-8→latin-1 字节保真包装(中文/emoji/私钥 9/9 往返一致)。
- 占位符 @@sec:NAME@@(避开 sqlor ${X}$ 与 ahserver ArgsConvert 同语法冲突,
也避开裸 $VAR 被 bash 就地展开)。
- 侦测三通道:已知前缀16种 / 关键词邻域+熵≥3.5 / 不做裸串侦测(防吞哈希数据)。
中文冒号「apikey:」支持;_JUNK_VALUE_RE 拦占位示例值;低熵弱口令不误吞。
- 执行边界:占位符→$PIPELINE_SEC_NAME,真值走 subprocess env=(不用 bwrap
--setenv——值进argv同机任意用户ps可读;env=落/proc/pid/environ仅属主可读)。
- 越权防护:get_secret_row(own_only=) 读写范围分离 + _assert_own 代码级二次校验
(防任意机构成员覆盖/删除机构共享凭据)。写操作显式 COMMIT(多worker)。
- 审计只记 name/type,禁记值。
三路接入:
- gateway._secret_inbound_gate: run_message Step 0.5(所有上下文解析之前),
progress 事件回显动作(体感不变但告知已自动保存)。
- agent_loop_v2: _t_secret_tool 六工具 + _t_run_command 执行边界(前台/后台分支
之前) + _t_process 出站擦洗 + prompt 铁律(仅有 user_id 时注入)。
- agent_loop(v1角色agent): 只读三件(list/use/detect,无人值守禁自主增删凭据);
身份=项目真人owner(resolve_project_owner,已处理 agent.pm 自动立项反查);
run_shell 执行边界 + 出站擦洗。
- _run_shell/bg_jobs.start_bg_job 加 secret_env 参数(无secret时env=None零改动)。
本地测试 124 断言全绿(含三个挂调实锤陷阱回归:子串碰撞/占位符别名劫持/
未知占位符吞空 + 跨文件工具名同步 + 越权防护)。表定义 m0037(pipeline-app)。
2026-09-17 15:44:56 +08:00
..
2026-09-02 15:26:18 +08:00
2026-09-01 09:26:46 +08:00
2026-09-17 15:44:56 +08:00
2026-09-17 15:44:56 +08:00
2026-08-16 23:43:40 +08:00
2026-09-17 15:44:56 +08:00
2026-08-23 21:52:49 +08:00
2026-09-11 15:30:30 +08:00
2026-09-11 12:58:26 +08:00
2026-09-15 16:52:43 +08:00
2026-09-16 13:38:57 +08:00
2026-08-17 11:00:10 +08:00
2026-08-13 18:07:16 +08:00
2026-08-22 11:48:47 +08:00
2026-09-15 14:53:17 +08:00
2026-08-25 18:22:03 +08:00
2026-08-25 18:22:03 +08:00
2026-08-17 07:10:28 +08:00
2026-09-08 23:13:06 +08:00
2026-09-15 15:01:27 +08:00
2026-09-17 15:44:56 +08:00
2026-06-11 17:30:06 +08:00
2026-09-15 21:51:22 +08:00
2026-06-16 11:05:45 +08:00
2026-09-17 11:42:10 +08:00
2026-09-16 12:17:22 +08:00
2026-09-04 17:05:42 +08:00
2026-08-24 12:18:27 +08:00
2026-09-04 16:33:15 +08:00
2026-09-16 17:58:14 +08:00
2026-09-11 15:30:30 +08:00
2026-09-11 15:30:30 +08:00
2026-09-15 15:01:27 +08:00
2026-08-16 23:51:55 +08:00
2026-09-12 08:04:17 +08:00
2026-08-28 21:46:27 +08:00
2026-09-15 17:32:39 +08:00
2026-09-08 23:59:24 +08:00
2026-09-15 00:11:56 +08:00
2026-09-17 15:44:56 +08:00
2026-09-11 12:58:26 +08:00
2026-09-10 17:09:45 +08:00
2026-08-16 18:19:40 +08:00
2026-08-08 10:36:04 +08:00
2026-06-16 11:05:45 +08:00
2026-08-17 18:13:05 +08:00
2026-09-10 17:09:45 +08:00
2026-09-16 18:21:19 +08:00
2026-09-03 16:41:27 +08:00
2026-08-17 11:00:10 +08:00
2026-08-17 11:00:10 +08:00
2026-09-08 23:13:06 +08:00
2026-08-28 21:10:36 +08:00
2026-09-08 16:01:15 +08:00