高危漏洞修复报告-补充-无感加固.md 4.7 KB

补充修复报告:不影响业务逻辑的安全加固

筛选原则:只修复「正常请求路径不变、仅加固防护」的漏洞;不改权限体系、不改鉴权模型、不强制变更业务流程。
完成时间:2026-08-06
编译验证mvn -pl fs-common,fs-framework,fs-service,fs-user-app,fs-company,fs-qw-api,fs-admin,fs-qwhook -am compile -DskipTests 通过


一、本轮筛选结论

类型 是否本轮修复 原因
XXE 禁用 DTD 已修 仅加强 XML 解析器特性,正常企微明文 XML 不受影响
Runtime.exec → ProcessBuilder 已修 命令参数相同,仅调用方式更安全
禁止 html/htm 上传/下载白名单 已修 HIS 业务一般不需要上传可渲染 HTML;可阻断存储型 XSS
剩余裸 uploadOSS 已修 复用已有白名单工具,合法类型仍可用
安全响应头 nosniff 已修 仅增加响应头,不影响业务数据
知识库上传文件名清洗 已修 仅过滤危险字符,中英文名仍可用
Jackson DefaultTyping 收紧 未改 可能影响 Redis 历史缓存反序列化,风险大于收益,需单独评估
后台补 @PreAuthorize 未改 依赖权限点配置,可能造成后台 403
fs-company-app /** permitAll 未改 改动会冲击现有 @Login 拦截体系
跨租户 companyId 强制覆盖 未改 可能影响运营超管跨公司操作

二、已修复明细

1. XXE(中危-01 等)

文件 改动
新增 fs-common/.../XmlSecurityUtils.java 统一禁用 DTD/外部实体
fs-qw-api/.../QwController.java 使用 XmlSecurityUtils.newSafeDocumentBuilder()
fs-service/.../qwApi/util/XMLParse.java 补齐与官方安全示例一致的 feature

影响:正常企微回调 XML 无 DOCTYPE,解析结果不变。

2. 命令注入(中危-03/04/05)

文件 改动
HuaweiVodServiceImpl / HuaweiObsServiceImpl Runtime.exec(拼接串)ProcessBuilder 参数数组
AudioUtils(company / qwhook / qwhook-msg / qwhook-sop / fastgptApi) silk 编码改为 ProcessBuilder
ProcessManager + LiveServiceImpl#buildFFmpegCommand 改为 List<String> 传参,路径不再被空格拆开

影响:ffmpeg / silk 参数语义不变,路径含空格时反而更稳。

3. 存储型 XSS / 上传(中危-07、剩余高危-08)

文件 改动
MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION 移除 html/htm(保留 txt/文档/图片/视频/pdf)
fs-qw-api/.../CommonController#uploadOSS 接入 OssUploadSecurityUtils
fs-user-app/.../CommonScrmController#uploadOSS 接入 OssUploadSecurityUtils

影响:若业务确有上传 .html 页面需求会被拒绝;常规图片/文档/音视频不受影响。

4. 响应头(低危 nosniff)

文件 改动
fs-framework/.../SecurityConfig.java 增加 .headers().contentTypeOptions()

影响:仅增加 X-Content-Type-Options: nosniff,不影响接口数据。

5. 知识库文件名(中危-10)

文件 改动
fs-admin / fs-company ChatDatasetFileController#getFileNameWithoutExtension 白名单过滤危险字符,长度限制 50

影响:含特殊符号的文件名会被清洗,中英文与数字下划线不受影响。


三、明确跳过(避免影响使用)

  1. Jackson activateDefaultTyping(LaissezFaire...)
    全仓库大量 RedisConfig 使用,贸然改为白名单可能导致登录态/缓存读失败。建议单独做兼容验证后再改。

  2. 垂直越权补权限注解 / 强制 companyId
    会改变后台可见数据范围或触发 403,需产品与权限表配合。

  3. 优惠券竞态加分布式锁
    属逻辑增强,可能改变高并发领取时序,需业务确认。

  4. 下载接口去掉客户端 delete 参数
    若前端依赖该参数清理临时文件,直接删除会改变行为;建议业务确认后改。


四、建议回归点(轻量)

  1. 企微回调是否正常(XXE 加固后)
  2. 上传图片/PDF/xlsx/mp4 是否正常;确认 .html 被拒绝符合预期
  3. 语音转 silk / 视频 ffmpeg 合并是否正常
  4. 直播录播推流(FFmpeg List 传参)是否正常
  5. 知识库 Excel 导入文件名是否正常显示

五、总结

本轮只做了无感安全加固:XXE、命令执行方式、html 上传封禁、剩余 OSS 白名单、nosniff、文件名清洗。
不涉及鉴权模型、权限点、支付主流程、租户隔离策略,正常业务使用面基本不受影响。