利用 OAuth 用户令牌进行攻击的事件梳理

1219

4 月 15 日,Github 官方博客上披露了盗取 Github.com 集成商 HerokuTravisCIOAuth 令牌用作攻击的行为。数十个 Github 组织受到此次的攻击的影响,例如 npm 组织。自 4 月 12 日以来,官方决定彻查此次事件,下面是该该事件泄露的数据情况和一些调查细节:

  • 攻击者盗取的 OAuth 用户令牌来自于 HerokuTravis CI,利用 OAuth 攻击者可以提高对 npm 基础设施的访问权限,并从 npm 中盗取部分文件,被盗取的文件有如下几类:
    • skimdb.npmjs.com 备份数据(包含 2021 年 4 月 7 日),其中数据包含:
      • 2015 年用户信息档案,包括大约10 万 npm 用户的用户名、密码哈希和电子邮件地址
      • 截至 2021 年 4 月 7 日的所有私有 npm 仓库清单和包元数据
    • 截至 2022 年 4 月 10 日所有 npm 私有仓库的已发布版本的所有名称和版本号 (semVer) 的存档。
    • 两个组织的私人仓库
  • Github 的一些日志和事件分析以及仓库的哈希验证
  • 在调查 OAuth 的过程中,Github 还发现了许多用于 npm 注册的明文凭证,官方已经清除了此类信息。

通过被盗的 OAuth 用户令牌提高 npm 的访问权限

GitHub Security 调查,被盗取的 OAuth 用户令牌来源于两个第三方 OAuth 集成商 HerokuTravis CI,攻击者利用 OAuth 用户令牌从数十个 Github 组织下载数据,npm 便是此次攻击的受害者。Github 官方表示,他们未以原始可用格式存储相关令牌,这也排除了攻击者直接攻击 Github 获取令牌的可能性。

具体的攻击流程如下: 攻击者利用 OAuth 用户令牌作为转点,入侵私有 npm 存储仓库,下载到 AWS 访问密钥等私有数据。利用 AWS 访问密钥,攻击者便可以访问 npmAWS 基础设施,最终盗取了上文提到的各类内容。

存储在内部日志中的明文凭证

调查 OAuth 的过程中,官方还发现存储在内部日志系统中的一部分 npm 服务日志并没有及时清理或者删除,包括一些 npm 访问令牌和少量尝试登录 npm 的明文密码以及发送 npm 服务的 Github 个人令牌。虽然这些数据只有 Github 官方可以访问,不会造成数据的泄露,但这种凭证记录的方式违背了 Github 的最佳安全事件,不利于用户隐私和安全的信任维护。因此官方改进了其日志服务并清楚了受影响日志。

如果想了解更多,请参考: github.blog/2022-05-26-…