From 390077b224b17fe0135418497a7a6fa0cb05c4ff Mon Sep 17 00:00:00 2001 From: xuans Date: Thu, 1 Oct 2026 22:50:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=85=AC=E5=BC=80=E9=87=8D?= =?UTF-8?q?=E7=BD=AE=E8=B4=A6=E6=88=B7=E6=9E=9A=E4=B8=BE=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8F=8A=E5=8F=8C=E6=9C=BA=E5=AE=89=E5=85=A8=E5=A4=8D=E6=A0=B8?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Linux生产流程测试记录.md | 40 ++++++++++++++++++++++++++++ doc/Scert整改任务执行清单.md | 11 ++++++++ doc/Scert整改合并优化清单.md | 12 +++++++++ 3 files changed, 63 insertions(+) diff --git a/doc/Linux生产流程测试记录.md b/doc/Linux生产流程测试记录.md index 3bb7bca..c3a1389 100644 --- a/doc/Linux生产流程测试记录.md +++ b/doc/Linux生产流程测试记录.md @@ -1,5 +1,45 @@ # Linux 生产流程测试记录 +## 公开密码重置账户枚举修复与双机复核(2026年10月1日22:50,北京时间) + +### 范围与开发 + +本轮沿用Linux范围,保留现有数据执行升级与专项安全复核,不是最终清库首次验收。未触发验证码、发信或密码变更,未启动临时重置入口。运维仍为密码SSH/SCP及严格主机身份校验,未创建辅助验收脚本。 + +- 修改前检查点df0be7f已提交推送;修复提交51ab0a6d0c6853a68e36cbfb7918988d352ba8d9已推送。 +- 新增password_reset_guidance.go,公开路由改为showPasswordResetGuidance。仅校验请求格式、标识格式及初始化状态,不查询或比较账户;使用独立结构返回title、description、action,设置Cache-Control: no-store。历史分类处理器未绑定路由。 +- 新增七类已知/未知用户名、邮箱、大小写、首尾空格的一致性回归及输入边界测试;新测试在旧实现下实际失败,修复后通过。保留严格JSON、体积和初始化边界,不以泛化错误掩盖格式错误。 +- 本地go test ./...、go vet ./...、go build ./...通过;重置查询专项go test -race通过;前端新增通用响应兼容测试,npm test共242项通过。未把条件跳过项算作实库验收。 + +### 正式发行及安装 + +- 使用固定正式构建入口build/build-release.ps1,仅选择linux-amd64;干净源码克隆构建,source_dirty=false,发布路径检查通过。 +- 归档:build/release-20261001-public-reset/Scert-20261001-V0.1.0-linux-amd64.tar.gz。 +- 归档SHA-256:3460577ee530350479c1461dbdcf44a8a376c6904ab2ce5cd121c7e823135d54。 +- 主程序SHA-256:79799ebb6ceebd3819b5285baa8333017fe050848ef6f77b7eed693ba6ef5cf8。 +- 双机密码上传到/tmp/scert-51ab0a6-linux-amd64.tar.gz,解包到/tmp/scert-51ab0a6-release,校验归档及包内SHA256SUMS全部通过。按正式安装器要求仅停止Scert相关服务和存储socket,安装并重新启动;双机upgrade_exit=0,主程序摘要相同。 +- 安装器自身保留的发布文件事务:第一台/scert/.install-v9Ef2X3w,第二台/scert/.install-O5wFWo5q。未额外备份业务数据,未删除安装现场。 +- 第二台MainPID=176134、NRestarts=0;第一台MainPID=2111996、NRestarts=0。第一台xmail.service保持active、MainPID仍1319,未重启Nginx或邮件服务。 + +### 无凭据公开接口及页面 + +- 操作前检查前后端健康和Scert专用MCP监听;沿用项目独立上下文,忽略缓存重新加载页面,不使用缓存响应作为证据。 +- 浏览器以credentials=omit、cache=no-store请求正式公开接口,分别提交配置中的用户名、邮箱、未知用户名、未知邮箱及大小写变体。五者均HTTP200、Cache-Control: no-store,响应正文逐字一致,仅含通用标题、说明及contact_administrator动作。 +- 只读核对第二台配置,确认测试使用的已知用户名和邮箱均与真实配置相符;不以未知邮箱冒充已知邮箱测试。 +- 第一台作为独立公网客户端正常DNS、严格TLS访问第二台,四类标识均HTTP200、Content-Length=203、no-store、无Set-Cookie,正文相同。 +- 浏览器实际填写已知账号并点击查询,页面仅显示“密码重置”与通用安全说明、重新输入按钮;没有角色识别、维护命令、重置链接或会话凭据。 +- 第一台本机原有IP自签证书通过密码SSH读取核对,显式信任其证书,并按证书IP名称将连接指向回环8443;健康返回ready,真实配置用户名、邮箱及两类未知标识的响应SHA-256均为eaa3acf56700ce902fff1f1e72f65d7bda018c0bd7138163878117b548f76fe7。仅计作本机接口复核,不冒充公网受信管理入口验收。 +- 过程中首次读取使用jq失败(目标机未安装),随后直接访问127.0.0.1因证书名称不符失败;这些失败不计通过,空响应摘要不作证据。改用现有Python只读配置、正确证书名称和连接地址后复核成功,未关闭TLS校验、未安装额外工具。 + +### 安全收尾及结论 + +- 双机8443、3306、33060仍只监听127.0.0.1;双方互探对方公网三个内部端口,六次退出124超时。未新增外部业务端口。 +- 双机nginx -t通过;第二台管理上游proxy_ssl_verify on、SNI正确;管理首页和密码重置页200,/readyz返回ready,未开启的/reset返回404。 +- 第二台任务仍为失败17、成功29,无新增部署任务;两条历史recovery_required事务及JSON null恢复证据保持原状,未改库或释放历史锁。 +- [✓] 本轮公开查询账户枚举漏洞经源码回归、正式发行及实机复核通过,更新22:31的未修复状态。 +- [!] 实际系统通知发信、超级管理员密码重置全流程、历史事务与其他负向恢复、MySQL5.7及完整Web矩阵、最终清库首次流程仍未全部通过;总体生产验收不放行。 + + ## 公开密码重置只读安全复核(2026年10月1日22:31,北京时间) - 当前部署候选源码仍为 00aeedc;上一轮进度文档已通过 94c674d 提交推送。本轮为保留现场的只读检查,不是清库首次验收。 diff --git a/doc/Scert整改任务执行清单.md b/doc/Scert整改任务执行清单.md index 8414cac..7b261f5 100644 --- a/doc/Scert整改任务执行清单.md +++ b/doc/Scert整改任务执行清单.md @@ -1,5 +1,16 @@ # Scert 整改任务执行清单 +## 当前有效安全任务结果(2026年10月1日22:50) + +- [✓] 需求确认:所有合法用户名、邮箱均使用同一公开处理提示,不披露账号存在性、角色、命令、重置地址或凭据。 +- [✓] 开发:公开路由绑定独立通用提示处理器,不执行历史账户分类逻辑;使用独立响应结构,只输出标题、说明、处理动作,并设置no-store。 +- [✓] 回归:七类标识一致性、输入格式、未知字段、尾随JSON、超大请求和初始化边界通过;旧实现实际失败。后端全量测试、vet、build及重置专项race通过,前端242项通过。 +- [✓] 发行:源码51ab0a6已推送,source_dirty=false的正式Linux归档通过密码SSH安装双机;归档和包内摘要全部校验通过。 +- [✓] 实机:第二台公网无凭据五类标识响应相同;第一台独立访问同一公网接口四类标识响应相同;第一台本机严格TLS四类标识响应摘要相同。页面不显示账号身份或重置链接。 +- [✓] 收尾:服务健康、严格TLS、内部端口、任务保留、历史事务、邮件服务均复核;未新增辅助验收脚本、未清库或改密码。 +- [!] 该账户枚举子项关闭,不代表系统通知、实际密码重置、其余P0-10、完整数据库Web流程或最终生产门禁通过。 + + ## 当前有效安全任务(2026年10月1日22:31) - [✓] 只读复核当前正式候选:内部端口回环、严格上游 TLS、临时重置入口关闭及最终部署事务已提交。 diff --git a/doc/Scert整改合并优化清单.md b/doc/Scert整改合并优化清单.md index 96cccdb..2617e18 100644 --- a/doc/Scert整改合并优化清单.md +++ b/doc/Scert整改合并优化清单.md @@ -1,5 +1,17 @@ # Scert 整改、合并与优化清单 +## 当前有效整改进度(2026年10月1日22:50,公开查询账户枚举修复) + +本节更新22:31所记账户枚举阻塞;只关闭该具体漏洞,不扩大为密码重置全流程或总体生产验收通过。 + +- [✓] 公开密码重置查询不再枚举身份:正式路由改用独立通用提示处理器,只验证输入格式,不查询账户、不返回账户存在性或角色;响应禁止缓存,不创建会话、不发信、不改密码。 +- [✓] 测试闭环:新增七类标识一致响应及输入边界回归,旧实现实际失败、修复后通过;后端全量测试、静态检查、构建及重置专项竞态测试通过,前端242项通过。 +- [✓] 实机复核:干净源码51ab0a6构建正式Linux包,密码SSH双机安装通过;公网无登录请求的五类标识响应正文完全相同,页面只显示通用提示;第一台本机四类标识严格TLS响应摘要相同。 +- [✓] 安全收尾:双机程序哈希一致、服务正常,内部端口仅回环,六次跨机公网探测均超时;管理上游保持严格TLS,临时重置入口404,第一台邮件服务未重启;任务数量和历史待恢复事务未改。 +- [~] 原清单继续:P0-10剩余负向窗口、历史恢复证据处置、完整数据库Web流程等仍需推进。 +- [!] 系统通知SMTP与真实密码重置闭环、第一台公网平台限制、MySQL5.7及最终清库首次生产验收仍未完成;总体生产验收不放行。 + + ## 当前有效安全复核(2026年10月1日22:31) - [!] 新增上线阻塞:公开密码重置查询仍泄露账户是否为超级管理员。使用不携带登录凭据的请求实测,已知账户返回 super_admin,未知账户返回 unknown;此前仅移除维护命令和重置入口,不等于消除账户枚举风险。此项尚未修复,不得标为安全验收通过。