Skip to content

部署前安全核验清单 ​

页面导读 ​

本清单用于准备把 FastBee 开源版、商业版或集群版部署到公网或生产环境的团队。官方维护代码已包含相应修复,但实例是否安全仍取决于实际代码、配置和权限;首个正式发布版本待核验的项目见安全公告与漏洞修复。

默认账号密码用于首次部署,用户可以在部署后自行修改,现有部署流程不变。公网或生产环境应在对外开放前完成口令与权限检查。

1. 开站前六项红线 ​

  • [ ] 修改默认口令:平台 admin、MySQL、Redis、EMQX 控制台不得继续使用默认或弱口令。任一默认口令仍可登录即未通过。
  • [ ] 关闭或加固 go-view SQL 直连接口:不需要 GoviewProjectDataController#executeSql 时禁用;需要时补登录和权限校验。匿名调用可执行 SQL 即未通过。
  • [ ] 清理演示账号权限:演示角色不得拥有 monitor:cache:list;商业版 V2.7.0 及以后,fastbee 游客角色使用「仅本人数据权限」。
  • [ ] 限制 SIP 暴露:不使用视频 SIP 接入时关闭并限制 5060/5061,删除演示设备和默认凭据。
  • [ ] 关闭不需要的自助注册:缩小低权限账号来源面;确需开放时同步完成权限和审计验收。
  • [ ] 下载接口鉴权并记录日志:不需要的接口在网关和应用层同时禁用,保留的接口必须有认证、权限校验和访问日志。

2. 逐项核验 ​

2.1. 默认口令与初始账号 ​

  • 检查位置:初始化配置、各组件控制台和部署文档中的初始账号。
  • 通过判定:初始账号仅用于首次部署,公网或生产实例已全部改为高强度独立口令。
  • 修复动作:由部署用户自行修改,不改变官方提供的默认部署流程。
  • 回归验证:新口令可正常登录,旧默认口令失效,业务组件连接正常。

2.2. 演示账号逻辑缺陷 ​

  • 检查位置:角色管理和演示账号所属角色的权限树。
  • 通过判定:演示角色没有 monitor:cache:list,不能读取其他用户登录信息;游客角色数据范围符合当前版本要求。
  • 修复动作:移除缓存监控权限,将游客角色数据权限设为「仅本人数据权限」。
  • 回归验证:使用演示账号无法访问缓存列表和其他用户数据,允许的演示功能仍可用。

2.3. go-view 任意 SQL 执行 ​

  • 检查位置:com.fastbee.controller.goview.GoviewProjectDataController 的 executeSql。
  • 通过判定:未携带凭证调用不能执行 SQL,授权用户也只能执行其权限范围内的操作。
  • 修复动作:不需要该功能时删除或禁用接口;需要时增加登录和权限校验。
  • 回归验证:匿名请求被拒绝,正常大屏数据查询不受影响。

2.4. 存储型 XSS ​

  • 检查位置:新闻、通知公告、设备日志的写入和富文本渲染链路。
  • 通过判定:DOMPurify 与后端 jsoup 白名单按当前实现生效,危险标签、事件属性、脚本协议和 iframe 被移除,安全链接属性得到保留。
  • 修复动作:按当前维护代码同步前端净化、后端 RichTextSanitizer 和对应单元测试,不能只贴黑名单。
  • 回归验证:在隔离环境提交测试标记后不会执行,合法富文本和设备日志仍正常显示。

2.5. SIP XML 外部实体(CVE-2025-15251) ​

  • 检查位置:ReqAbstractHandler#getRootElement 和 SIP 服务网络配置。
  • 通过判定:解析器禁止 DTD、外部通用实体和外部参数实体;SIP 未暴露到不可信网络。
  • 修复动作:设置 disallow-doctype-decl=true、external-general-entities=false、external-parameter-entities=false,并限制 5060/5061。
  • 回归验证:外部 DTD 和实体请求被拒绝,正常 SIP 业务不受影响;仅升级 JDK 不算完成验证。

2.6. 下载接口任意文件读取(CVE-2026-7676) ​

  • 检查位置:ToolController.download 的 fileName 参数处理。
  • 通过判定:规范化后的目标仍位于允许下载目录内,绝对路径、目录穿越和符号链接逃逸均被拒绝,接口具有鉴权和日志。
  • 修复动作:使用规范化绝对路径并校验目录边界,不能只做字符串替换;不需要时同时禁用网关和应用入口。
  • 回归验证:隔离测试目录之外的路径不可读,正常文件仍可下载。

2.7. 设备组越权访问(CVE-2026-111654) ​

  • 检查位置:GroupController 及下游 service、Mapper 查询链路。
  • 通过判定:读取、更新、重新分配、设备关联变更和删除五类操作都校验设备组所有者或租户边界。
  • 修复动作:在控制器、服务和数据访问层执行一致授权,不能只隐藏前端按钮或只检查组 ID 是否存在。
  • 回归验证:用两个不同所有者的测试账号验证跨用户操作被拒绝、本人操作正常,并检查越权日志。

2.8. 规则脚本 Groovy 注入(CVE-2026-120274) ​

  • 检查位置:/iot/script 新增和编辑链路、Groovy 执行器装配、脚本入库与热加载路径。
  • 通过判定:SecureGroovyScriptExecutor.compileSource 与 BusinessScriptInterceptor 同时生效,编译期拒绝类/包/注解/自定义构造器,运行期默认拒绝进程、文件和反射调用。
  • 修复动作:使用包含修复提交 890a33846005a937a58cccd738b7fb9821b82ea9 的实现,并确保脚本入库和热加载前通过同一编译器校验。
  • 回归验证:危险结构被拒绝,合法脚本可运行;普通权限账号不能取得脚本编辑能力。只删除 import 或隐藏编辑入口不算修复。

2.9. 垂直越权与数据范围 ​

  • 检查位置:系统用户、角色、岗位、部门接口的权限注解和数据范围校验。
  • 通过判定:低权限账号访问管理员接口返回 403,非超管不能读取超管数据,列表按当前用户的数据范围收窄。
  • 修复动作:同步权限注解、checkDeptDataScope / checkUserDataScope 和异常处理;不要只隐藏菜单。
  • 回归验证:按不同所有者、部门、角色和权限档位执行矩阵测试,越权被拒绝且正常授权操作不受影响。

3. 上线前统一回归 ​

  • [ ] 修复前备份程序、配置与数据,先在隔离测试环境验证兼容性。
  • [ ] 每项执行正向和反向验证:危险操作被拒绝,正常业务继续工作。
  • [ ] 使用两个不同所有者、不同权限档位的测试账号,不只使用 admin。
  • [ ] 检查访问日志、越权拒绝日志、SIP 日志和异常出站连接是否可观测。
  • [ ] 商业版授权过期或存在二次开发时,先合并目标修复并处理冲突,不要直接覆盖生产代码。
  • [ ] 按版本顺序执行升级 SQL,必要时按发布说明清理指定缓存或处理时序表结构。

4. 常见问题 ​

维护代码已经修复,还需要做这份清单吗? ​

需要。维护代码修复不等于当前实例已完成升级,也不等于默认口令、开放端口和角色权限已经安全。清单用于验证实际部署。

默认账号密码必须删除吗? ​

不需要。默认账号密码用于首次部署,用户可以部署后自行修改;公网或生产环境建议上线前修改口令并限制演示权限。

可以在生产环境直接用攻击 POC 验证吗? ​

不建议。应在隔离测试环境使用无真实敏感信息的测试数据做拒绝性验证,避免影响业务和数据。