Skip to content

fix(agent): creator 纳入运行时保留参数,从 ctx.username 注入,防 LLM 伪造开票人 - #11

Open
leaderwm wants to merge 1 commit into
zhyese:mainfrom
leaderwm:fix/agent-tool-creator-spoof
Open

fix(agent): creator 纳入运行时保留参数,从 ctx.username 注入,防 LLM 伪造开票人#11
leaderwm wants to merge 1 commit into
zhyese:mainfrom
leaderwm:fix/agent-tool-creator-spoof

Conversation

@leaderwm

@leaderwm leaderwm commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

问题

create_ticketcreator(开票人)取自 LLM 可控的 tool_args:schema 未声明该字段,但 LLM 私带 creator 时仍会透传到 handler——模型幻觉/注入可伪造开票人;正常路径又因 schema 未声明恒为空串。

改动

ToolRegistry.run 对齐 tenant 保留参数的既有机制:

  • creator 加入 LLM 参数剥离清单(tenant/tenant_id/tenantId/creator);
  • ctx 提供登录态且 handler 声明 creator 形参时,注入 ctx.usernameinspect.signature 判定,与 tenant_aware 判定同款)。

新增 2 例回归:有 ctx 时注入登录名(剥离伪造值)、无 ctx(老链路)时剥到默认空串。

验证

  • python -m pytest tests/ -q --ignore=tests/test_api.py -m "not integration":828 passed(3 个失败为 main 上已存在的 test_batch3_infra openai SDK 环境差异,与本 PR 无关,已在未改动代码上复现确认)
  • python scripts/validate_golden.py 通过

create_ticket 的 creator 原取自 LLM 可控 tool_args(schema 未声明但 LLM 私带时
仍被透传),模型幻觉/注入可伪造开票人;对齐 tenant 保留参数同款机制:
args 剥离 creator,ctx 有登录态且 handler 声明 creator 形参时注入 username
@leaderwm
leaderwm force-pushed the fix/agent-tool-creator-spoof branch from 41c28ed to da93461 Compare September 4, 2026 10:30
@leaderwm

leaderwm commented Sep 5, 2026

Copy link
Copy Markdown
Contributor Author

CI 红叉已定位并另有 PR 修复:#12

本 PR 的 CI 失败为 main 上预存问题,与本 PR 改动无关——证据:main(8862c31)与本 PR 分支的本地全量失败集完全一致,均为 test_batch3_infra.py 3 例(openai 3.7.0 在 AsyncOpenAI() 构造期即校验凭据,而单测环境无 key);本 PR 涉及的模块相关测试全部通过。

#12(conftest 注入哑 key,仅测试环境变更)合并后,main 与本 PR 的 CI 会自动转绿(PR CI 跑的是与 main 的合并预览)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant