背景
#499 审计拆解项。HTTP 服务缺少 Origin/Host 边界校验。Basic 认证下浏览器会自动携带凭据,恶意网页可跨站触发任务提交/取消/订阅;绑定非 loopback 时无 Host 校验,存在 DNS rebinding 风险。
src/opencode_a2a/server/middleware.py:90 bearer_auth:仅校验 Authorization,放行 OPTIONS 与 agent card well-known 路径,无 Origin/Referer/Host 校验。
src/opencode_a2a/config.py:231:A2A_HOST 默认 127.0.0.1,可配置 0.0.0.0。
暴露面与后果
- Basic 认证 + 浏览器 → CSRF(SendMessage/CancelTask/subscribe);
- 非 loopback 绑定 → DNS rebinding 绕过浏览器同源模型;
- 可被跨站触发的任务操作面。
验收标准
基线快照
背景
#499 审计拆解项。HTTP 服务缺少 Origin/Host 边界校验。Basic 认证下浏览器会自动携带凭据,恶意网页可跨站触发任务提交/取消/订阅;绑定非 loopback 时无 Host 校验,存在 DNS rebinding 风险。
证据(main @ adf2a9b)
src/opencode_a2a/server/middleware.py:90bearer_auth:仅校验 Authorization,放行 OPTIONS 与 agent card well-known 路径,无 Origin/Referer/Host 校验。src/opencode_a2a/config.py:231:A2A_HOST默认 127.0.0.1,可配置 0.0.0.0。暴露面与后果
验收标准
A2A_PUBLIC_URL同源,不匹配返回 4xx基线快照
adf2a9b68c42b142640b1b61d14baad66591e15b(main)