10万npm用户账号信息被窃、日志中保存明文密码,GitHub安全问题何时休?

VSole2022-05-30 14:37:51

作者 | 褚杏娟 燕珊

5 月 26 日,GitHub 披露了 4 月中旬一次安全漏洞的更多调查细节,描述了攻击者如何抓取包括大约 10 万个 npm 用户的详细登录信息。同时,这也显示了在将 JavaScript 包注册中心整合到 GitHub 的日志系统后,GitHub 在内部日志中存储了 “npm 注册中心的一些明文用户凭证”。

“明文密码”的发现过程

今年 4 月 15 日,GitHub 披露了有攻击者通过偷来的 OAuth 用户令牌(原本发放给 Heroku 和 Travis-CI),可以有选择地从私人仓库下载数据。自官方在 4 月 12 日首次发现这一活动以来,攻击者已经从几十个使用 Heroku 和 Travis-CI 维护的 OAuth 应用程序的组织中访问并窃取数据,其中包括 npm。

该行为被发现后,GitHub、Travis CI 和 Heroku 撤销了所有 OAuth 令牌,以阻止进一步的黑客攻击。

5 月 26 日,GitHub 产品安全工程高级总监 Greg Ose 表示,该公司在调查期间发现,攻击者可以获得 npm 的内部数据和客户信息,比如 AWS 访问密钥。通过访问 npm 的 AWS 基础设施,攻击者能够窃取 skimdb.npmjs.com 镜像的旧备份信息,具体包括:

一份来自 2015 年的用户信息存档,包含大约 10 万个 npm 用户名、密码哈希和电子邮件地址。截至 2021 年 4 月 7 日的所有私有 npm 包清单和元数据。截至 2022 年 4 月 10 日的所有私有 npm 包的已发布版本的名称和版本号 semVer。来自两个组织的私人包。

经过日志和事件分析以及检查所有 npm 软件包版本的哈希值后,GitHub“目前确信攻击者没有修改注册表中的任何已公开的软件包,也没有对现有软件包发布任何新版本”。GitHub 重置了所有受影响用户的密码,并向受影响组织和用户发送了通知。

GitHub 强调,攻击者不是通过入侵 GitHub 或其系统获得了这些令牌,因为 GitHub 未以原始可用的格式存储相关令牌。由于 npm 使用与 GitHub.com 完全独立的基础架构,GitHub 在这次原始攻击中没有受到影响。

另外,在这次的事件调查中,GitHub 还表示发现了存储在 npm 注册表内部日志中的一些明文凭证。

按照 GitHub 的说法,“经过内部发现和与 OAuth 令牌攻击无关的额外调查,GitHub 发现将 npm 整合到 GitHub 日志系统后,在内部日志中发现了一些 npm 注册表的明文用户凭证。”具体内容包括“npm 访问令牌和少量用于尝试登录 npm 账户的明文密码,以及一些发送到 npm 服务的 GitHub 个人访问令牌。”

不过,只有 GitHub 员工可以访问这些信息。“这个问题已经得到缓解,在对 npm 的攻击之前,包含明文凭证的日志已经被清除了。”

“虽然这种记录凭证的做法违背了我们的安全最佳实践,但 GitHub 或 npm 并没有遇到会暴露这些含有纯文本凭证日志的损害或数据泄露问题。”GitHub 在报告中补充道。

这是由来已久的安全隐患。在 github 上执行一次搜索删除密码操作可以发现,在 repo 中存储密码的情况非常普遍,简单的搜索就返回来 51 万次 commit 记录,这还没有覆盖到没有填写详细的 commit 信息,或者已经通过删除历史记录来掩饰活动的情况。

GitHub 安全问题不断

GitHub 在全球拥有超过 8000 万个存储库,无疑是最受欢迎的开源代码管理系统。但不断爆出的安全问题也一直困扰着 GitHub。

2021 年,Github 日前遭到大规模暴力破解密码的攻击,一些帐号被成功攻破;2020 年,Github 存储库中发现了臭名昭著的 Octopus Scanner 恶意软件;2018 年,Github 更是遭遇了大规模 DDoS 攻击。

根据北卡罗来纳州立大学的研究,通过对超过 100 万个 GitHub 帐户为期六个月的连续扫描,发现包含用户名、密码、API 令牌、数据库快照、加密密钥和配置文件的文本字符串可通过 GitHub 公开访问。

今年 GitHub 在安全问题上再次加码。5 月初,GitHub 宣布在 2023 年之前,所有使用 GitHub 平台存储代码、做贡献的开发者都需要启动一种或多种形式的双因素身份验证(2FA),否则将无法正常使用该平台。促使 GitHub 做出这项决策的直接原因便是,未启用 2FA 的开发人员帐户去年遭到入侵,导致 npm 包被接管。

“大多数安全漏洞并非来自非常复杂的攻击事件或是零日漏洞,相反,往往是一些低成本的攻击,如社会工程、密码泄露,以及其他为攻击者提供访问受害者账户的攻击。”GitHub 首席安全官 (CSO) Mike Hanley 在发布的博文中写道。

虽然有很多场景已经验证了 2FA 的有效性,但是 2FA 在整个软件生态系统中的采用率仍然很低。GitHub 内部研究表明,目前只有大约 16.5% 的活跃用户(大约六分之一)对其帐户启用了增强性的安全措施,只有 6.44% 的 npm 用户启用了 2FA。

使用 GitHub 的一些建议

即便 GitHub 自身在不断加强安全防护,但是每个 GitHub 用户也应该了解一些安全常识,尽量避免因为个人疏忽等原因造成不必要的损失。

1.切勿将凭据和敏感数据存储在 GitHub 上

GitHub 的目的是托管代码存储库。除了设置账户权限外,没有其他安全方法可以确保密钥、私人凭据和敏感数据可以一直处于可控和安全的环境中。

git 代码提交会维护已添加和删除内容的历史记录,从而使敏感数据永久保存在分支上。当分支被合并和再分叉时,潜在的数据或基础设施泄露问题可能会呈指数级增长。

减轻这种风险最简单方法是在提交到分支之前不在代码中存储凭据和敏感数据。但是,可能会发生一些错误。为从编程层面防止错误情况的发生,可以在 CI 和 CD 管道中使用 git-secrets 等工具,通过中断构建过程来防止带有敏感数据的代码到达 GitHub。另外,也可以使用机密和身份管理工具,例如 Vault 和 Keycloak。

2.删除文件中的敏感数据和 GitHub 历史记录

一旦在 GitHub 仓库中发现了敏感数据,就需要采取一些应急处理措施。首先要使曾经公开的令牌和密码无效。一旦秘密公开就要做好已被攻击者掌握的准备。

当然,肯定需要从存储库中删除敏感数据。但 GitHub 非常擅长保留所有提交的完整历史记录,包括敏感信息的变更日志。有关详细信息,可以参阅“从存储库的历史记录中清除文件”。

3.限制访问控制

开发者专注在分析更复杂的攻击手段时,往往一些最简单的事情都没有做好,比如在显示器上贴着记录密码的便利贴等。

无论是在 GitHub 平台,还是一般的场景,开发者都应当遵守基本的安全准则:在每个贡献者的 GitHub 帐户上启用双因素身份验证、永远不要让用户共享 GitHub 帐号和密码、必须适当保护任何可以访问源代码的笔记本电脑或其他设备等等。

4.严格验证 GitHub 上的应用程序

所有好的平台都可以扩展,GitHub 及其应用程序市场也不例外。在将它们添加到代码仓库时要记住第三方应用扩展是由组织和第三方开发人员编写的。

在选择和安装 GitHub 应用程序时注意:不要给应用程序过多的访问权限、询问应用所需访问级别的原因及可能带来的危害、在让应用背后的作者或组织访问代码库之前验证他们的合法性和可信性等。

安全性取决于最薄弱的环节,因此,如果要访问的应用的安全性较差,那么攻击者可以通过攻击它们的应用来访问你的代码——这是开发者最敏感的资产之一。最后,确保定期检查或审计第三方应用及其贡献者,以确保仍然需要他们、信任他们、认为他们值得赋予权限去访问代码。

5.及时更换 SSH key 和个人访问 token

GitHub 访问通常使用 SSH 密钥或个人用户令牌 (代替密码,因为已启用了双因素身份认证) ,开发者可以定期更新密钥和 token,来降低密钥泄露造成的任何损失。

参考链接:

https://www.bleepingcomputer.com/news/security/github-attackers-stole-login-details-of-100k-npm-user-accounts/

https://www.theregister.com/2022/05/27/github_publishes_a_post_mortem/?td=rt-3a

https://snyk.io/blog/ten-git-hub-security-best-practices/

文章来源:infoQ



软件信息存储
本作品采用《CC 协议》,转载必须注明作者和本文链接
2023年12月10日,西班牙国家警察在阿利坎特市发布公告称,臭名昭著的黑客组织“凯尔文安全”金融部门的涉嫌领导人被捕。
针对核心信息系统的安全防护,提出了一种信息系统免疫安全防护架构。免疫安全防护控制包括免疫学习、免疫记忆和疫苗生成等部分,其中,免疫学习主要基于信息系统自身、网络、终端中的各类安全数据,结合外部威胁情报进行信息系统威胁的学习和挖掘,为信息系统潜在威胁的检测识别提供支撑。免疫记忆主要针对信息系统各类应用服务以及典型威胁攻击进行行为建模和应用画像。
SNMP(Simple Network Management Protocol,简单网络管理协议)是由一组网络管理的标准组成,包含一个应用层协议和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。本文介绍利用SNMP服务获取主机信息的方法
机器学习使企业的SIEM能够促进跨大型数据集的威胁检测,从而减轻安全团队的一些威胁搜寻责任。为企业的SIEM提供对一个或多个威胁情报源的持续访问,使机器学习技术能够使用威胁情报提供的场景。不幸的是,由简单的机器学习功能支持的SIEM无法与人类的创造力和网络攻击者的集体协作相匹敌。SIEM中的人工智能元素可以通过对所有警报自动应用情境化来识别误报。
随着云数据存储的不断发展,可以让我们把大量的数据转移到云端,让信息存储和备份都变得更加方便和快捷,不过集中式云存储系统也存在着一定的弱点,那就是系统可能会存在大量漏洞,这些漏洞会造成我们数据以及信息丢失或泄露。只有熟悉各种攻击类型的加密专家才能创建可靠的产品保护。向日葵始终相信,未来随着科技和信息的不断发展,云数据存储还有着很大的进步空间,各项反漏洞技术一定也会越来越高,让信息存储更可靠。
存储是一个以数据存储和管理为核心的云应用系统,给企业组织提供了一种全新的数据信息存储模式。尽管目前云存储的安全性问题已经有了很大改善,但由于云计算技术自身的特点,决定了它在安全性方面仍然有很大的挑战,一旦云存储的安全防线被攻破,其中存储的数据都将会被泄露。
在10月13日周六晚,美国北卡罗来纳州杰克森维尔的水务公共设施公司(ONWASA)遭Ryuk勒索软件病毒袭击。该公共设施为大约15万人提供服务。ONWASA声明中称,10月4日,多态的EMOTET恶意软件开始在公共设施网络进行传播,该攻击已经造成了不堪重负的后果,工人们建立账户,并手动完成服务订单。
BlueSky作为近期发现的一种勒索软件变种,在今年3月份首次出现,在6月末开始爆发。此外,BlueSky使用DJB散列函数对API名称进行计算,并将它们与代码中的模糊哈希值进行比较,以便正确导入所需的模块。该线程可以执行反调试检查,例如代码校验、调试标志验证等。生成椭圆曲线密钥对后,BlueSky 计算出共享密钥的哈希值,并使用它为 ChaCha20 算法生成文件加密密钥。
此类问题主要存在于后台登陆页面以及类似网页内引入的JS文件中。根据此类漏洞,说不定登陆页面下引入的js文件暴露的后台路径会成为突破口。因为此类问题利用方式和造成的危害与即将谈论到的第三类问题不同,所以把这类问题单独拿出来讲一讲。部分厂商更是因此降低了对XSS的评级。
近期,Unit 42的研究人员在分析Medusa(美杜莎)勒索软件活动时,发现该活动的升级和勒索策略发生了很大变化。
VSole
网络安全专家