目前开源架构需要注意的安全问题

112 阅读1分钟

SpringBoot + Vue 开源框架常见安全风险与防护要点 一 通用高风险漏洞

  • SQL 注入:使用字符串拼接或 MyBatis 的 ${} ​ 直接插值最易被利用;应使用参数化查询/预编译、对排序/搜索关键字做白名单校验,并清理可控的 ORDER BY/Group By​ 输入。
  • 文件上传:未校验Content-Type/魔数、未重命名、未限制存储路径可执行后缀,易被上传 WebShell;应启用白名单、随机名、隔离目录、禁用执行权限。
  • XSS:服务端返回或前端模板直接渲染未转义的用户输入,导致存储/反射型 XSS;应在服务端对输出进行HTML 转义,前端避免使用 v-html​ 渲染不可信内容。
  • CORS 配置不当:将 Access-Control-Allow-Origin: *与凭据(如 withCredentials)混用,或信任任意 Origin/Referer/Host,会被工具判定为高危;应改为精确匹配白名单并配合网关/过滤器校验。
  • 错误信息泄露:将堆栈/SQL直返前端,既暴露实现细节又利于攻击链构造;应统一异常处理,生产环境不返回技术细节
  • CSRF 与权限绕过:状态改变类接口缺少CSRF TokenSameSite​ 策略,或存在URL 规则绕过;应使用 Token/双重提交 Cookie,并在网关/安全框架层做路径与方法严格匹配。

二 框架特有或高频问题

  • RuoYi 系列(若依)

    • Shiro RememberMe 反序列化与默认密钥:早期版本存在默认 AES Key​ 导致 rememberMe​ Cookie 反序列化 RCE;建议升级至包含随机密钥的版本(如 ≥4.6.2),并自定义高强度密钥、启用 AES-GCM
    • 多处 SQL 注入:如 /system/role/list/system/role/export​ 等接口在 <4.6.2​ 版本可通过 params[dataScope] ​ 注入;应升级并统一改为参数化查询。
    • 任意文件下载(CNVD-2021-01931)/common/download/resource​ 未校验路径,利用 ../ ​ 遍历读取敏感文件;应升级至 ≥4.5.1​ 并增加路径与后缀白名单。
    • 定时任务 RCE<4.7.8​ 可通过修改任务内容触发 SnakeYAML/JNDI​ 等加载远程恶意类;应升级并限制任务内容、禁用危险协议(rmi/ldap/http)。
    • 历史依赖漏洞:如 Thymeleaf​ 模板注入(≤3.0.12)、Log4j2≤2.17.0)等,需按官方版本升级。
  • Jeecg-Boot

    • SQL 注入:如 /onlDragDatasetHead/getTotalData/jmreport/qurestSql​ 等接口存在拼接/模板注入风险;建议升级至 v3.7.2+ ​ 并严格参数化。
    • 表达式/脚本注入AviatorScript​ 表达式未过滤可触发命令执行;应禁用危险函数或启用沙箱。
    • Fastjson/JNDI 反序列化:老版本 Fastjson​ 可被 JNDI​ 加载远程类;应升级并关闭 JNDI Lookup
    • 未授权文件上传/信息泄露:如 /jmreport/upload​ 未鉴权上传、 /sys/user/querySysUser​ 未鉴权访问;需加鉴权与细粒度权限控制。
  • 人人开源 Renren-Fast

    • CORS 与安全过滤器误配:常见为 Access-Control-Allow-Origin: *JWTFilter​ 处理不当引发跨域与鉴权问题;应改为白名单并规范过滤器链。

三 Spring 生态与依赖组件风险

  • SpEL 表达式注入:历史版本存在多处 SpEL​ 注入导致 RCE,如 Spring Data REST PATCH(CVE-2017-8046)、Spring WebFlow(CVE-2017-4971)、Spring Messaging/WebSocket(CVE-2018-1270)、以及 Spring Framework 5.0–5.0.4 / 4.3–4.3.14​ 的 WebSocket 相关缺陷;应升级至修复版本,避免将用户输入作为 SpEL​ 解析。
  • Spring Cloud Gateway Actuator SpEL 注入(CVE-2022-22947) :可访问 Actuator 时通过路由刷新注入 SpEL​ 执行命令;应升级至 3.1.1+/3.0.7+ ,并限制 Actuator 暴露与鉴权。
  • Spring Cloud Function SpEL 注入(CVE-2022-22963) :请求头 spring.cloud.function.routing-expression​ 未过滤导致 RCE;应升级并移除/限制该请求头解析。
  • Spring Framework 远程代码执行(CVE-2022-22965,Spring4Shell) :特定绑定与表达式解析路径组合可写属性触发 RCE;应升级至修复版本并避免不安全的数据绑定配置。
  • Spring Security 认证绕过(CVE-2022-22978) :早期版本存在绕过;应升级并复核安全配置。
  • H2 Database Console 未授权访问:开启 spring.h2.console.enabled=true​ 且 web-allow-others=true​ 可被未授权访问并用于 JNDI​ 攻击;生产应关闭或限制访问来源。

四 快速自检与加固清单

  • 依赖与版本:建立SBOM,定期升级 Spring Boot/Spring Security/Spring Cloud/第三方库到安全版本;重点排查历史 SpEL/CVE​ 与 H2 Console​ 暴露。
  • 输入校验与输出编码:全链路白名单校验(参数、Header、Content-Type、文件名),服务端HTML 转义;避免 ${} ​ 字符串拼接 SQL,统一用参数化查询
  • 文件上传:白名单 MIME/魔数随机重命名隔离目录禁用执行权限,上传后二次校验病毒扫描
  • 认证与会话:强口令策略与锁定/验证码,安全的 RememberMe​ 实现(强密钥、随机化),JWT​ 短有效期与刷新机制,会话固定防护。
  • 授权与访问控制:基于角色/数据权限的细粒度控制,接口级 ACL,关键操作二次确认审批
  • CORS/CSRF精确白名单匹配 Origin,避免 Access-Control-Allow-Origin: * 与凭据混用;状态改变接口使用 CSRF Token/SameSite
  • 错误处理与日志:统一异常处理,生产不暴露堆栈/SQL,敏感日志脱敏;开启审计日志访问日志
  • Actuator/DevTools:生产关闭或严格鉴权​ Actuator,限制端点;禁用不必要的 DevTools​ 远程调试。
  • 安全配置基线:开启 HTTP 安全头(如 CSP、X-Frame-Options、X-XSS-Protection、Strict-Transport-Security),配置 TLS,最小权限运行(非 root)。
  • 渗透测试与代码审计:对SQLi/XSS/文件上传/CSRF/越权/反序列化专项测试,重点覆盖报表/导入导出/定时任务/模板引擎/上传等高危模块。