CMU等曝光GitHub「地下产业链」!450万个Star都是刷的

全文4598字,阅读约需14分钟,帮我划重点

划重点

01CMU团队通过开发工具StarScout,发现GitHub平台上的虚假star现象日益严重,可能影响开源项目的透明度和声誉。

02研究者分析了450万个疑似虚假star的仓库,发现其中15%的仓库涉及star造假。

03虚假star可能用于传播恶意软件、钓鱼攻击等恶意行为,甚至进行黑客攻击。

04然而,虚假star在短期内可能帮助仓库获得真实关注,但长期来看会产生负面影响。

05研究者建议开源项目维护者和初创公司创始人关注项目实际质量,而非表面上的star数量。

以上内容由腾讯混元大模型生成,仅供参考

图片



  新智元报道  

编辑:泽正 英智
【新智元导读】GitHub平台上日益严重的虚假star,不仅威胁到开源项目的透明度和声誉,还可能被利用于传播恶意软件和钓鱼攻击。CMU团队通过开发工具StarScout,系统分析了虚假star的特征、趋势及其对软件供应链安全的潜在影响。

什么?Github的star居然都能是假的了,甚至数量达到了惊人的450万!
大多数的研究人员都会将自己的项目发布到Github中,以增加曝光度。项目的star也一直被大家视作是用来检验项目热度的关键指标。
但是CMU团队新近研究StarScout却实锤了Github中疑似有450万star全都是假的!
很多项目存在恶意账户去刷star,以来吸引注意,甚至在对应的项目中注入恶意代码,以攻击那些想要复现项目的研究人员。
现在有15%的可能性,一个获得50个star的仓库涉及star造假。

图片

论文链接:https://arxiv.org/abs/2412.13459
就像著名美国心理学家Donald T. Campbell所说,「任何量化社会指标在社会决策中用得越多,它就越容易腐败,就越容易扭曲和腐败它打算监测的社会进程」。
Github里高star项目这种足以风靡全球的吸引力,自然也逃不过如此规律。
如下关于GitHub仓库star数据的图表,展示了从2019年8月到2024年8月期间,每月获得至少50颗星的仓库数量(蓝色折线)以及每月疑似存在虚假星级活动的仓库数量(橙色柱状图)的变化情况。
  • 蓝色折线(#Repos>=50 star):代表每月获得至少50颗star的GitHub仓库数量。

  • 橙色柱状图(#Repos w. Suspected Campaigns):表示每月疑似存在虚假star活动的仓库数量。
图片
从图表中可以看出,虽然获得至少50颗star的仓库数量总体较为稳定,但疑似存在虚假star活动的仓库数量在近年来呈现明显上升趋势,尤其是在24年。
如果你在谷歌中搜索「buy GitHub star」,就会显示出众多这方面的服务商。其中每个star的价格,最低购买数量,star到账时间都如下表一样,明码标价。
而更令人匪夷所思的是,很多服务商甚至宣称可以在数小时之内,甚至立刻就能让项目具有足够的star。
图片
因此,GitHub库可以通过购买star来用于黑客攻击、发送垃圾邮件、求职简历造假,甚至去传播恶意软件而非法营利等有安全威胁的恶性事件。
例如这个拥有111颗star的项目,但其中109颗实际都是假的。项目的README文件(左上图)建议使用区块链应用程序,但如果执行,其代码(底部图)会使用隐藏的spawn函数来调用远程文件去执行脚本(名称为看似合法的JavaScript包)来窃取你的加密货币。
令人哭笑不得的是,项目有唯一的一个issue,大概是由受害者创建的,他警告这里隐藏着恶意软件。
图片
而真正的开发者则对这种现象十分的不理解与抵触。
「我很困惑为什么有人会想买假的GitHub star。我的意思是,有这么多假账户而不是真实的人关注你又有什么意义。」
图片

如何判定star是假的?

下述两幅图展示了涉及到假star的GitHub库对应的名称数据,分别为已删除的库和仍然存在的库。
图片
图片
可以发现,auto、bot、2024、telegram、free等都是涉嫌star欺诈的常见库名称。
而大多数已被删除的库似乎都是关于盗版软件的(加密货币机器人pixel-wallet-bot-free、Solana-Sniper-Bot)或游戏作弊(GTA5-cheat)。
下表描述了参与star欺诈活动的GitHub账户主要有哪些特征,可以看出其中没有GitHub组织、没有公司关系和没有个人网站的帐户所占比例最高。
也就是说,如果一个账户具有默认头像,也不属于GitHub上的组织,并且在其个人资料中没有任何从属关系或网站,他的项目仓库名还涉及到了上面两个词云图中的高频词的话,那么这个账户对应的仓库很大概率涉嫌star欺诈活动,甚至意图进行恶意欺诈和黑客攻击。
图片
而就star交易来讲,从以往研究文献中可知,GitHub star黑市至少以三种不同方式运作:
  • 商家可以在自己的网站、即时通讯应用程序或淘宝等电子商务平台上公开出售GitHub star。

  • GitHub用户可能会组建交换平台(如GitStar或即时通讯群组),然后对彼此的GitHub仓库进行互star操作。

  • 一个GitHub仓库可能会直接用礼物激励其广告活动的受众为仓库加star(如OceanBase所发生的情况)。
所有这些运作方式似乎都违反了GitHub的可接受使用政策,该政策禁止以下行为:
  • 不真实的互动,如虚假账户和自动的不真实活动

  • 排名滥用,如自动加星或关注

  • 由加密货币、代币、积分、礼物或其他赠品等奖励所激励的活动
在上述讨论的所有三种情况下,研究者认为这些购买、交换或受激励而获得的 GitHub star是虚假的,因为它们是人为抬高的,并不真正代表真实GitHub用户对仓库的任何真实赞赏、使用或收藏。

StarScout设计

图片

StarScout的概述图
从整体上看,StarScout在GHArchive上应用分布式算法,以从GitHub历史中定位两种异常star行为的特征:低活动特征和同步特征,这两者很可能与虚假star相关。
具体来说,低活动特征用于识别那些对一个或几个代码仓库star后便不再活跃的账户的stars;而同步特征识别来自n个账户集群的stars,这些账户在短的∆t时间窗口内反复一起对另一个包含m个仓库的集群进行star。
在虚假star与真实star之间划定明确边界并不容易,某些特殊情况,例如一个GitHub教程仓库要求读者为其点star作为教程的一部分,会增加这种区分的复杂性。
StarScout使用一个由用户和代码仓库组成的双向图(Stargazer Bipartite Graph)来处理这些特征的检测。
在低活动特征的检测中,StarScout会识别仅有一个WatchEvent(即只为一个GitHub仓库点star)以及在同一天最多一个附加事件(如ForkEvent)的账户。
尽管被检测的账户可能是由虚假star商控制的一次性机器人账户,但也可能是误判的真实用户,例如某人本来是合法注册的真实账户,但是在为一个仓库点star后就将自己的GitHub搁置了。
为了缓解这一问题,StarScout只考虑那些至少拥有50个被怀疑为虚假star的代码仓库。
这种行为是GitHub star商无法规避的,因为无论他们采用何种混淆方法,这些账户通常都是新注册的一次性账户,或者是在短时间内为多个仓库点star以满足交付承诺。
从数学角度来看,GitHub上的所有star可被建模为一个二分图:每个用户和代码仓库是一个节点,它们的star关系构成边,而star时间则作为边的属性。
如果一个虚假star商控制了一组n个账户,在承诺的交付时间内为m个代码仓库点star,那么它们将在star双向图中留下所谓的<n, m, ∆t, ρ>时间上连贯的近似二分核。
之前的一些研究也已表明,这种近似二分核于在线社交网络中很难自然形成,并且与欺诈活动高度相关。
然而,找到最大二分核的问题是NP难的。
因此,StarScout重新实现了CopyCatch,这是一种最先进的分布式局部搜索算法,曾用于Facebook检测虚假点赞。通过该算法,StarScout检测GitHub star双向图中的近似二分核。
CopyCatch从一组种子仓库(所有具有≥50颗star的仓库)开始;然后它迭代地生成一个时间中心,并增加n和m,为每个种子仓库在该时间中心内找到一个局部最大的近似二分核。最后,大于预定义n和m阈值的二分核将被视为虚假star。
虽然处理低活动特征和同步特征的两种启发式方法能够识别GitHub star数据中的显著异常模式,但并不能假定每个获得虚假star的代码仓库都是主动去获取这些star的。
例如,对于非常受欢迎的代码仓库,虚假star可能显得毫无意义。但免不了虚假账户可能故意为流行代码仓库点star,以规避平台检测。因此,后处理步骤旨在仅保留那些因虚假star激增而受益显著的代码仓库。
为此,StarScout汇总了每月的star数,并寻找符合以下条件的代码仓库:
(1) 至少有一个月获得超过50个虚假star,且虚假star比例超过50%;
(2) 所有时间段的虚假star比例(相对于所有star)超过10%。
StarScout将这些代码仓库视为发起虚假star的代码仓库,并将激增月份中点star的账户标记为参与虚假star活动的账户。
最终,StarScout在22,915个代码仓库中检测到453万个虚假star,这些star由132万个账户创建。

图片

截至2024年10月,StarScout检测到并已在GitHub上删除的仓库/账户的百分比
与基准删除比例(仓库为5.84%,用户为4.43%)相比,已检测的仓库和账户的删除比例异常较高:虚假star活动中大约91%的仓库和62%的疑似虚假账户已被删除。
图片
通过对GitHub事件分布的比较分析,研究人员发现,存在虚假star活动的仓库和账户往往更倾向于单一的star操作,其他类型活动事件的数量相较于普通仓库明显更少。
而且就算是在star活动数量上两者相近,但存在虚假star活动的账户和仓库通常仅有少量的Fork、Push和Create活动,而几乎没有Issue、PR和Comment活动。这主要是因为后三种活动相较于前三种活动更难以伪造。

假star真能以假乱真,提高热度吗?

研究者也对于假star是否能够像真star一样拥有「马太效应」进行了研究。
研究的目的探索假stars是否也能通过提高热度,以假乱真来吸引更多的用户去给出真实的star。
他们针对GitHub stars的影响制定了以下两个假设:
  • H1:积累真实的GitHub星级将有助于GitHub仓库在未来获得更多真实的 GitHub 星级。

  • H2:积累虚假的GitHub星级将有助于GitHub仓库在未来获得更多真实的GitHub星级,但效果不如真实星级强。
为了检验这两个假设,研究者通过向模型添加固定效应或随机效应项,稳健地估计了自变量对未观测到的异质性(即可能影响结果变量但未在模型中测量的因素)的纵向影响。
图片
从上表中可以看出,H1假设得到了明确支持:根据固定效应模型,在保持所有其他变量不变的情况下,月t-1真实stars增加1%与月t真实星级预期增加0.36%相关。
类似地,也可以预测出从月t到月t+1真实stars能够增加0.36%。而该效应在月t+2则降至0.15%,在随后的所有月份降至0.11%,但效应始终为正。
换句话说,拥有更多真实stars的仓库在未来往往也会获得更多真实stars,这与社交网络中普遍存在的「富者愈富」现象相呼应。
另一方面,H2假设仅得到部分支持:在保持所有其他变量不变的情况下,月t虚假stars增加1%与月t+1真实stars预期增加0.08%以及月t+2真实stars预期增加0.04%相关。
换句话说,虚假stars在接下来的两个月内对吸引真实星级确实具有统计学上显著且纵向递减的正向效应,但该效应比真实星级的效应小三到四倍。
然而,月t虚假stars增加1%与月t+2及之后所有月份真实星级平均预期减少0.05%相关。
总的来讲,购买假star可能在短期内(即两个月以内)能够帮助一个仓库获得真实的关注,但其效果比真实的star小3到4倍。而且从长期来看,这种做法无疑也会产生深远的负面影响。
最后,研究者强调,GitHub库的star指标并不是一个可靠的高质量指标,所以至少不能是高风险决策的单一参考指标。
同时,研究者也建议开发者不要为推广自己的项目而去伪造star,因为这其实无济于事。
相反,他们建议在开源领域工作的存储库维护者和初创公司创始人应该战略性地专注于促进实际项目的进步,而不是表面上夸大star的数量。也就是说如果项目实际上并不是高质量的和维护良好的,那么即使高star可能会在短期内增加项目的可见度,也终究会迅速被大家排斥。
参考资料:
https://arxiv.org/abs/2412.13459