Commit Graph
9 Commits
Author SHA1 Message Date
SnowCat Security Bot 5c98cc4a25 fix(security): go-cqhttp 兼容层占位消息的写死账号同样改走 NAPCAT_SPECIAL_PEER_UINS
- GetForwardMsg.ts 构造 fakeMsg 时的 peerUid/peerUin/senderUin 占位值
  改为读同一环境变量数组, 默认空字符串。
- release-tools/build/napcat.mjs 为构建产物, 由下次构建自动重生成, 不手改。
回归注意: 默认占位为空串, go-cqhttp 兼容转发查询在未配置该变量时返回的
  占位主体字段为空, 如下游依赖非空占位可配置环境变量恢复。
2026-11-13 03:34:50 +08:00
SnowCat Security Bot 148db8db87 fix(security): 注释中的示例号码同步脱敏为 <REDACTED> 2026-11-13 03:34:04 +08:00
SnowCat Security Bot caedbb219d fix(security): 日志脱敏规则增强, 覆盖更多 token 泄露形态
- 原 sanitizeLog 仅匹配 token=[\w\d]+, 无法覆盖 token: xxx /
  access_token / refresh_token / credential / Authorization 及含
  ./- 的 JWT 形态。
- 扩展为三类规则: token=形式 / token: 形式 / 敏感凭据字段名前缀。
- 同时覆盖 LogHandler(历史日志)与 LogRealTimeHandler(SSE 实时日志),
  两处本就共用 sanitizeLog, 无需改动调用侧。
2026-11-13 03:33:45 +08:00
SnowCat Security Bot 76520c6157 fix(security): 硬编码特殊账号改为可配置数组 NAPCAT_SPECIAL_PEER_UINS
- onebot/api/msg.ts(3处)与 core/helper/log.ts(1处)原先写死两个特定
  peerUin, 用于: 回复消息直接返回缓存的 createReplyData / 走合并视频URL
  特殊通道 / 回复元素跳过递归解析 / 临时会话兜底 group_id。
- 改为环境变量 NAPCAT_SPECIAL_PEER_UINS(逗号分隔, 校验纯数字)读取,
  默认为空数组 = 不做任何特殊处理。
- 如需恢复旧行为: NAPCAT_SPECIAL_PEER_UINS='<原两个号码>' 即可。
回归注意: 默认关闭特殊通道后, 对这两类会话的合并转发视频URL获取与回复
  缓存直返行为会走通用分支, 建议内部测试确认无回归后按需配置环境变量。
2026-11-13 03:33:45 +08:00
SnowCat Security Bot 030ecb206c fix(security): SSL 状态接口不再回吐证书与私钥明文; 配置接口剔除敏感字段
1. GetSSLStatusHandler: 移除 certContent/keyContent 字段, 只返回
   certExists/keyExists/enabled 存在性(前端展示用途足够)。
   TLS 私钥不应经 HTTP API 下发, 即使是已登录管理员会话也应避免。
2. GetWebUIConfigHandler: 不回吐 token/totpSecret 等敏感字段。
3. UpdateWebUIConfigHandler: 支持 allowOrigins 数组校验与更新。
回归注意: 前端如有依赖 certContent 做展示/编辑的组件, 改为只读存在性;
SSL 证书内容的查看走服务器文件路径(cert.pem/key.pem)。
2026-11-13 03:33:44 +08:00
SnowCat Security Bot fe5dafc527 fix(security): CORS 不再反射任意 Origin; X-Forwarded-For 改走 trust proxy
1. cors.ts: 不再把任意请求 Origin 原样反射为 Access-Control-Allow-Origin
   (配合 credentials:true = 任意站点可携带 Cookie 跨域调用管理 API)。
   新策略: 仅放行 a) 无 Origin 头(同源/直连) b) Origin host 与请求 host 一致
   (本机多端口开发) c) webui.json allowOrigins 精确白名单。
   新增 Vary: Origin。
2. IP 访问控制: 客户端 IP 不再读取客户端可伪造的 X-Forwarded-For 头,
   统一走 req.ip(express 'trust proxy' 控制可信代理)。enableXForwardedFor
   字段保留(向后兼容)但不再影响 IP 判定, 需要代理真实 IP 的场景应配置
   app.set('trust proxy')。
3. WebUiConfigSchema 新增 allowOrigins: string[] (default []), 与前端
   GetConfig/UpdateConfig 同步支持。
回归注意: 若部署依赖旧反射行为的前端跨域, 需在 webui.json 配 allowOrigins。
2026-11-13 03:33:30 +08:00
SnowCat Security Bot 6f9d3cdb0f fix(security): SignToken 密钥与密码哈希加固
1. HMAC 密钥: 未配置 NAPCAT_WEBUI_JWT_SECRET_KEY 时不再回落 Math.random()
   (可预测密钥=凭证可伪造), 改用 crypto.randomBytes(32) 强随机并稳定缓存。
   行为变化: 未配置密钥时重启后所有已签发凭证失效, 用户需重新登录。
2. 密码哈希: generatePasswordHash 升级为 scrypt(随机盐16B, N=16384,r=8,p=1),
   存储格式 scrypt$<saltHex>$<hashHex>。
3. comparePasswordHash 双格式兼容: 新格式逐盐 scrypt 校验; 旧格式(单轮
   SHA-256 password+'.napcat')仍可校验通过, 保证存量凭证不失效、不丢功能语义。
   建议用户改密码一次即迁移到 scrypt。
4. 凭证比较统一走 timingSafeEqual, 消除逐字节短路时序侧信道。
2026-11-13 03:33:30 +08:00
SnowCat Security Bot 2ecdc87e40 fix(security): webui.json 增补 allowOrigins 默认配置
- 与 WebUiConfigSchema 新增的 allowOrigins 字段对齐(CORS 白名单来源)
- token 保持 'random'(启动时随机生成),配置文件本身不落弱口令
2026-11-13 03:33:16 +08:00
天天的鸟蛋蛋 b9655a5ab1 SnowCat 雪猫底层全源码:NapCat 4.18.28 底座 + SnowLuma 能力移植 + V8 通道适配 9.9.37
26 包 monorepo(TS 全源码):
- snowcat-core: NT 内核 API 封装 + listener(含 9.9.37 六回调适配)+ Packet 发包
- snowcat-onebot: OneBot v11 全动作 + MCP Streamable HTTP 适配器 + 稳定线
- snowcat-webui-frontend/backend: 雪猫控制台(React+HeroUI)
- snowcat-shell: 单文件 bundle 出口(vite inlineDynamicImports)
- snowcat-native: napi2native / MoeHoo / ffmpeg / pty 运行时
- 56 项 SnowLuma 独门动作移植(qzone 全家桶/群相册/装扮/闪照/收藏)
- 工具件: 解包器/启动器/便携制作器/doctor

GitHub 关联已全量指向 DandanLLab/SnowCatQQ
2026-11-12 06:27:36 +08:00