窃取应用程序访问令牌
对手可以窃取应用程序访问令牌作为获取凭据以访问远程系统和资源的一种手段。 应用程序访问令牌用于代表用户或服务进行授权的 API 请求,通常用于访问云和基于容器的应用程序以及软件即服务 (SaaS) 中的资源。(引用: Auth0 - Why You Should Always Use Access Tokens to Secure APIs Sept 2019) 窃取账户 API 令牌的对手可能能够以这些账户的权限访问数据和执行操作,这可能导致权限提升和进一步妥协环境。 例如,在 Kubernetes 环境中,运行在容器内的进程可能使用服务账户令牌与 Kubernetes API 服务器通信。如果容器被妥协,对手可能能够窃取容器的令牌,从而获得 Kubernetes API 命令的访问权限。(引用: Kubernetes Service Accounts) 同样,在持续开发/持续集成 (CI/CD) 管道中,实例通常使用 API 令牌进行身份验证以测试和部署。(引用: Cider Security Top 10 CICD Security Risks) 如果这些管道被妥协,对手可能能够窃取这些令牌并利用其权限。 令牌窃取也可能通过社会工程发生,在这种情况下可能需要用户操作以授予访问权限。OAuth 是一种常见的实现框架,向用户发放令牌以访问系统。希望访问云服务或受保护 API 的应用程序可以通过各种授权协议使用 OAuth 2.0 进行访问。一个常见的示例是 Microsoft 的授权代码授予流程。(引用: Microsoft Identity Platform Protocols May 2019)(引用: Microsoft - OAuth Code Authorization flow - June 2019) OAuth 访问令牌使第三方应用程序能够以请求的方式与包含用户数据的资源进行交互,而无需获取用户凭据。 对手可以通过构建一个恶意应用程序来利用 OAuth 授权,该应用程序旨在获得目标用户的 OAuth 令牌访问资源。(引用: Amnesty OAuth Phishing Attacks, August 2019)(引用: Trend Micro Pawn Storm OAuth 2017) 对手需要完成其应用程序在授权服务器上的注册,例如使用 Azure Portal、Visual Studio IDE、命令行界面、PowerShell 或 REST API 调用进行 Microsoft Identity Platform 注册。(引用: Microsoft - Azure AD App Registration - May 2019) 然后,他们可以发送鱼叉式网络钓鱼链接给目标用户,诱使他们授予应用程序访问权限。一旦授予 OAuth 访问令牌,应用程序可以通过应用程序访问令牌获得对用户账户功能的长期访问权限。(引用: Microsoft - Azure AD Identity Tokens - Aug 2019) 应用程序访问令牌可能在有限的生命周期内有效,限制对手利用被窃取令牌的时间。然而,在某些情况下,对手也可以窃取应用程序刷新令牌(引用: Auth0 Understanding Refresh Tokens),允许他们在不提示用户的情况下获取新的访问令牌。