常见的OAuth令牌漏洞
什么是bearer令牌
OAuth规范将bearer令牌定义为一种安全装置,他就有这样的特性:只要当事方拥有令牌,就能使用它,而不管当事方是谁,从技术的角度看,bearer令牌与浏览器的cookie很相似,它们具有相同的基本特性:
-
都使用纯文本字符串
-
不包含密钥或者签名
-
安全模式都建立在TLS基础上
它们之间的区别:
-
浏览器使用cookie由来已久,而bearer令牌对于OAuth客户端则是新技术
-
浏览器实行同源策略,这意味着一个域之下的cookie不会被传到另一个域,但OAuth客户端并不是这样
使用beare令牌的风险及注意事项
如果攻击者能截获访问令牌,他就能访问该令牌的权限范围内的所有资源,使用bearer令牌客户端不需要证明其拥有其他额外的安全信息,比如加密密钥。以下这些与OAuth bearer令牌相关的风险与其他基于令牌的协议是共通的:
- 令牌伪造。攻击者可能会构造加令牌或者篡改已有的有效令牌,导致资源服务器授与客户度不当的访问权限。
- 令牌重放。攻击者会尝试使用过去使用过并且已经过期的旧令牌。在这种情况下服务器不因该返回任何有效信息,而应该提示错误
- 令牌重定向。攻击者将用于某一资源服务器的令牌用来访问另一资源服务器,而该资源服务器误认为令牌有效。攻击者先合法地获取某一特定资源服务器的访问令牌,然后将该访问令牌出示给另一资源服务器
- 令牌信息泄露。令牌可能会含有一些关于系统的敏感信息,而这些信息是不应该透露给攻击者的
如何保护bearer令牌
不要在不安全的信道上以明文形式传递访问令牌。根据OAuth核心规范,必须使用端到端的加密连接传输访问令牌,比如SSL/TLS,TLS传输层安全,以前被称为SSL安全套接字,是一种在计算机网络上提供安全连接的加密协议,该协议对直接连接的两方的相互通信进行保护,其加密过程包括以下内容::
-
连接是私密的,因为对传输的数据使用了对称加密
-
连接是可靠的,因为使用了消息验证码对传输的每一条消息进行完整性检查
在客户端上:
-
只请求满足其功能最低要求的权限范围,为了最大限度的降低对用户体验的影响,客户端可以在授权阶段请求所有适当的权限范围,然后使用刷新令牌获取对权限范围有所限制对访问令牌,用于直接访问资源
-
将访问令牌存储在瞬态内存中也有利于降低源自存储注入的攻击风险