Repository navigation
Replies: 1 comment
|
我按 Discussion 的冻结基线 已确认、且当前 HEAD 仍存在的严重问题我已按根因去重开票:
确认存在,但没有另开 blocker issue
我不同意或需要收窄的表述
其余
|
|
我按 Discussion 的冻结基线 已确认、且当前 HEAD 仍存在的严重问题我已按根因去重开票:
确认存在,但没有另开 blocker issue
我不同意或需要收窄的表述
其余
|
Uh oh!
There was an error while loading. Please reload this page.
Chat → Workflow 全链路问题汇总
基线与口径
feature/integrate@55001e07a。confirmed、OPEN等状态沿用原报告;Audit Full 和旧F-*未逐项提供新版状态字段,本文分别标为“最终报告收录”和“旧报告登记”。结论摘要
当前
/api/chat链路不只是“接口文档不完整”。入口层存在 standalone 匿名暴露、JWT audience fail-open、跨 scope run 查询与 fork;工具层存在审批旁路、默认远程执行、高影响 NyxID mutation 免审批、宿主级 LLM 凭据跨租户读写和 artifact owner 绕过;Workflow 控制面还可经 generic schedule 向任意 Actor 持久注入事件,同 scope 用户也能横向控制其他 member 的 run。可靠性方面,draft-run、fork/materialization、projection handoff 和 dedup 缺口会让 run 永久停住、不可见或重复执行。应先封闭身份与能力边界,再恢复 durable execution/observation,最后统一 authoring、SDK 与文档。Code Audit 补充的组合攻击链
A.
/api/chat接入、鉴权与协议H-04、SEC-004Program.cs:20,45;ChatEndpoints.cs:31-45,1150,1173;ChatRunRequestNormalizer.cs:221H-05、SEC-002、SEC-003ChatQueryEndpoints.cs:15,36,227;ChatEndpoints.cs:689;WorkflowForkRunCommandTargetResolver.cs:48,72,244SEC-006、CB-SEC-002、M-01AevatarAuthenticationHostExtensions.cs:70,143,346;appsettings.json:3;docker-compose.mainnet-cluster.yml:54,101,148/api/chat。 文档给出的 Host、5100 端口和无认证 curl 与实现不符,结果是连接失败或 401/403。DOC-001MainnetHostBuilderExtensions.cs:89,493-518;ChatEndpoints.cs:70-75,1026-1048DOC-002、DOC-010MemoryStream并在结尾再次复制;公开回调在验签前整包缓冲。SEC-005、M-04、M-11、DEBT-020ChatWebSocketProtocol.cs:25,31,48,57;WorkflowWebhookIngressEndpoints.cs:180-184;WorkflowExternalApprovalCallbackEndpoints.cs:662-666B. Chat 执行、工具与数据边界
H-01LlmRunCore.cs:336,355-356;ResponsesSafeToolExecutor.cs:8-17ssh_exec加入 workspace 工具集。 提示注入或工具选择偏差可落到远程 shell。H-02MainnetHostBuilderExtensions.cs:328-332,374-399;NyxIdSshExecTool.cs:43,49,78SEC-013IAgentTool.cs:33;ToolApprovalMiddleware.cs:53;NyxIdApprovalsTool.cs:16,58;NyxIdServicesTool.cs:81ApiKey。SEC-010SettingsController.cs:20,24;FileAevatarSettingsStore.cs:42,68,85,101,142,580;SettingsService.cs:135,161DEBT-028MEAILLMProvider.cs:177-190DEBT-029、DEBT-033WebSearchTool.cs:51-66;WebApiClient.cs:176-180;StreamingToolExecutor.cs:243-280SEC-012WorkflowDocumentExtractToolSource.cs:54,313,428;WorkflowSpreadsheetExtractToolSource.cs:43,202;FileSystemFileArtifactPort.cs:287,290M-05、DEBT-024、DOC-005EventEnvelopeToWorkflowRunEventMapper.cs:31-53,83-97;ScopeServiceEndpoints.cs:2143-2160,2260-2268C. 用 Chat 创建、执行和管理 Workflow
StepCompletedEvent改变量与分支,并持续重复投递。SEC-001ScheduledDispatchEndpoints.cs:442,750,835;WorkflowRunGAgent.cs:1193,2622;WorkflowExecutionKernel.cs:317,377,488Task.Run。 持久化Started后进程退出会让 Chat 永远收不到终态回复;重复 start 又被忽略。F-002、ARCH-006、DEBT-014ChannelWorkflowDraftRunGAgent.cs:80-119;ChannelWorkflowDraftRunInteractionPort.cs:91-116DEBT-017、DEBT-018、DEBT-019、CB-LIF-001WorkflowRunForkCoordinator.cs:32-81;WorkflowRunCommandTarget.cs:306-331;WorkflowRunFinalizeEmitter.cs:55-81H-09WorkflowParser.cs:24,110,204;WorkflowValidator.cs:576-585memberId、workflowId、publishedServiceId被混用。 Chat tool、HTTP、Studio 可能调用错误 service、查询错误 runs 或编辑错误 draft。F-004、ARCH-009、DEBT-022、M-09DefaultMemberPublishedServiceResolver.cs:15-23;ExecutionService.cs:93,108-113;studio/index.tsx:842-897SEC-014ScopeServiceEndpoints.cs:64,75,85,88,92,829,832,1320,1442;AevatarMemberAccessGuard.cs:123,133/studio与 canonical editor 又各自保存、发布、绑定和观察。F-006、ARCH-010、DEBT-046ScopeServiceEndpoints.cs:908,1904-1972;AevatarInvocationDispatcher.cs:328-354;useTeamMemberWorkflowStudio.ts:1682-1733,2395-2453JsonElement。 Chat/Workflow 客户端只能依赖运行时属性名判断,契约漂移无法在编译期发现。DEBT-021IAevatarWorkflowClient.cs:24-37;AevatarWorkflowClient.cs:138,253D. 会让 Workflow 管理结果不可信的底层根因
ARCH-001、DATA-001、DEBT-001、H-07ARCH-002、DATA-005、ARCH-003、DATA-004ARCH-004、DATA-002ARCH-005、DATA-006E. 测试、整改与验收
TEST-001的主流程只断言202 accepted;TEST-004没有浏览器登录 → workflow editor → publish → run → SSE → read model 的真实 E2E;M-15记录当前全量后端和 Console 基线失败。m-alpha/wf-alpha/svc-alpha,从带正确 audience、scope 和 member authority 的请求调用/api/chat,创建并发布 Workflow,消费真实 stream,等待 committed terminal state 与 read model 同步;覆盖进程重启、重复投递、跨 scope query/fork/artifact、同 scope member 横向访问、schedule raw-envelope 注入、超限输入、tool approval 拒绝和 secret 不回显。证据边界与未覆盖项
本文没有重新读取或修改源仓库,也没有执行 PoC、生产连接、数据库写入或外部状态变更。Code Audit 已完成 deep 静态审计,但仍有 109/289 个 HTTP endpoint/action 未逐项验证;模型是否服从间接 prompt、生产 issuer 的 audience 清单、外部代理限流和真实多节点故障恢复均未动态验证。高风险路径主要来自完整静态调用链与既有 build/test 结果,发生率、容量阈值和生产补偿能力尚未量化。
All reactions