4 月 15 日,GitHub Security(GitHub 安全部)经调查发现,有攻击者滥用被盗的 OAuth 用户令牌(发放给 Heroku 和 Travis-CI 这两家集成商的),从包括 npm(JavaScript 运行时环境 Node.js 的默认包管理器)在内的数十个组织中下载数据。
OAuth 令牌被盗用
GitHub 首席安全官 Mike Hanley 表示,最初发现事件的相关信息是在 4 月 12 日,GitHub Security 发现有人未经授权使用一个受损的 AWS API 密钥访问 GitHub 的 npm 生产基础设施。随后他们分析发现,遭盗用的 OAuth 权限来自 Heroku 与 Travis-CI 其中一家集成商,而这个 API 密钥是使用窃取的 OAuth 令牌下载一组私有 npm 存储库时获得的。
Mike Hanley 还表示,在 4 月 13 日晚发现第三方 OAuth 令牌被广泛窃取后,他们立即采取行动,通过撤销与 GitHub 和 npm 内部受损应用程序有关的令牌来保护其自身。
npm 受到主要影响
GitHub 通过对攻击者的其他行为分析表明,被盗的 OAuth 令牌可以访问攻击者挖掘下载的私有存储库内容,攻击者以此获取可以用来进入其他基础设施的密钥。但 GitHub 不认为攻击者是通过破坏 GitHub 或其系统来获得这些令牌的,因为 GitHub 并没有以其原始可用的格式存储这些令牌。
GitHub 方面认为,对 npm 组织的影响主要有两个,其一是未经授权访问和下载 GitHub.com 中的私有存储库,其二是“潜在访问”AWS S3 存储中的 npm 包。另外,虽然 GitHub 经过评估认为攻击者没有修改任何包或获得任何用户的数据和凭证,但他们仍然在继续调查攻击者是否查看或下载了私有包。不过由于 npm 使用的是与 GitHub.com 完全分离的基础设施,因此 GitHub 在这次原始攻击中并没有受到影响。
目前调查仍在继续,但 GitHub 还没有发现任何证据表明攻击者使用被盗的第三方 OAuth 令牌克隆了其他 GitHub 拥有的私有存储库。
截至 2022 年 4 月 15 日,已知受影响的 OAuth 应用程序:
Heroku Dashboard (ID: 145909)
Heroku Dashboard (ID: 628778)
Heroku Dashboard – Preview (ID: 313468)
Heroku Dashboard – Classic (ID: 363831)
Travis CI (ID: 9216)
GitHub 的应对措施及建议
一旦 GitHub 发现被盗的第三方 OAuth 令牌会影响 GitHub 用户,GitHub 将会立即采取措施做出回应以及保护用户。GitHub 目前与 Heroku 和 Travis-CI 保持密切联系,以协助他们进行调查和恢复工作,并要求他们启动自己的安全调查,撤销所有与受影响的应用程序相关的 OAuth 用户令牌以及通知他们自己的用户。
目前,GitHub 表示,他们正在努力识别以及通知那些已经受到影响的用户和组织,这些用户和组织将会收到一封来自 GitHub 的通知电子邮件,其中包含更多的详细信息和后续步骤,以帮助用户在接下来的 72 小时内做出回应。
GitHub 同时建议用户和组织应当定期查看已经授权或被授权访问的 OAuth 应用程序,并及时删除所有不再需要的东西。此外,用户还可以查看自己的组织审计日志和用户账户安全日志以了解意外或异常的活动。