安全播报

防御吧作为15年知名老牌域名服务商,CNNIC和CANN双认证域名注册商,已经
持续为500多万个域名提供服务,包括智能DNS/自由转移/隐私保护等服务!
CWE-384: Session Fixation 会话固定漏洞有哪些修补方法?
2021-08-06 15:12:31 【

本期主题为会话固定(CWE-384: Session Fixation)漏洞的相关介绍。


一、什么是会话固定?


对用户进行身份鉴别并建立一个新的会话时没有让原来的会话失败。


二、会话固定漏洞的构成条件有哪些?


当用户成功验证而应用程序不更新cookie时,这个时候就存在会话固定漏洞。


HTTP的无状态性,导致Web应用程序必须使用会话机制来识别用户。如果用户未登录时的会话ID和登录后的会话ID保持一致,那么攻击者可以迫使受害者使用一个已知(有效)的会话ID,当受害者通过身份验证,攻击者就可以利用这个会话ID进入验证后的会话(登录状态)。


三、会话固定漏洞会造成哪些后果?


攻击者可诱使用户在攻击者创建的会话基础上进行身份鉴别,从而窃取用户通过身份鉴别的会话并冒充用户进行恶意操作。


四、会话固定漏洞的防范和修补方法有哪些?


对用户进行身份鉴别并建立一个新的会话时让原来的会话失效。核心代码如下。


// 会话失效


session.invalidate();


// 会话重建


session=request.getSession(true);


五、会话固定漏洞样例:


protected WebSession updateSession_DELETEME(HttpServletRequest request,HttpServletResponse response, ServletContext context)


{


HttpSession hs;


hs = request.getSession(true);


//System.out.println( "Entering Session_id: " + hs.getId() );


// dumpSession( hs );


// Make a temporary session to avoid the concurreny issue


// in WebSession


WebSession session = new WebSession(this, context);


WebSession realSession = null;


Object o = hs.getAttribute(WebSession.SESSION);


if ((o != null) && o instanceof WebSession)


{


realSession = (WebSession) o;


}


session.setCurrentScreen(realSession.getCurrentScreen());


session.setCourse(realSession.getCourse());


session.setRequest(request);


// to authenticate


//System.out.println( "Leaving Session_id: " + hs.getId() );


//dumpSession( hs ); return (session);


}


……


使用Wukong静态代码安全检测上述程序代码,则可以发现代码中存在着“会话固定”的安全漏洞。请见下图:




“会话固定”在CWE中被编号为:CWE-384:Session Fixation


】【打印关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇云安全:数据库权限的分配与回收 下一篇谷歌发布八月Android安全补丁 共..

立足首都,辐射全球,防御吧专注云防御及云计算服务15年!

联系我们

服务热线:010-56157787 ,010-56159998
企业QQ:4000043998
技术支持:010-56159998
E-Mail:800@fangyuba.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解决防御与加速) 版权所有 增值许可:京B2-20140042号
售前咨询
公司总机:4000043998 01056155355
24小时电话:010-56159998
投诉电话:18910191973
值班售后/技术支持
售后服务/财务
备案专员
紧急电话:18610088800