WebErp 安全漏洞自查工作自证材料

报告日期:2026-06-25

报告类型:企业安全漏洞定期自查与风险规避自证材料

适用范围:WebErp / weberp Spring Boot 后端项目

报告口径:对外自证,展示已开展的安全自查、已建设的风险规避措施、风险识别记录与后续处置安排。

1. 项目概况与扫描范围

本次自查对象为 WebErp 后端工程,核心模块为 WebErp/weberp。项目采用 Spring Boot、Maven、多数据库驱动、MyBatis、文件处理、Office 文档转换、远程资源下载、JWT 登录态、GraalJS 表达式执行等能力。

本次自查覆盖以下范围:

类别覆盖内容证据来源
依赖与构建Maven 父子 POM、依赖树、关键第三方组件版本WebErp/pom.xmlWebErp/weberp/pom.xmlweberp/target/dependency-tree.txt
配置安全数据库连接、运行配置、跨域配置、脚本执行开关application.propertiesCorsConfig.javaJsEngine.java
认证授权Spring Security 入口放行、业务层登录校验、公开接口白名单SecurityConfig.javaBaseHandler.javaPublicApiRegistry.java
SQL 安全MyBatis 动态 SQL、SQL 片段校验、字段名白名单mapper/*.xmlSqlSafetyGuard.java、SQL Provider 实现
文件与下载文件路径校验、压缩包解压、远程下载、在线预览FileUtil.javaZipUtil.javaRemoteDownloadGuard.javaToolsHandler.java
脚本与命令GraalJS 沙箱配置、系统命令执行点复核JsEngine.javaOfficeUtil.javaFormatFactoryUtil.java
自动化证据安全回归测试、依赖树生成、工具可用性确认SecurityRegressionTest.java、Maven 命令执行记录

说明:本报告为安全漏洞自查工作留档材料,不等同于第三方渗透测试报告或等保测评报告。

2. 自查方法与证据来源

本次自查采用静态代码扫描、配置审阅、依赖版本核验、关键安全控制点测试和公开漏洞库查询相结合的方式。

已执行并形成证据的检查项:

检查项方法结果
安全回归测试执行 mvn -q -Dtest=SecurityRegressionTest test通过,覆盖路径越权、Zip Slip、CORS、远程下载限制、SQL 片段校验、公开接口白名单等场景
Maven 依赖树执行 Maven dependency tree 并输出到 weberp/target/dependency-tree.txt已生成,可用于依赖版本留档
OSV 漏洞查询对关键 Maven 组件进行 OSV API 查询发现 Jackson databind 仍有一项新披露风险需跟踪
工具环境确认检查本机 osv-scannerdependency-check 命令当前环境未安装,已列入后续工具化改进
敏感配置审阅扫描配置文件与安全相关关键字发现数据库连接配置仍需脱敏入库治理,报告正文已脱敏展示

3. 风险识别记录台账

编号风险名称位置等级影响现状证据已有控制处置方案优先级
R-001第三方依赖漏洞风险com.fasterxml.jackson.core:jackson-databind:2.18.8特定反序列化忽略属性绕过场景下,可能影响对象字段保护策略OSV 查询命中 GHSA-5jmj-h7xm-6q6v;OSV 标注修复版本为 2.18.9,但当前 Maven Central 未查询到该版本,本地 Maven 解析也失败Jackson 已从旧版本升级到当前可打包版本;父 POM 已统一版本管理,避免父子 POM 版本漂移持续跟踪可用修复版本;若 2.18.9 可解析则优先小版本升级;若不可用,则评估升级到后续可用安全版本并补跑兼容测试P0
R-002配置文件中存在真实数据库连接信息weberp/src/main/resources/application.properties 第 12 行附近若配置文件被外发或提交到共享仓库,可能导致数据库访问凭证泄露配置文件中仍有真实数据库连接串;本报告仅记录脱敏形态:jdbc:dm://*:/?凭证=*已约定生产真实配置应放在部署服务器本地;报告中不展示真实地址、账号或密码立即轮换已暴露凭证;将仓库配置改为示例值;补充 .gitignore 排除本地与生产真实配置文件;对历史提交和制品进行泄露排查P0
R-003动态接口入口开放面较大SecurityConfig.javaBaseHandler.javaPublicApiRegistry.java若业务层校验缺失,可能导致未授权访问Spring Security 对动态 /Api/** 分发入口放行;业务层通过 @RequestCheck 和公开接口白名单进行控制BaseHandler 已引入 PublicApiRegistry,未列入白名单的 CheckLogin=false 方法会回落为需要登录;未匹配请求默认拒绝持续审计所有 CheckLogin=false 方法;新增公开接口必须进入白名单并经过安全复核;对模块数据、文件预览、下载接口默认保持登录态要求P0
R-004MyBatis 动态 SQL 拼接风险mapper/*.xml${...} 片段及 SQL Provider若外部输入直接进入 SQL 片段,可能造成 SQL 注入或越权查询Mapper 文件中仍存在字段名、条件片段和完整 SQL 拼接点已新增 SqlSafetyGuard;部分入口已对字段名、只读查询和条件片段进行白名单或危险关键字拦截对所有 ${...} 来源建立清单;字段名改为服务端白名单;条件片段逐步参数化;无法立即改造的入口必须先接入 SqlSafetyGuardP0
R-005远程 URL 下载与服务端请求风险FileUtil.javaToolsHandler.javaWebUtil.javaCreateWordUtil.javaDateTimeUtil.java若允许用户控制 URL,可能触发 SSRF、内网探测或下载超限RemoteDownloadGuard 已接入部分下载流程;仍存在多个 URL 请求入口需要继续统一治理RemoteDownloadGuard 限制协议、私有地址、链路本地地址、组播地址、重定向跳数和下载大小;配置项默认禁止私有地址将残留 URL 请求入口统一接入远程下载守卫;重定向每跳复核;对在线预览类接口补充域名白名单或登录态要求P0
R-006文件路径穿越与压缩包解压风险FileUtil.javaZipUtil.java文件读写或解压过程若未限制根目录,可能覆盖非授权路径已有路径规范化、根目录匹配和压缩条目路径校验;回归测试覆盖路径越权和 Zip SlipZipUtil 对解压目标路径进行标准化并校验必须位于目标目录内;FileUtil 对文件虚拟路径和物理路径做规范化处理持续保留回归测试;新增文件读写入口必须复用路径校验;压缩包处理增加大小和条目数量限制作为后续优化P1
R-007GraalJS 脚本全访问风险JsEngine.javaapplication.properties若脚本全访问开启,表达式可能访问宿主环境能力app.js.allow-all-access=false 已配置;代码中仅在显式开启时允许全访问并输出告警默认关闭 GraalJS 全访问;表达式执行使用独立上下文和缓存容量限制保持默认关闭;若业务确需开启,必须形成变更审批、日志告警和最小权限说明;补充脚本危险语句测试P1
R-008系统命令执行点需持续复核OfficeUtil.javaFormatFactoryUtil.java若命令路径或参数可被外部输入污染,可能造成命令执行风险代码中存在系统命令调用点,主要用于文件权限和格式转换已将该类入口列为重点复核项;目前未在本报告中确认存在可利用外部输入链对可执行文件路径、参数来源和工作目录进行白名单校验;禁止拼接 shell 字符串;记录命令执行审计日志P1
R-009CORS 白名单与响应头暴露需环境化治理CorsConfig.java若跨域源配置过宽,可能扩大凭证跨域风险CORS 已采用白名单并允许携带凭证;测试覆盖不暴露全部响应头和拒绝异常方法未使用通配源;限制请求方法;仅暴露必要响应头将不同环境的允许源迁移到配置项;生产环境定期审计白名单;下线临时调试源P1
R-010安全扫描工具链不完整本机工具环境无法在本机直接运行标准化 OSV Scanner 或 OWASP Dependency-Check当前命令行未安装 osv-scannerdependency-check已通过 OSV API 和 Maven 依赖树进行替代性核验在 CI 或发布机补齐依赖漏洞扫描工具;形成扫描报告归档;对高危漏洞建立阻断规则P2
R-011SQL 控制台日志与敏感信息日志风险application.properties、SQL 调试配置开启 SQL 输出时,可能在日志中暴露业务字段、查询条件或敏感参数配置中存在 MyBatis 控制台日志相关项,当前仍需按环境复核部分日志级别已关闭;安全回归测试覆盖部分响应头与令牌场景生产环境关闭 SQL 明文输出;日志脱敏账号、手机号、凭证和令牌;建立日志留存与访问控制P1

4. 已有安全控制与风险规避措施

控制领域已有措施自证说明
依赖治理Maven 父 POM 统一管理关键组件版本;子模块保留真实业务依赖降低父子 POM 版本漂移和重复依赖风险,便于后续集中升级
默认拒绝Spring Security 未匹配请求使用默认拒绝策略减少非预期接口暴露
公开接口收敛PublicApiRegistry 集中维护公开方法登录、验证码、基础系统信息等接口可公开;模块业务数据类接口默认需登录
登录态校验BaseHandler 基于 @RequestCheck 统一执行登录和参数校验对动态分发 API 提供统一拦截层
SQL 防护SqlSafetyGuard 提供字段名、只读查询和条件片段校验对高风险动态 SQL 入口先建立拦截,再逐步参数化
SSRF 防护RemoteDownloadGuard 限制协议、地址类型、重定向和下载大小对远程下载流程建立边界控制
文件路径防护文件路径规范化、根目录校验、压缩包条目路径校验防止路径穿越和 Zip Slip
CORS 控制采用具体源白名单,未使用任意源通配携带凭证场景下减少跨域滥用风险
JS 沙箱GraalJS 全访问默认关闭降低表达式执行访问宿主能力的风险
回归测试SecurityRegressionTest 覆盖多项安全控制形成可重复验证证据

5. 风险处置方案与整改优先级

优先级处置事项目标完成标准
P0轮换并移除已提交配置中的真实数据库凭证仓库配置仅保留示例值;真实配置仅存在于部署服务器本地;历史暴露凭证完成轮换
P0跟踪 Jackson databind 修复版本修复版本可解析后完成升级、打包和安全回归测试;若采用后续可用安全版本,完成兼容验证
P0动态 SQL 治理所有 ${...} 来源登记;外部输入不得直接进入 SQL 片段;关键路径完成白名单或参数化
P0远程 URL 请求统一防护所有用户可控 URL 请求入口接入 RemoteDownloadGuard 或域名白名单;重定向每跳校验
P0公开接口白名单治理CheckLogin=false 方法均有业务必要性说明;未列入公开白名单的接口必须要求登录
P1CORS 与日志生产化治理CORS 源按环境配置;生产关闭 SQL 明文输出;日志中敏感字段完成脱敏
P1命令执行点复核可执行文件路径与参数来源白名单化;禁止 shell 字符串拼接;补充审计日志
P2安全扫描工具链补齐CI 或发布流程中加入 OSV Scanner 或 OWASP Dependency-Check,并归档扫描结果

6. 定期漏洞自查机制

建议建立以下周期化机制,并将结果作为企业安全漏洞自查自证材料留档:

周期自查动作输出材料
每月依赖漏洞扫描、Maven 依赖树归档、关键漏洞公告复核依赖漏洞扫描记录、风险处置台账
每季度代码安全自查,重点检查鉴权、SQL、文件、远程请求、脚本执行、日志脱敏季度安全自查报告、整改跟踪表
每次发版前执行安全回归测试、检查配置是否含真实凭证、复核新增公开接口发版安全检查清单、测试结果截图或日志
重大漏洞公告后针对影响组件进行应急排查、临时规避、升级验证应急响应记录、修复验证记录
配置变更时复核数据库、Redis、短信、推送、跨域源等配置配置变更审批与脱敏检查记录

建议固定归档材料:

7. 附件证据清单

证据项文件或命令说明
安全回归测试mvn -q -Dtest=SecurityRegressionTest test已通过,覆盖路径、压缩包、CORS、远程下载、SQL 与公开接口控制
依赖树weberp/target/dependency-tree.txt已生成,用于记录当前第三方组件版本
依赖漏洞来源OSV GHSA-5jmj-h7xm-6q6vJackson databind 新披露风险来源
鉴权控制SecurityConfig.javaBaseHandler.javaPublicApiRegistry.java入口放行、业务层校验与公开接口白名单
SQL 控制SqlSafetyGuard.javamapper/*.xml动态 SQL 风险识别与部分防护落点
下载控制RemoteDownloadGuard.javaFileUtil.java远程下载协议、地址、重定向和大小控制
文件控制FileUtil.javaZipUtil.java路径规范化、根目录校验和 Zip Slip 防护
脚本控制JsEngine.javaapplication.propertiesGraalJS 全访问默认关闭
工具环境限制osv-scanner --versiondependency-check --version当前本机未安装,建议在 CI 或发布机补齐

8. 结论

本项目已开展面向依赖、配置、认证授权、SQL、文件处理、远程下载、脚本执行、跨域和回归测试的安全漏洞自查工作,并已具备多项风险规避措施。当前风险主要集中在配置凭证治理、Jackson 新披露漏洞跟踪、动态 SQL 全量收敛、残留远程 URL 请求统一防护和生产环境安全配置固化。

上述事项已纳入整改跟踪台账。后续通过定期扫描、发版前安全检查、重大漏洞应急复核和自动化安全回归测试,持续证明企业具备安全漏洞风险识别、处置和规避能力。