前言
在企业级 ITSM 系统、文件预览服务中,kkFileView 是非常常用的在线预览组件。本次修复基于官方安全公告、Apache 标准安装规范、生产环境真实验证 ,同时解决 CVE-2022-46934 跨站脚本漏洞 与 POI 导出文件在旧版 OpenOffice 下预览报错 两个关键问题,确保方案安全、可落地、不踩坑。
一、漏洞与问题说明
1.1 漏洞信息
- 漏洞编号:CVE-2022-46934、CNNVD-202302-113
- 漏洞等级:中危(CVSS 3.1:6.1)
- 漏洞类型:反射型 XSS 跨站脚本
- 影响版本:kkFileView 4.1.0
- 漏洞位置:OnlinePreviewController.java URL 参数过滤不严格
- 影响场景:企业工单系统、文件在线预览服务
1.2 业务问题(真实生产报错)
问题现象
使用 POI 导出的 Excel 文件上传到业务系统后,附件预览直接失败,无法转换为 PDF/HTML。
典型报错
org.artofsolving.jodconverter.office.OfficeException: could not load document
Caused by: com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one
问题根因
OpenOffice 4.1.6 对新版 POI 生成的 XLSX 文件格式兼容性不足,文档解析失败。
升级 OpenOffice 到 4.1.16 可彻底解决该兼容问题。
二、升级目标版本
- kkFileView:4.1.0 → 升级至漏洞修复稳定版(≥4.2.0)
- OpenOffice:4.1.6 → 升级至 4.1.16(官方最新安全稳定版)
- 说明:OpenOffice 4.1.x 系列为同大版本升级,支持直接覆盖安装,无需卸载旧版。
三、实施方案(Linux RPM 标准流程)
3.1 前置准备
- 备份 kkFileView 服务包与配置文件
- 备份 OpenOffice 相关目录
- 停止预览相关服务
bash
# 停止 kkFileView
sh /xxx/kkFileView/bin/stop.sh
# 停止 OpenOffice 进程
ps -ef | grep soffice | grep -v grep | awk '{print $2}' | xargs kill -9
3.2 OpenOffice 4.1.16 升级(官方标准步骤)
安装包来源:Apache OpenOffice 官方下载
执行流程遵循官方 Linux RPM 安装规范。
bash
# 切换 root
su root
# 进入解压后的 RPMS 目录
cd /path/Apache_OpenOffice_4.1.16_Linux_x86_64_rpm/zh-CN/RPMS
# 官方推荐升级命令(自动覆盖旧版,无需卸载)
rpm -Uvih *.rpm
说明 :rpm -U 为升级模式,同大版本可安全覆盖,不会产生冲突。
bash
# 安装桌面集成包(可选,不影响后台服务)
cd desktop-integration
rpm -Uvih openoffice4.1.16-freedesktop-menus-*.noarch.rpm
# 验证版本
/opt/openoffice4/program/soffice -version
显示 4.1.16 即表示升级成功。
3.3 kkFileView 升级步骤
- 替换新版程序包
- 迁移原有配置(application.properties)
- 启动服务
bash
sh /xxx/kkFileView/bin/start.sh
四、验证方案
4.1 漏洞扫描验证(安全扫描工具)
- 重新扫描目标主机
- 确认 CVE-2022-46934 漏洞已修复
- 无新增高危漏洞
4.2 业务功能验证
- 上传 POI 导出的 Excel 文件
- 点击附件预览
- 验证内容:
- 不再报错
- 正常转为 HTML/PDF
- 格式正常、无乱码、无错位
- 覆盖验证:doc、xls、xlsx、ppt、pdf 均能正常预览
五、风险评估
- 升级期间会临时影响附件预览功能,升级完成后立即恢复
- 影响范围:仅预览服务,不影响工单提交、流转、审批等核心流程
- 本方案已在测试环境完整验证,生产可平稳实施
六、回滚方案
- 停止新版服务
- 恢复升级前备份的原服务包
- 启动旧版服务
- 验证预览功能恢复正常
OpenOffice 可直接使用备份包还原,无需重新安装,回滚简单可靠。
七、常见误区与注意事项
- OpenOffice 4.1.6 升级到 4.1.16 不需要卸载,同大版本直接覆盖即可。
- 必须使用 Apache 官方安装包,避免第三方包缺失依赖或暗藏风险。
- POI 导出文件预览报错只靠升级 kkFileView 无法解决,必须升级 OpenOffice。
- Linux 升级用
rpm -Uvih,不要用rpm -ivh,避免多版本冲突。 - 升级完成后优先验证 POI 导出文件,这是本次修复的核心业务目标。
八、总结
本次通过升级 kkFileView 与 OpenOffice,一次性解决两个问题:
- 修复 CVE-2022-46934 XSS 安全漏洞
- 解决 POI 导出文件预览报错、无法加载文档的问题