From 113eaec32f2ba1238dbd46a01f5cb99333e9b204 Mon Sep 17 00:00:00 2001 From: Rogee Date: Sat, 10 Oct 2026 05:55:38 +0800 Subject: [PATCH] docs: record case-insensitive URL privacy and fixed deployment evidence --- AGENTS.md | 2 ++ ...her-agent-logrus-debug-deployment-20261009.md | 16 ++++++++++++++-- docs/logging.md | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index ee2c2bc..d4dfb48 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -81,6 +81,8 @@ - **当前日志与抓包规则**:Dispatcher、Agent 的 `--debug/-D` 仅开启 Logrus 详细收发日志;普通模式记录自身关键工作流程、方向、身份、结果、耗时及错误。HTTP/MQ/RPC 正文只在 Debug 中记录安全副本,禁止密钥、Token、签名 URL、完整提示词/对话/音频及原始 SIP;不截断其余可读业务 JSON,不修改发送数据、不吞错误。Agent 原 `--debug` 抓包含义移除,逐通外部抓包凭证检查改为独立 `--capture`,不足时仍失败关闭。独立 `sip-call` 的 Debug 抓包参数不变。详细规则见 [`docs/logging.md`](docs/logging.md)。 +- **2026-10-10 05:51 Logrus URL scheme最终现场**:第十次审查的大写HTTPS签名URL在 `cd3fe5d` 根因修复,共享urlInText按标准忽略HTTP/HTTPS/WS/WSS scheme大小写,不做签名参数或主机特判;无认证/query/fragment的普通URL原值保留。十二大小写×两模式×实际HTTP text/JSON与error/detail/message先失败后通过,签名query排除/真实诊断保留/原bytes相等,前九轮回归保持。最终完整检查/发布检查/Python21通过,业务覆盖率72.2%。Agent2903856/D2903867两实际SHA256 `971a5f674ad1d75a08f6023ce962f181212e34913b2d0ac1d8f250d138c6b0b8`,enabled+active/running、0重启、Debug无Capture;Asterisk777461不变、通道/tcpdump0。14HTTP/各8RPC实际安全正文核验,现场URL检查同样忽略scheme大小写;无现场新signed URL/form/非JSON/MQ业务/呼叫/真实恢复故障,不代签这些或生产;无reset/迁移/抓包/投递/额外AI OSS。权威源码/最终证据仍 `.local/logging-isolated` main,根并行修改保留;见 [`docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md`](docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md)。 + - **2026-10-10 05:27 Logrus 单字段表单最终现场**:第九次审查的单字段URL编码敏感字段在 `1202b9a` 根因修复:一对/多对字段统一解码分类,不要求&,接入cleanString覆盖两模式标量;bare flag是空值字段,坏key/value独立INVALID_FORM标记,不回原正文或撤销此前脱敏。七形态×两模式真实HTTP/标量先失败后通过,原请求响应bytes完全相等、诊断保留;前八轮回归保持。最终完整检查/发布检查/Python21通过,业务覆盖率72.2%。Agent2903610/D2903622两实际SHA256 `1fcb84b17d6459c592021e224b4b5e622fcfde115f8a74f334c07261193f24f8`,enabled+active/running、0重启、Debug无Capture;Asterisk777461不变、通道/tcpdump0。14HTTP/各8RPC实际安全正文核验;无现场form/非JSON/MQ业务/呼叫/真实恢复故障,不代签这些或生产;无reset/迁移/抓包/投递/额外AI OSS。权威源码/最终证据仍 `.local/logging-isolated` main,根并行修改保留;见 [`docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md`](docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md)。 - **2026-10-10 04:53 Logrus 引号标签最终现场**:第八次审查的带引号内容标签在 `a66e111` 根因修复:引号/非引号标签与诊断投影共用词法器和字段名解码归一化;JSON Unicode转义经标准解码,非法引号字段尾部保持隐藏;完整嵌入JSON交既有结构脱敏,不吞相邻诊断。八种引号/转义形态×两模式error/detail/message/HTTP先失败后通过,授权JSON诊断保留及前七轮回归保持。最终完整检查/发布检查/Python21通过、业务覆盖率72.1%。Agent2903352/D2903363两实际SHA256 `24404b7f5e0bc41d12887fcd54a5128bf36b62bda7ce3a8888fc0e3807578b84`,enabled+active/running、0重启、Debug无Capture;Asterisk777461不变、通道/tcpdump0。14HTTP/各8RPC实际安全正文核验;无现场非JSON/MQ业务/呼叫/真实恢复故障,不代签这些或生产;无reset/迁移/抓包/投递/额外AI OSS。权威最终源码/证据仍 `.local/logging-isolated` main,根并行修改保留;见 [`docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md`](docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md)。 diff --git a/docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md b/docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md index b071cb7..92d1b1e 100644 --- a/docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md +++ b/docs/evidence/dispatcher-agent-logrus-debug-deployment-20261009.md @@ -1,10 +1,22 @@ # Dispatcher / Agent Logrus Debug 实现与固定环境部署 -## 最终已安装版本:1202b9a(2026-10-10 05:27 CST 现场) +## 最终已安装版本:cd3fe5d(2026-10-10 05:51 CST 现场) + +第十次审查的大写HTTPS签名URL已根因修复:共享 `urlInText` 按URL标准忽略scheme大小写,不做示例签名字段或固定主机特判。HTTP/HTTPS/WS/WSS大小写混合均进入既有URL解析与query/userinfo/fragment隐藏;无认证/query/fragment的普通URL保留原值。 + +新 `TestURLSchemeCaseCannotExposeSignedPartsOnAnyLoggingPath` 十二scheme大小写写法×两模式×text/JSON,通过实际HTTP request/response观察器和error/detail/message验证完整签名与query排除、真实失败原因/安全路径/task_id/status保留、无认证/query/fragment的普通URL原值保留,服务器收到与客户端读到原始bytes相等。先失败复现再实现通过;前九轮表单/引号标签/嵌入JSON诊断/持续归属/大正文不截断/认证PEM等回归全部保持。 + +最终源码 `cd3fe5d00a8fed5b4b7d14976ef3ee7751deb7d0` 已推送核对main,从干净固定提交构建安装。最终make check/release-check-local(格式/当前合同Proto/vet/全包race/build/实际隔离RabbitMQ HTTPS mTLS及现有验收对照)、Python21通过,业务覆盖率 **72.2%**;记录 `.local/urlcase-final-check.log`、`.local/urlcase-coverage.log`、`.local/urlcase-release-check.log`。 + +2026-10-10 05:51 CST实际现场:Agent `2903856`/Dispatcher `2903867` 两实际SHA256 `971a5f674ad1d75a08f6023ce962f181212e34913b2d0ac1d8f250d138c6b0b8`,enabled+active/running、0重启、实际Debug无Capture;Asterisk `777461` 不变,通道/tcpdump0。严格登记SSH指纹,关D新准入并只读排除活动/未知执行/恢复阻断才部署;无reset/迁移/Asterisk重启/抓包/独立拨号/主动投递/额外AI OSS。 + +实际14HTTP请求响应200、两端各8DebugRPC正文、仅LogrusJSON、0error/redaction_error/已观测敏感字段签名URL泄漏、13隐藏标记。现场URL检查也明确忽略scheme大小写。现场无新增signed URL/form/非JSON正文/MQ业务/呼叫/真实恢复故障,新URL反例仅本地实际HTTP断言,不代签这些或业务/生产;独立probe仍saas_pending/business_ready=false。私密摘要本机 `.local/logging-deployment/urlcase-{preflight,deploy,field-summary}.json`(文件0600目录0700)。源码/最终证据权威仍干净隔离main `.local/logging-isolated`,根并行修改保留;以下旧版只历史。 + +## 上一版部署记录:1202b9a(2026-10-10 05:27 CST 历史) 第九次审查的合法单字段URL编码表单泄漏已根因修复:`redactForm` 不再要求 `&`,一对与多对字段使用同一标准百分号解码和敏感分类,并接入共享 `cleanString` 覆盖普通/Debug error/detail,不仅HTTP正文。裸flag是合法空值字段;逐key/value解码失败明确以 INVALID_FORM 标记隐藏该字段,不回退整个原始表单、不撤销此前脱敏,其余真实诊断字段继续保留。只处理日志副本,传输字节不改。 -新 `TestPercentEncodedSingleAndMixedFormsKeepWireBytesAndHideSecrets` 七种单字段token/messages、多字段、坏key、坏value、bare flag、坏字段在敏感字段之前/之后形态×两模式,通过真实HTTP请求/响应观察器与error/detail验证秘密排除、task_id/status保留及INVALID_FORM可见,实际服务器收到和客户端读到的原始bytes完全相等。先运行失败复现,再实现通过;此前全部JSON相邻诊断、quoted标签/Unicode名字、持续归属、字段分类、>150KB不截断与认证/PEM等回归保持。 +新 `TestPercentEncodedSingleAndMixedFormsKeepWireBytesAndHideSecrets` 七种单字段token/messages、多字段、坏key、坏value、bare flag、坏字段自身携带敏感值形态×两模式,通过真实HTTP请求/响应观察器与error/detail验证秘密排除、task_id/status保留及INVALID_FORM可见,实际服务器收到和客户端读到的原始bytes完全相等。先运行失败复现,再实现通过;此前全部JSON相邻诊断、quoted标签/Unicode名字、持续归属、字段分类、>150KB不截断与认证/PEM等回归保持。 最终源码 `1202b9acc96e31d0dc2bd0a7e80e22e0de8f5ea6` 已推送核对main,从干净固定提交构建安装。最终make check/release-check-local(格式/合同Proto/vet/全包race/build/实际隔离RabbitMQ HTTPS mTLS及现有验收对照)、Python21通过,业务覆盖率 **72.2%**;记录 `.local/form-final-check.log`、`.local/form-coverage.log`、`.local/form-release-check.log`。 diff --git a/docs/logging.md b/docs/logging.md index 73efc2e..546d2dc 100644 --- a/docs/logging.md +++ b/docs/logging.md @@ -15,7 +15,7 @@ Agent 的抓包开关独立为 `--capture`:只在显式开启时要求 `AGENT_ ## 记录内容 -- HTTP:请求开始、实际被读取的可读请求/响应正文(JSON、text/*、XML、form)、响应状态、正文读取结果。认证头不记录;URL 的认证、查询和 fragment 部分删除。SDK/native ARI 的 HTTP 客户端使用同一观察输出,保留 TLS、超时、重定向和 WebSocket 升级行为。 +- HTTP:请求开始、实际被读取的可读请求/响应正文(JSON、text/*、XML、form)、响应状态、正文读取结果。认证头不记录;URL 的认证、查询和 fragment 部分删除。HTTP/HTTPS/WS/WSS scheme 按标准忽略大小写;自由文本和 JSON 字符串中的无认证/query/fragment普通URL原值保留。SDK/native ARI 的 HTTP 客户端使用同一观察输出,保留 TLS、超时、重定向和 WebSocket 升级行为。 - MQ:实际入站/出站字节;接收、校验、处理、ACK/NACK/Reject、发布及 broker confirm。`publisher_confirmed` 只证明 RabbitMQ 确认,记录 `saas_processed=false`,不能据此声称 SaaS 已处理。 - RPC:实际边界的 protobuf 请求/响应投影,明确 `wire_encoding=protobuf`。冻结配置中的 `*_json` 字节展开为 JSON,其余字节仅记录长度;不是业务内部 CallSpec,也不声称 JSON 是 protobuf 原始线格式。客户端响应收到和服务端响应准备完成分别记录,服务端返回不能冒充对端收讫。 - 业务流程:持久接纳/重复忽略、号码拒绝、未来 issued_at/容量/准入等待、选线、预占及拨号前取消、请求执行、交付未知保留占用、Agent 排程/执行/结束、结果回报及恢复。拒绝和等待不是无日志的返回;节点失败记录具体原因,而不是只有错误类型。