ITPub博客

首页 > IT基础架构 > 网络安全 > CWE-384: Session Fixation 会话固定漏洞有哪些修补方法?

CWE-384: Session Fixation 会话固定漏洞有哪些修补方法?

原创 网络安全 作者:zktq2021 时间:2021-08-06 14:49:04 0 删除 编辑

本期主题为会话固定(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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/70000012/viewspace-2785659/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中科天齐软件源代码静态检测工具(SAST),为客户在软件开发过程中查找、识别、追踪绝大部分主流编码中的技术漏洞与逻辑漏洞,帮助用户提升抵御网络攻击、防止数据泄露等安全问题的能力。

注册时间:2021-05-14

  • 博文量
    222
  • 访问量
    77413