4 月 15 日,Github
官方博客上披露了盗取 Github.com
集成商 Heroku
和 TravisCI
的 OAuth
令牌用作攻击的行为。数十个 Github
组织受到此次的攻击的影响,例如 npm
组织。自 4 月 12 日以来,官方决定彻查此次事件,下面是该该事件泄露的数据情况和一些调查细节:
- 攻击者盗取的
OAuth
用户令牌来自于Heroku
和Travis CI
,利用OAuth
攻击者可以提高对npm
基础设施的访问权限,并从npm
中盗取部分文件,被盗取的文件有如下几类:- skimdb.npmjs.com 备份数据(包含 2021 年 4 月 7 日),其中数据包含:
- 2015 年用户信息档案,包括大约10 万 npm 用户的用户名、密码哈希和电子邮件地址
- 截至 2021 年 4 月 7 日的所有私有 npm 仓库清单和包元数据
- 截至 2022 年 4 月 10 日所有 npm 私有仓库的已发布版本的所有名称和版本号 (semVer) 的存档。
- 两个组织的私人仓库
- skimdb.npmjs.com 备份数据(包含 2021 年 4 月 7 日),其中数据包含:
Github
的一些日志和事件分析以及仓库的哈希验证- 在调查
OAuth
的过程中,Github
还发现了许多用于npm
注册的明文凭证,官方已经清除了此类信息。
通过被盗的 OAuth 用户令牌提高 npm 的访问权限
据 GitHub Security
调查,被盗取的 OAuth
用户令牌来源于两个第三方 OAuth
集成商 Heroku
和 Travis CI
,攻击者利用 OAuth
用户令牌从数十个 Github
组织下载数据,npm
便是此次攻击的受害者。Github
官方表示,他们未以原始可用格式存储相关令牌,这也排除了攻击者直接攻击 Github
获取令牌的可能性。
具体的攻击流程如下: 攻击者利用 OAuth
用户令牌作为转点,入侵私有 npm
存储仓库,下载到 AWS
访问密钥等私有数据。利用 AWS
访问密钥,攻击者便可以访问 npm
的 AWS
基础设施,最终盗取了上文提到的各类内容。
存储在内部日志中的明文凭证
调查 OAuth
的过程中,官方还发现存储在内部日志系统中的一部分 npm
服务日志并没有及时清理或者删除,包括一些 npm
访问令牌和少量尝试登录 npm
的明文密码以及发送 npm
服务的 Github
个人令牌。虽然这些数据只有 Github
官方可以访问,不会造成数据的泄露,但这种凭证记录的方式违背了 Github
的最佳安全事件,不利于用户隐私和安全的信任维护。因此官方改进了其日志服务并清楚了受影响日志。
如果想了解更多,请参考: github.blog/2022-05-26-…