专栏首页DDDCSRF来袭

CSRF来袭

最近收到了一份安全漏洞警告--用户账户恶意劫持漏洞,直指我们联登中的state参数存在严重问题

在之前的《常识二Oauth2.0介绍及安全防范》文章中已经说明了oauth2.0以及可能的csrf问题

看来知道和做到还是有些差距,通过这篇文章再来回顾一下此次漏洞问题

相关知识点

详细的说明可查看:《常识二Oauth2.0介绍及安全防范》,这儿作个简单回顾

CSRF

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF

oauth2.0

由于oauth2.0的交互需要好几步,所以存在跨域攻击风险

state参数

oauth2.0的提供者定义接口时,都会有一个非必选state参数

state 用于保持请求和回调的状态,授权请求成功后原样带回给第三方。该参数用于防止csrf攻击(跨站请求伪造攻击),强烈建议第三方带上该参数。参数设置建议为简单随机数+session的方式

想要防范风险,state参数值需要具备下面几个特性:

  • 不可预测性:足够的随机,使得攻击者难以猜到正确的参数值
  • 关联性:state参数值和当前用户会话(user session)是相互关联的
  • 唯一性:每个用户,甚至每次请求生成的state参数值都是唯一的
  • 时效性:state参数一旦被使用则立即失效

漏洞详情

其实我们的接口中,是有state参数的,那么为什么会有漏洞呢?

使用第三方联登,不会简单的登陆上就可以了,还需要把联登帐户绑定到正常帐户(已经有了就直接绑定,没有就注册一个新帐户)上,这应该是通用的用法了,第三方联登只是作为一种引流。

所以攻击者一般把自己的第三方帐户与受害者绑定,就可以达到窃取受害者帐户的目的

state参数的作用,只是防止了非本应用发出的认证url

张三怎么能用李四的code呢?作为oauth provider是没法知晓的,只能client通过state判别,是不是由合法client发出的

但,如果client把state给泄漏了呢?

这就是我们这次的漏洞场景之一:之前有个‘分享帐户’的功能,其实就是在个人中心中绑定自己的第三方帐户

如果攻击者在这儿把自己的authorize url给了受害者,这个url中带了合法的state参数,那这个url就是合法的,应用本身成了攻击者的帮凶。

那么对于这种情况如何防范呢?

最根本原因是我们的state参数:关联性:state参数值和当前用户会话(user session)是相互关联的,没有完美实现

一个用户的state不能给别的用户使用

用户登陆了可以使用userid与state关联

用户未登陆,可以使用用户设备号与state关联,识别url与state的关系

这样就能防范一切情况

结语

安全与监控实在是太重要了,从开发者角度讲,这个功能已经上线很久,功能正常。但从安全角度来讲,实则完全不能上线。

各个功能点,不管是开发,还是产品都可能会忽略了单个功能产生的交叉漏洞,这需要安全去监测,监控。

近期上线了个功能,功能一切正常,但在监控时发现在线上会有严重的性能问题;如果不是监控,可能这个问题会在下次搞活动时才会被发现,造成严重问题!

本文分享自微信公众号 - 码农戏码(coder-game),作者:Jack

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django+xadmin打造在线教育平台(九)

    代码 github下载 十二、首页和全局404,500配置 12.1.首页功能 Course添加一个字段 is_banner = models.Boolean...

    zhang_derek
  • 初探计算机网络之常见的网络攻击方式

    ​ 在当今的互联网当中,总是存在着我们看不见也摸不着的一些 “互联网地下工作者”,也就是黑客。黑客的攻击方式分为很多种,有非破坏性攻击和破坏性攻击。非破坏性攻击...

    用户9029030
  • WhatsApp病毒来袭

    2月20日“Facebook宣布190亿美元收购WhatsApp”大事件的发生,引发国人对这款较为陌生的国外手机软件的广泛关注,潜在的关联效应也随之而来。昨天...

    安恒信息
  • 去IOE升级来袭 国安+去IOE “软件潮”或来袭

    中国共产党十八届三中全会公报指出:将设立国家安全委员会,完善国家安全体制和国家安全战略,确保国家安全。随着我国信息化程度的提高,软件国产化已经成为国家安全的重要...

    人称T客
  • 2016,NodeJS干货来袭

    HTML5学堂:随着时代的发展,JS的地位已经越来越高,NodeJS也是从萌芽开始,茁壮成长~这篇文章我们主要借助weinre这个NodeJS工具,讲解Node...

    HTML5学堂
  • CSRF的原理与防御 | 你想不想来一次CSRF攻击?

    CSRF是Cross Site Request Forgery的缩写,中文翻译过来是跨站请求伪造。这个漏洞往往能给用户带来巨大的损失,CSRF在等保安全检测中,...

    小忽悠
  • 重磅来袭,抱歉,来晚啦

    来一波 、基本概念 1.1、spring Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Ro...

    码神联盟
  • (项目)在线教育平台(十二)

      首页页面轮播课程需要在课程的model中添加is_banner字段,说明是否是轮播课程:

    py3study
  • 档案大数据来袭

    大数据文摘
  • 一波开源库来袭

    一波开源库来袭 最近在做MVVM的教程,同时在github上闲逛,发现了一些好的开源库,于是乎推荐给大伙了。 1 SmallChart图表库 SmallChar...

    用户1263308
  • Excel最强功能来袭!

    当你面对姓名电话拆分电话的时候,你会怎么做? 是Right函数? ? 还是智能填充? ? 抑或这样? ? 或者这样? ? 当你想要把人员信息按照部门进行拆...

    用户1332619
  • 上新:告警 2.0 来袭

    前言 继 Dashboard 全新改版,Prometheus 服务灰度上线后,告警也迎来重大升级。告警 2.0 于 2020 年 11 月 16 日首次发布,...

    腾讯云监控团队
  • Django 2.1 版本已经来袭

    一个备受关注、很多人都在使用的软件,软件开发团队会定期发布新版本。其主要目的是修复之前一些 Bug 以及新增一些新特性。Django 作为主流的 Python ...

    猴哥yuri
  • OffenSive Csharp Development Part5 && 星球来袭

    本文是OffenSive Csharp Development的第五篇文章,主要讲解如何使用C#进行AMSI bypass。

    鸿鹄实验室
  • Python爬虫:jsonpath强势来袭

    JSON包括六个构造字符,分别是:左方括号、右方括号、左大括号、右大括号、冒号与逗号。

    我被狗咬了
  • 做题总结——使徒袭来

    这道题目利用数学知识可以知道,当三个正整数的值相等时,三个数的和最小,相当于a=b=c=n^(1/3)时,(a+b+c) min=3*n ^(1/3),编写代码...

    用户8224910
  • [设计直播] I Love UX 第9期来袭!

    ? ? ? ? ? ? —— 关于I♥UX —— I♡UX AIR,是由腾讯ISUX用户体验设计部旗下原创馆创办的,面向广大设计师群体的在线直播论坛活动。I♡...

    腾讯ISUX
  • Creator3D新版本震撼来袭

    大噶猴,在预祝大噶中秋国庆双节快乐的同时,Cocos 也带来了 Creator 3D v1.2 介个船新版本,几需体验七天,里造会跟我一样,爱向这款引擎!

    张晓衡
  • 520限定 |“QQ BE@RBRICK”来袭

    QQ作为互联网的经典IP, 一直以更好玩的形象与年轻人沟通, 编织一代又一代用户的记忆与小美好。 ? 近年来,QQ也成为潮流圈的常客, 所以,在22周岁这个充...

    腾讯ISUX

扫码关注云+社区

领取腾讯云代金券