受控源码整改清单
先核验密钥,再修复真实 TLS 调用,最后做拒绝错误证书和业务回归。这里的 11 个工作包是组织改动的单位,并不代表 11 个漏洞。
2 个仓库私钥文件需要核验与迁出 Git
2 个仓库环境文件凭据线索待确认
7 个仓库TLS 校验关闭点待逐仓修复
工作顺序:确认凭据是否有效 → 轮换并准备部署路径 → 取消跟踪;TLS 先核验端点证书,再改代码并测试。不要直接删除运行文件或一次性批量替换。
11 个工作包
| 编号 | 仓库 | 类别 | 范围 | 要改的内容 | 完成标准 | 开始前门禁 |
|---|---|---|---|---|---|---|
| SEC-01 | store | 私钥文件入库 | 11 个受跟踪 PEM;支付模板通过 application/common/model/PaymentTemplate.php 动态读取 data/payment/<方式>/<店铺> 目录。 | 先由支付负责人确认这两份不同的私钥内容是否仍有效。若有效,安排微信支付侧轮换;让部署从受控密钥目录提供证书文件,保证运行时路径可用;随后停止 Git 跟踪私钥并给运行目录加入忽略规则。历史访问与清理另行评审。 | 新密钥支付、退款、回调验签均通过;旧密钥撤销;当前 HEAD 不再跟踪私钥;部署能稳定读取新证书;仓库中不出现新私钥。 | 必须先确认商户身份、证书现用状态和支付回归环境;不能先删运行文件。 |
| SEC-02 | tnxl5.0_pc | 私钥文件入库 | application/base/private.pem;当前源码未发现对文件名 private.pem 的直接字面引用。 | 先核实它是否为现用签名密钥及是否通过动态路径加载。若现用,轮换并迁到受控密钥位置、停止 Git 跟踪;若已废弃,确认无运行依赖后从当前版本撤下,并评审历史访问风险。 | 签名或解密流程用新配置通过回归;当前 HEAD 不跟踪私钥;旧密钥状态有负责人回读记录。 | 用途未确认前不删除,也不声称已经泄露现用凭据。 |
| SEC-03 | ai_api | 受跟踪环境文件 | 18 个受跟踪 .env 文件;56 处疑似已填入凭据的字段赋值。 | 由配置负责人逐文件区分占位值和真实现用值。真实凭据先轮换,改为部署环境变量或受控密钥注入;仓库仅保留无密钥模板,停止跟踪真实环境文件。同步核对各客户环境的部署映射。 | 各目标环境启动及关键接口回归通过;当前 HEAD 不含真实凭据;模板能让新部署明确填写所需字段;旧凭据已撤销或轮换。 | 不能直接批量替换或删除 18 个文件;客户环境映射与负责人待核对。 |
| SEC-04 | food_safety | 受跟踪环境文件 | 2 个运行配置 .env 文件有 7 处疑似凭据赋值;1 个 .env.example 还有 1 处需核验的示例值。 | 核对根目录及 gateway-service 的实际部署配置。真实现用值轮换并迁到受控注入;只留下无密钥模板,同时检查镜像构建和部署包是否还包含旧值。 | 网关、数据库和相关应用在目标环境启动通过;仓库与新构建产物不含真实凭据;旧值轮换有回读。 | 先区分示例、测试和现用值;不要在报告或工单中复制明文。 |
| SEC-05 | store | 关闭 TLS 校验 | 支付/一卡通及通用 HTTP、硬件请求;7 个文件、9 行设置。 | 优先修复 application/common/service/onecard 的 HTTP 客户端,再逐个处理通用和硬件调用;开启证书链与主机名校验,配置可信 CA,保留明确失败处理。 | 一卡通支付/取令牌与相关外部接口在有效证书下成功;错误证书、错误主机名均被拒绝;老设备兼容回归通过。 | 先核验目标实际使用 HTTPS/TLS、证书和历史设备兼容;HTTP 路径上的设置仅清理无效代码,不按漏洞处置。 |
| SEC-06 | ai_api | 关闭 TLS 校验 | 一卡通、微信、物流、健康设备及通用网络库;10 个文件、15 行设置。 | 优先修复 PaymentClient 和公共 Network/HTTP 帮助方法;对不同服务分别确认 CA 与主机名,移除关闭校验的默认分支。 | 支付、令牌、微信/物流/设备接口正常;失效证书和错误主机名被拒绝;失败不变成成功响应。 | 先核验目标实际使用 HTTPS/TLS、证书和历史设备兼容;HTTP 路径上的设置仅清理无效代码,不按漏洞处置。 |
| SEC-07 | tnxl5.0_pc | 关闭 TLS 校验 | Gymware、OuraRing、Vald 设备服务和通用 HTTP;5 个文件、10 行设置。 | 逐个供应商确认证书链;把关闭校验改为使用可信 CA 或证书固定,并修复通用 helper 的默认值。 | 各供应商有效连接通过;证书失效或主机名不符时拒绝;设备同步回归通过。 | 先核验目标实际使用 HTTPS/TLS、证书和历史设备兼容;HTTP 路径上的设置仅清理无效代码,不按漏洞处置。 |
| SEC-08 | sxtyj | 关闭 TLS 校验 | 同步、视频、统一登录与用户令牌;4 个文件、8 行设置。 | 优先检查统一登录与令牌请求,随后修复 SyncBase/VideoBase;开启 peer 和 host 校验,配置真实可信 CA。 | 登录/令牌/同步/视频接口在有效证书下通过,错误证书被拒绝,登录失败路径可恢复。 | 先核验目标实际使用 HTTPS/TLS、证书和历史设备兼容;HTTP 路径上的设置仅清理无效代码,不按漏洞处置。 |
| SEC-09 | datacenter | 关闭 TLS 校验 | Polar、Firstbeat 与通用 HTTP;3 个文件、6 行设置。 | 先核实远端设备和厂商端点,再在三个调用模块中启用正确 CA/主机名校验;避免把兼容开关做成生产默认。 | 设备数据同步在有效证书下通过;错误证书拒绝;任务失败可观察、可重试。 | 先核验目标实际使用 HTTPS/TLS、证书和历史设备兼容;HTTP 路径上的设置仅清理无效代码,不按漏洞处置。 |
| SEC-10 | ydysskz | 关闭 TLS 校验 | 通用 HTTP、硬件和餐饮请求;3 个文件、5 行设置。 | 修复 common.php 的公共请求函数及两处调用点,核对自签名设备证书的信任链。 | 正常设备与接口可用;不可信证书被拒绝;订餐和硬件业务回归通过。 | 先核验目标实际使用 HTTPS/TLS、证书和历史设备兼容;HTTP 路径上的设置仅清理无效代码,不按漏洞处置。 |
| SEC-11 | food_safety | 关闭 TLS 校验 | MySQL 连接及迁移、等待脚本;4 个文件、9 行设置。 | 将 db.service.ts 与迁移/等待脚本里的 rejectUnauthorized:false 改为可验证的数据库 TLS 配置,提供可信 CA 与服务端身份;各脚本保持一致。 | 服务启动、迁移与等待脚本连接成功;无效 CA 和错误主机名被拒绝;数据库初始化流程回归通过。 | 先核验目标实际使用 HTTPS/TLS、证书和历史设备兼容;HTTP 路径上的设置仅清理无效代码,不按漏洞处置。 |
文件级定位
路径和行号来自本次快照,不含密钥值。修改前需再次核对分支与 HEAD。
| 工作包 | 仓库 | 文件 | 命中行 |
|---|---|---|---|
| SEC-01 | store | data/payment/wechat/10001/apiclientCert-ec25175e.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-0a9a7bb7.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-175f76fe.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-480aab85.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-53afb04b.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-5cd033b6.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-730f1613.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-aacf4b21.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-c0557b15.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-cd0fe6a9.pem | 1 |
| SEC-01 | store | data/payment/wechat/10001/apiclientKey-d124b6e4.pem | 1 |
| SEC-02 | tnxl5.0_pc | application/base/private.pem | 1 |
| SEC-03 | ai_api | .env.dev | 文件级 |
| SEC-03 | ai_api | .env.prod | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_bzjk | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_cqhw | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_csfzx | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_guoxin | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_hntzy | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_jc | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_jsr | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_jx206 | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_lds | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_rdfz | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_saidi | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_sanquan | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_sh | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_stzc | 文件级 |
| SEC-03 | ai_api | .env.prodaizhct_sxjm | 文件级 |
| SEC-03 | ai_api | .env.test | 文件级 |
| SEC-04 | food_safety | .env | 文件级 |
| SEC-04 | food_safety | services/gateway-service/.env | 文件级 |
| SEC-04 | food_safety | services/gateway-service/.env.example | 文件级 |
| SEC-05 | store | application/common.php | 197, 224, 374 |
| SEC-05 | store | application/common/service/onecard/ApiClient.php | 167 |
| SEC-05 | store | application/common/service/onecard/TokenProvider.php | 120 |
| SEC-05 | store | application/p/controller/HardWareCape.php | 384 |
| SEC-05 | store | application/p/logic/Api.php | 5600 |
| SEC-05 | store | application/p/logic/Cater.php | 810 |
| SEC-05 | store | application/p/logic/User.php | 630 |
| SEC-06 | ai_api | app/api/service/Plate.php | 94 |
| SEC-06 | ai_api | app/common.php | 523, 560 |
| SEC-06 | ai_api | app/common/Healthkit.php | 464, 498 |
| SEC-06 | ai_api | app/common/UserApi.php | 124 |
| SEC-06 | ai_api | app/common/library/Download.php | 57 |
| SEC-06 | ai_api | app/common/library/Network.php | 45, 79 |
| SEC-06 | ai_api | app/common/library/express/provider/driver/Aliyun.php | 74 |
| SEC-06 | ai_api | app/common/library/express/provider/driver/Kd100.php | 81 |
| SEC-06 | ai_api | app/common/library/wechat/WxBase.php | 89, 116, 151 |
| SEC-06 | ai_api | app/common/service/onecard/PaymentClient.php | 121 |
| SEC-07 | tnxl5.0_pc | application/base/GymwareBase.php | 32, 58 |
| SEC-07 | tnxl5.0_pc | application/base/OuraRingBase.php | 164, 195 |
| SEC-07 | tnxl5.0_pc | application/base/ValdBase.php | 41, 65 |
| SEC-07 | tnxl5.0_pc | application/common.php | 343, 370 |
| SEC-07 | tnxl5.0_pc | application/p/logic/Equipment.php | 1706, 1707 |
| SEC-08 | sxtyj | application/base/SyncBase.php | 18, 19 |
| SEC-08 | sxtyj | application/base/VideoBase.php | 30, 31 |
| SEC-08 | sxtyj | application/p/logic/Login.php | 57, 227 |
| SEC-08 | sxtyj | application/p/logic/User.php | 134, 171 |
| SEC-09 | datacenter | application/api/logic/Polar.php | 505, 536 |
| SEC-09 | datacenter | application/base/FirstbeatBase.php | 41, 66 |
| SEC-09 | datacenter | application/common.php | 250, 307 |
| SEC-10 | ydysskz | application/common.php | 182, 205, 343 |
| SEC-10 | ydysskz | application/p/controller/HardWareCape.php | 384 |
| SEC-10 | ydysskz | application/p/logic/Cater.php | 435 |
| SEC-11 | food_safety | services/gateway-service/scripts/run-migrations-with-env.js | 30 |
| SEC-11 | food_safety | services/gateway-service/scripts/run-migrations.js | 44, 57, 77, 90 |
| SEC-11 | food_safety | services/gateway-service/scripts/wait-for-db.js | 35, 43 |
| SEC-11 | food_safety | services/gateway-service/src/modules/db.service.ts | 31, 59 |
仍需调查的线索
- 333 条原始规则命中包含重复和误报,不逐条建单。
- 第一方源码 10 处 shell 执行 API、49 处疑似硬编码赋值,先追踪数据流和权限,再确定是否修改。
- OCR 仅抽样 3 个文件、6 条建议;其中 2 条 TLS 建议已包含在本清单。
验收底线
- 密钥确认和轮换先于撤销 Git 跟踪;业务运行文件保留到新方案验收。
- TLS 同时验证有效证书成功、错误证书拒绝,并做关联业务冒烟。
- 按仓库独立任务和分支执行,完整六阶段审计仍需满足强制沙箱条件。