专业的编程技术博客社区

网站首页 > 博客文章 正文

专业洞察:GitHub漏洞允许第三方应用程序获取升级权限

baijin 2024-10-11 10:45:13 博客文章 12 ℃ 0 评论


我们在GitHub中发现了一个Bug,在今年2月底的大概5天内,该漏洞都允许与GitHub连接的第三方应用程序生成具有升级权限的安装口令(token)。打个比方,如果您将Codecov应用程序连接到您的GitHub帐户,并对您的代码库设置只读访问权限,在该窗口期间,应用程序可能会创建一个具有写入权限的新token。这个Bug可能会引发重大安全问题,包括数据丢失以及机密和凭证的泄露。而GitHub没有及时披露该漏洞,因此实际影响范围尚不能确定。



GitHub Apps是什么?



GitHub Apps是GitHub官方推荐的集成应用程序平台,允许您利用webhook和GitHub的API更改GitHub的面板功能。开发人员可构建集成来添加他们自己喜欢的GitHub功能、自动化常规流程,并扩展其项目中的工作流。目前,GitHub Marketplace上的应用程序已超过580个,其中最热门的应用程序已达到数十万次的安装量。


最热门的GitHub Apps


GitHub应用程序可以安装在企业和个人帐户上,并且可被授予对特定代码库的访问权限。只有企业所有者或在代码库中具有管理员权限的人才可安装GitHub应用程序。默认情况下,只有组织所有者才有权进行组织中GitHub应用程序的设置。




GitHub应用程序是如何使用token

进行身份验证的?



据GitHub所言,GitHub应用程序采用以下任一方式进行身份验证:JSON web token(JWT)、OAuth token或安装访问token。我们正在审查的漏洞与安装访问token有关。安装token是通过JWT生成的,所以让我们来了解一下它是什么,以及它是如何运行的。


JWT是一种开放标准,它定义了一种将信息作为JSON对象传输的安全方式。因为这种信息是数字签名,是可验证和可信任的。JWT通常用于大型技术公司的授权。它允许安全的访问委托,使第三方应用程序能够安全地交换凭证信息,而无需用户泄露其密码。


打个比方,您想让某款游戏访问您的Facebook好友列表。游戏可以以JWT为token,在您批准的情况下使用OAuth从您的Facebook帐户请求该资源。OAuth token的有效期通常不到一个小时,这是为了防止它们泄漏和遭到恶意使用。


在获得您的批准后,游戏(以及与此相关的任何第三方应用程序)可以在需要访问该资源的任何时候,请求获得此作用域OAuth令牌,从而获得一个全新、有效,但有时效限制的访问令牌。




这些tokens发生了什么问题?



通常,GitHub应用程序会根据在用户帐户或企业中安装应用程序时所授权的范围和权限,来创建安装口令(token)。比如,如果您授予应用程序读取用户配置文件数据的权限,则该应用程序生成的token将具有“读取:用户”权限。


最新发现的漏洞允许GitHub应用程序在2022年2月25日至2022年3月2日之间的大约五天时间内,生成具有升级权限的安装口令(token)。例如,应用程序可能已生成具有“写入:用户”权限的tokens,其权限高于最初授予的“读取:用户”权限。每个令牌的有效期可以长达一小时。


不过,除了最初授权的范围之外,应用程序将无法获得其他作用域的新权限,例如“安装包”。


GitHub表示已立即展开调查,并迅速修复了该漏洞。




潜在影响



这个漏洞的暴露范围广泛,可能会带来巨大的潜在影响。每家使用GitHub并安装了GitHub应用程序的公司,甚至这些公司的每位员工,都可能受到其影响。不过,GitHub尚无证据表明该漏洞曾被恶意利用。


在漏洞暴露窗口期生成的每个token,都有可能获得管理员访问权限,这可能会对企业造成极大破坏。举个例子,对于软件供应商来说,如果包含源代码和知识产权的私有代码库被泄露或删除,就可能意味着该公司的终结。




应对措施和建议



这一问题对您环境所造成的实际影响将取决于您在安装第三方应用程序时所授予的权限范围。GitHub无法确定该漏洞是否曾被利用,而那些可能生成并遭到恶意使用的短期tokens早已不复存在。


尽管如此,我们仍然建议您查看所有已安装的GitHub应用程序及其作用范围和权限。您可以使用GitHub的GitHub应用程序评估指南、其权限以及其对您私人组织代码库的访问权限。


从长远来看,适当采用软件供应链中第三方访问的专用解决方案,有助于抵御未来出现此类风险。例如,基于最近收购Argon的技术,Aqua的云原生应用程序保护平台(CNAPP)提供了软件供应链安全解决方案,可防范此类供应链威胁。


小 结

GitHub的这一问题突显出,对企业来说,第三方应用程序和包是一个日益严峻的安全风险。总体而言,这些第三方应用程序和软件供应链缺乏管理、控制和可见性,导致越来越多攻击者为收集信息和渗透企业而对其发起攻击。仅在2021年,软件供应链攻击就增加了300%以上。


更重要的是,第三方应用程序的行为并不总是像我们预期的那样,它们甚至可以利用正常程序逻辑来泄露敏感数据。Aqua的Nautilus团队的最新研究就表明了这一点,我们发现,数以万计的免费用户tokens经由TravisCI的API而遭到暴露。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表