You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Shiro至1.12.0并关闭RememberMe仍触发CVE-2016-4437告警求助

Shiro RememberMe反序列化漏洞(CVE-2016-4437)告警持续触发问题排查与解决

公司防火墙检测到Shiro存在CVE-2016-4437反序列化漏洞,已执行以下操作但告警仍未消除:

  • 将Shiro版本升级至1.12.0
  • 使用随机生成的加密密钥
  • 在配置中关闭RememberMe功能

Shiro配置信息

shiro:
    domain: 
    # 设置cookie的有效访问路径
    path: /
    # 设置HttpOnly属性
    httpOnly: true
    # 设置Cookie的过期时间,天为单位
    maxAge: 30
    cipherKey: 
  rememberMe:
    # 是否开启记住我
    enabled: false

ShiroConfig相关代码

/**
 * 记住我
 */
public CookieRememberMeManager rememberMeManager()
{
    CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
    cookieRememberMeManager.setCookie(rememberMeCookie());
    if (StringUtils.isNotEmpty(cipherKey))
    {
        cookieRememberMeManager.setCipherKey(Base64.decode(cipherKey));
    }
    else
    {
        cookieRememberMeManager.setCipherKey(CipherUtils.generateNewKey(128, "AES").getEncoded());
    }
    return cookieRememberMeManager;
}

问题原因分析

  1. RememberMeManager仍被实例化:即使配置中关闭了RememberMe功能,但代码中依然创建了CookieRememberMeManager实例并注入到Shiro环境中,防火墙的漏洞扫描器可能会检测到该组件存在,从而触发告警。
  2. Cookie配置未完全禁用:虽然rememberMe.enabled设为false,但如果rememberMeCookie()方法仍在生成对应的Cookie对象,可能会在响应中留下相关痕迹,被扫描器识别。

解决方案

1. 完全移除RememberMeManager的实例化

如果不需要RememberMe功能,直接在Shiro配置中不注册CookieRememberMeManager,修改ShiroConfig:

@Bean
public DefaultWebSecurityManager securityManager(/* 其他依赖,如Realm */) {
    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    // 配置Realm等核心组件
    securityManager.setRealm(yourRealm());
    // 不要添加securityManager.setRememberMeManager(rememberMeManager());这一行
    return securityManager;
}

如果必须保留相关方法(比如依赖注入约束),修改rememberMeCookie()方法,将Cookie的maxAge设为0,让浏览器立即删除该Cookie:

public SimpleCookie rememberMeCookie() {
    SimpleCookie cookie = new SimpleCookie("rememberMe");
    cookie.setMaxAge(0); // 立即过期,禁用Cookie
    cookie.setHttpOnly(true);
    cookie.setPath("/");
    return cookie;
}

3. 验证防火墙扫描规则

部分防火墙可能基于旧特征库误报,可手动构造测试请求:发送带有伪造rememberMe Cookie的请求,确认系统不会触发反序列化逻辑,以此证明漏洞已修复,再向防火墙厂商更新规则或添加白名单。

内容的提问来源于stack exchange,提问作者爱学习的潘大大

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:23:29