网上博彩app排名

当前位置:网上博彩app排名 > 网上博彩app排名 > >> 浏览文章

倚赖存储库劫持漏洞已经影响谷歌 GitHub 等 7 万众个开源项现在标供答链

钻研人员比来发现了倚赖存储库劫持的情况专门普及,这是一个暗藏的漏洞,批准任何人在用户更改用户名的情况下劫持存储库。这个漏洞相通于子域接管,行使首来很容易,并且会导致长途代码注入。在分析了这个漏洞的开源项现在并总结了搜索它们的倚赖有关图后,钻研人员发现有超过 70000 个开源项现在受到影响,这包括来自谷歌、GitHub、Facebook 等公司的通走项现在和框架。为了缓解这个漏洞,请确保你的项现在不倚赖于 GitHub 的直接 URL 或行使倚赖有关锁定文件和版本固定。

什么是 Repo Jacking?

倚赖存储库劫持 ( 别名 "Repo Jacking" ) 是供答链上一个鲜为人知的漏洞,在概念上相通于子域名接管,影响超过 7 万个开源项现在,影响从 web 框架到添密货币的所有操作。这个漏洞行使首来很不容易,会导致长途代码注入,并影响来自谷歌、GitHub、Facebook、Kubernetes、NodeJS、Amazon 等公司的宏大项现在。钻研人员在比来的一次运动中首次发现这个漏洞后,就想晓畅这个漏洞有众普及,于是就对所有开源项目进展走了递归分析,效果发现它专门普及。

哪些对象易受 Repo Jacking 抨击?

每个编译倚赖于 GitHub 存储库动态链接代码的项现在都能够受到抨击,不过抨击要成功,必要已足以下两个条件:

1. 你的代码必要直接引用 GitHub 存储库 ( 清淡行为倚赖有关 ) 。

2. 存储库的所有者必要更改 / 删除他们的用户名。

当链接的存储库所有者更改其用户名时,任何人都能够立即重新注册该用户名。这意味着,任何链接回原首存储库 URL 的项现在现在都很容易受到倚赖劫持的长途代码注入的抨击。凶意抨击者能够注册旧的 GitHub 用户名,重新创建存储库,并行使它向倚赖它的任何项现在挑供凶意代码。

即使倚赖于 GitHub 存储库的项现在现在还不容易受到抨击,但倘若其中一个倚赖有关的所有者更改了他们的用户名,那么该项现在和其他倚赖于该旧链接的项现在就会受到 repo jacking 的抨击。当存储库更改位置时,能够会展现某栽警告,比如 "404 - 未找到存储库 " 之类的漏洞,但实际上异国。此外,Github 的一项幼功能(存储库重定向)使此漏洞清晰更添危险。

" 存储库重定向 " 使抨击更添主要

当 GitHub 用户更改存储库的名称或用户名时,GitHub 竖立了一个从旧 URL 到新 URL 的重定向,这栽重定向同时适用于 HTTP 和 Git 乞求。当用户更改其用户名、传输存储库或重命名存储库时,就会创建此重定向。这边的漏洞是,倘若重新创建原首存储库 ( 在本例中为 "twitter/bootstrap" ) ,重定向将休止,并将你发送到新创建的存储库。

示例场景

链接 https://github.com/twitter/bootstrap 指向资源库 "twitter/bootstrap",但实际上会将你重定向到 "twbs/bootstrap" 资源库。

倘若 Twitter 更改了他们的 GitHub 用户名,那么任何人都能够重新注册它,重新创建一个名为 "bootstrap" 的资源库,任何对 https://github.com/twitter/bootstrap 的新乞求都将进入新创建的资源库。

任何倚赖于 https://github.com/twitter/bootstrap 的项现在现在都将最先从这个新存储库添载代码。

重定向是一个方便的功能,由于它意味着当你重命名你的帐户时链接不会立即休止。但这也意味着你的项现在能够在无声无息中变得容易受到 Repo Jacking 的抨击。从你的角度来望,什么都异国转折,你的代码编译照样是相通的,一致都根据它答该的手段做事。但是,你的项现在现在很容易受到长途代码注入的抨击,而且你并不晓畅。

三栽劫持场景

更详细地说,从技术上讲,有三栽差别的手段能够使存储库变得能够被劫持:

GitHub 用户重命名其帐户。这是存储库可劫持的最常见手段,由于用户重命名其帐户并不稀奇,并且在用户重命名帐户后,由于存储库重定向,一致都会按预期进走。

Github 用户将其存储库迁移到另一个用户或机关,然后删除其帐户。用户迁移存储库时,将竖立重定向,并经过删除其用户来掀开它,使其被任何人劫持。

用户删除其帐户。这是三者中影响最幼的,由于从原首用户删除帐户的那一刻首,任何引用该帐户的项现在在尝试获取存储库时都会最先展现漏洞。

仔细:在用户删除帐户和项现在尝试获取存储库之间,有几次抨击者重新注册已删除的用户名,细目请点此。

GitHub 的回答

在发布本文之前,钻研人员已与 GitHub 有关,他们外示固然这是一个已知漏洞,但是他们现在尚无任何计划来更改重定向或用户名重用的手段。他们只是经过不准重新注册导致删除一周之内具有 100 个以上新复制的存储库名称来为某些受迎接的存储库挑供了一些缓解此题目的手段,如下所述。这实在挑供了肯定水平的珍惜,但不是稳操胜券的解决方案,由于很众较幼的存储库不相符此标准,但照样能够为通走项现在所倚赖。

这边的根本漏洞不是 GitHub 批准重定向和用户名重用,而是开发人员从担心然的位置挑取代码。GitHub 无法监督那些出于不测现在标行使其服务的开发人员。有很众可用的包管理器 ( 原形上,GitHub 本身就有一个 ) 用于解决长途代码倚赖漏洞,开发人员有义务确保他们从坦然位置添载代码。

漏洞影响周围

漏洞影响周围有众大,原形表明,筛选所有盛开源码项现在,编译它们的倚赖有关,找到所有可被劫持的存储库,并构建易受抨击的存储库的倚赖有关图并不容易。

步骤 1:数据搜集

对开源柔件进走大周围分析时,最难得的片面之一是初首数据搜集。为所有开源项现在找到一个最新的、实在的、容易搜索的索引是很难得的。钻研人员主要行使两个数据集进走分析 :

GitHub 运动数据

这是由 Github 本身挑供的,是一个壮大的数据集,包括超过 280 万个存储库,以及它们的所有文件和内容,整个数据集的内容超过 3TB。方便的是,它被托管为谷歌云平台 ( GCP ) 上的一个公共 BigQuery 数据集,这意味着钻研人员能够行使 BigQuery 从 GCP 本身内部在整个数据集上运走 SQL 命令,而不必要下载整个 3TB 文件。

为了实际实走搜索,钻研人员生成了一个正则外达式,用于捕获任何 Github URL 或其他常见的 Github 倚赖链接格式,如 Github:username/reponame。行使这个正则外达式,钻研人员能够为包含对 GitHub 链接的引用的每个文件挑取存储库、文件名和文件内容。这将钻研人员的搜索空间从 3TB 萎缩到更易于管理的 4GB。经过过滤的数据集包括 400 万个稀奇的 GitHub 链接和超过 70 万个差别的 GitHub 用户。

libraries.io

libraries.io 是一个开源项现在,旨在异日自众个差别打包程序管理器的所有倚赖聚相符成一个相通图外的数据集。这是令人惊奇的,由于它不光为钻研人员完善了连接什么倚赖什么的所有繁重做事,而且它还挑供了整个数据集可供免费下载。未压缩时,该数据集超过 100GB,但能够直接添载到数据库中,以便于处理。

钻研人员行使这两个数据集是很主要的,由于每个数据集拿手差别的事情。"Github 运动数据 " 数据集批准钻研人员找到存储库中引用的每一个能够的 Github 链接,即使它异国被用在清晰的地方,比如包管理器清单中。一些最兴趣的发现并纷歧定是直接的代码倚赖,钻研人员频繁发现,在 bash 脚本中直接行使 Github url 来复制存储库或 docker 映像,这些映像将在构建时从 Github 挑取存储库。

示例安置脚本 ; 任何人都能够注册 GitHub 的链接

另一个常见的发现是可劫持的存储库行为 Git 子模块,这是标准倚赖分析能够会无视的。

另一方面,"libraries.io" 数据集是一个已经修整、过滤和格式化的数据集,它使吾们能够构建倚赖图并轻盈评估此漏洞的普及性。经过这些数据集,吾们能够更周详地晓畅此漏洞对开源项现在标总体影响。

步骤 2:修整

搜集了所有这些数据后,钻研人员必要对其进走修整和规范化,这是一项义务量很大的做事,由于钻研人员必要考虑每个程序包管理器的差别格式。此外,钻研人员期待删除所有实际上异国行为倚赖有关行使的链接。这些链接中有很众是在注解中行使的,例如 //code inspired from github.com/username/reponame,或者在文档文本文件中。由于钻研人员主要关心代码注入的能够性,因此钻研人员删除了代码不会直接行使的任何内容。这就给钻研人员留下了超过 200 万个稀奇的 GitHub 链接,这些链接被文件以有意义的手段引用。

步骤 3:可劫持的用户名

现在钻研人员有了一个直接倚赖于 GitHub 链接的清亮项现在线外,钻研人员必要找到现在未注册的用户。到现在为止,钻研人员有大约 650k 个 Github 用户名必要修整。行使 GitHub API,钻研人员能够检查用户名是否存在,但钻研人员的速度限定在每幼时 5000 个乞求,这意味着检查所有用户名要消耗 5 天以上的时间。经过一些纤巧的逻辑和 GitHub GraphQL API,钻研人员能够将扫描所有 650k 用户的时间缩幼到 2 幼时众一点。

那么,效果如何呢?钻研人员发现,钻研人员搜集的用户名中有 7% ( 约 50k ) 是未注册的。忠实说,钻研人员没想到这个数字会这么高。钻研人员认为只有不到 1% 的用户名是能够被劫持的。隐微,人们对本身的用户名感到讨厌的水平远远超过预期。

步骤 4:易受抨击的项现在

一旦钻研人员有了所有能够被劫持的用户名,漏洞就只是对钻研人员的数据集进走逆向搜索,每个项现在都倚赖于一个用户名所拥有的存储库。经过进一步的过滤和修整误报后,钻研人员发现统统有 18000 个项现在直接容易受到库劫持的抨击。这些项现在在 GitHub 上统统有超过 50 万颗星星,并且包括了来自一些最大的开源机关的几乎每栽说话的项现在。

仅这个数字就令人恐惧,但是当代代码库并不是运走在单个存储库中的壮大集体。相逆,它们在功能上倚赖于很众其他项现在。这对于可维护性和可重用性来说是很益的,但这意味着单个通走倚赖有关中的漏洞会极大地影响倚赖有关链上的很众项现在。实际上,任何倚赖于 18000 个直接易受抨击项现在标项现在本身也是易受抨击的。

步骤 5:倚赖性分析

现在钻研人员就有了一个直接易受抨击的项现在线外,将其与以前的数据集一首用于实走倚赖有关图瑕玷搜索,并找到每个倚赖其供答链中易受抨击的仓库的项现在。在此分析中,钻研人员包括了清淡的倚赖有关和不太清晰的倚赖有关,比如开发倚赖有关或不在主包清单文件中的倚赖有关。倘若这些辅助倚赖有关中的一个容易受到 repo sniping 的影响,则影响能够必要更长的时间才能在倚赖有关链上传播,由于这栽影响能够仅在开发人员发布新版本时才会发生。考虑到这一点,钻研人员最先了抨击分析。

由于易受抨击项现在标数目能够会呈指数级添长,钻研人员会徐徐进走遍历。在每次传递过程中,钻研人员都手动检查效果,并删除任何清晰的误报,以最幼化漏洞传播,并确保钻研人员的效果不会被误报所袒护。

经过 5 次遍历后,钻研人员不得不息下来。由于在第 5 轮之前,数据的添长都是能够展望的,且每一轮搜索都消耗了相符理的时间,但当钻研人员进走第 6 轮遍历时,数据最先不能控制地添长。望望第五轮的效果,因为就清新了,钻研人员已经竖立了众个大型的基础框架,并被成千上万的其他项现在所倚赖。这足以让钻研人员理解这一漏洞的影响。截至现在,钻研人员已经发现了超过 7 万个受影响的项现在,其中 GitHub 明星项现在总数超过 150 万个,这比 GitHub 前 8 大原料库添首来还要众。固然这很难准确衡量,但钻研人员推想这些项现在标总下载量至稀奇 200 万。

受影响的项现在包括来自夸型机关(例如 Google,GitHub,Facebook,Kubernetes,NodeJS,Amazon 等)的存储库。从幼型幼我用户项现在到成千上万个机关行使的通走 Web 框架,一致都受到影响。兴趣的是,它会影响很众差别类型的柔件。钻研人员发现了易受抨击的路由器固件、游玩、添密钱包、移动行使程序和很众其他稀奇的项现在。

缓解措施

1. 不要直接链接到 GitHub 存储库。

2. 版本固定和锁定文件。

 

随机文章

相关站点

友情链接

Powered by 网上博彩app排名 @2018 html地图

Copyright 365建站 © 2013-2021 版权所有