社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

GitHub 造假浪潮爆发!已有450万虚假星标,实锤造假将导致仓库限流

夕小瑶科技说 • 6 月前 • 227 次点击  

各位父老乡亲!

作为一个码农,我一直傻乎乎地把 GitHub 的星星当成宝贝,以为那都是代码的真爱粉!

结果今天被一记重锤砸醒。

卡内基梅隆大学的论文爆料

  • GitHub 上竟然有 450 万虚假 Star!
  • 2024 年开始,Github 造假浪潮出现爆发式增长

嘶!小鹿想到有人买星星,但是没想到这么多!

论文还说,这虚假点赞还夹杂着诈骗和恶意软件。。。我这颗单纯的心啊!

💔 尊嘟假嘟啊?

论文标题:

4.5 Million (Suspected) Fake ⋆ Stars in GitHub: A Growing Spiral of Popularity Contests, Scams, and Malware

论文链接:

https://arxiv.org/abs/2412.13459

在公众号后台发送口令“0102”即可获取完整 PDF

起因

正如唐纳德·T·坎贝尔所说:

“任何定量社会指标被用于社会决策的次数越多,它就越容易受到腐败压力的影响,并且越容易扭曲和破坏它旨在监测的社会过程。”

GitHub Star 数量作为开源项目评估的重要指标,也难逃此劫。。。没能逃过被“注水”的命运

现在 GitHub 圈里,作为决策信号的 GitHub Star 就像其他社交媒体的人气指标一样,已经可以被轻易地人为抬高了。在 Google 上搜索“购买 GitHub Star”,你会发现一堆提供商,他们声称只需几小时或几天就能交付大量 Star,价格从每个 0.1 美元到 2 美元不等。

而来自卡耐基梅隆大学的研究团队,想要揭开虚假 Star 的真面目,开发了一款名为 StarScout 的工具,类似于 Github 里面的“星探”,能从 GitHub 海量数据中揪出那些行为异常的 Star,将 StarScout 应用于 2019 年 7 月至 2024 年 10 月的所有 GitHub 事件数据总计 6054 万用户、3.1 亿个仓库、6.1 亿个 Star 和 60.1 亿个其他事件, 识别出超过百万的虚假 Star 和 15,835 个存在虚假 Star 活动的仓库,研究团队发现:

  • 虚假 Star 活动在 2024 年呈爆发式增长:生意越来越火爆了。在 2024 年之前,虚假 Star 在 GitHub 上的普遍性和影响有限。然而,2024 年虚假 Star 活动增加了两个数量级。在 2024 年 7 月的峰值时,StarScout 检测到当月 15.84% 的拥有 ≥50 个 Star 的仓库存在虚假 Star 活动。
  • 虚假 Star 用户的“伪装术”很高明: 个人资料看起来和普通用户没啥区别,但背地里却有着高度异常的活动模式。其中 60% 以上的帐户具有高度人为的活动模式,并且它们几乎只对仓库进行 Star(和 Fork),而没有做任何其他有意义的事情。
  • 虚假 Star 的背后,往往是恶意软件的阴谋: 大部分虚假 Star 被用来推广那些伪装成盗版软件、游戏作弊器或加密货币机器人的“短命”恶意仓库。
  • “刷星”只能图一时爽: 有些仓库为了“增长热度”而购买虚假 Star,但这种“虚假繁荣”最多只能维持两个月,长期来看反而会成为负担,会产生负面影响(即真实 Star 的增益减少)。

鉴定模型

StarScout 主要聚焦于识别 GitHub 平台上两类可疑的 Star 行为模式:

  1. "昙花一现"模式:用户仅为极少数仓库点赞后便销声匿迹
  2. "整齐划一"模式:n 个账户如同提前约好一般,在极短时间 ∆t 内集体为 m 个特定仓库点赞

这些行为模式往往与虚假 Star 交易密切相关。对于那些经营 Star 买卖的商家来说,要完全规避这些特征几乎是不可能的:他们要么使用新注册的临时账户,要么不得不在短时间内集中完成客户订单(如表 1 的交付时间承诺所示)。

然而必须承认的是,在判定 Star 的真伪时很难画出一条泾渭分明的界限。比如,设想这样一个场景:某个 GitHub 教程要求学习者给仓库点 Star 作为练习的一部分,这种情况该如何界定?

因此,研究团队决定不纠结于定义绝对的真伪标准,而是将重点放在识别具有明显异常行为特征的仓库和用户身上。

为了降低误判率(无论是将正常用户误判为作弊者,还是虚假账户为掩人耳目给正常仓库点赞),StarScout 设计了一套精细的后处理机制,用于进一步甄别可疑的 Star 行为。系统整体架构如图 2 所示。

实验分析

使用包含 15,835 个仓库和 27.8 万个具有虚假 Star 活动的帐户的数据集进行实验分析后,研究团队对 GitHub 中的欺诈性点赞活动进行了测量研究,以四个研究问题来分析:

  • RQ1: GitHub 中虚假 Star 的普遍程度如何?
  • RQ2: 具有虚假 Star 活动的 GitHub 仓库的特征是什么?
  • RQ3: 参与虚假 Star 活动的 GitHub 帐户的特征是什么?
  • RQ4: 虚假 Star 在多大程度上有效地推广了目标 GitHub 仓库?

 RQ1:GitHub 中虚假 Star 的普遍程度如何?

为了摸清 GitHub 上虚假 Star 的真实情况,研究团队首先要搞清楚它们到底有多普遍。研究团队把那些被标记为“刷星”的仓库和用户,跟 GitHub 上的两组“正常人”进行了对比:

  • “正常仓库”: 每月获得 50 个以上 Star 的仓库。
  • “正常用户”: 每月至少有一次 GitHub 活动的用户。

对比结果,研究团队都惊呆了!

如图 6 的数据显示,从 2022 年开始,“刷星”活动就开始抬头,到了 2024 年简直是“井喷式”爆发!(注意,图 6 的 y 轴是对数坐标,这意味着增长速度比你看到的还要快得多!)

  • 2022 年之前,每个月最多只有 10 个仓库参与“刷星”活动。
  • 2022 年和 2023 年,这个数字增加到了十几个。
  • 到了 2024 年,这个数字直接飙升到了数千个!
  • 2024 年 7 月,“刷星”活动达到顶峰,有 3216 个仓库和 30779 个用户参与其中!

发现 1:GitHub “刷星”活动从 2022 年开始抬头,2024 年彻底爆发!

研究团队的对比还发现,只需要一小撮“刷星”用户,就能在 GitHub 的人气竞赛中掀起巨大的波澜。比如,在 2024 年 7 月的峰值,只有 30779 个“刷星”用户,仅占当月活跃用户的 1.88%,但他们“刷”出来的 3216 个仓库,却占当月所有获得 50 个以上 Star 的仓库的 15.84%!

这意味着,现在一个获得 50 个 Star 的仓库,有 15% 的概率不是真正的“潜力股”,而是被“刷”出来的!这简直是给 GitHub 的人气指标“掺了水”!

发现 2:一小撮“刷星”用户,就能严重扭曲 GitHub 的人气指标!

研究团队还想知道,这些“刷星”的仓库会不会蔓延到 npm、PyPI 等软件包注册中心。毕竟,这些注册中心是软件组件的实际分发渠道,它们的依赖关系也容易受到攻击。

研究团队把“刷星”仓库的列表,跟 npm 和 PyPI 的元数据进行了匹配,结果发现:

  • 只有 47 个 npm 包(对应 21 个仓库)和 64 个 PyPI 包(对应 43 个仓库)有“刷星”嫌疑。
  • 这些包只占 npm 和 PyPI 生态系统的一小部分。
  • 更重要的是,这些包的下载量中位数都比较低,说明它们并没有被广泛使用。

这说明,目前 GitHub 上大规模的“刷星”活动,和软件包注册中心发生的垃圾邮件活动是分开的。虽然这些“刷星”的软件包如果恶意,可能会造成直接损害,但它们似乎还没有对 npm 和 PyPI 的供应链产生重大影响。

RQ2:带有虚假点赞活动的 GitHub 仓库有哪些特征?

研究团队对 15835 个被标记为“刷星”的仓库进行了深入分析,并把它们分成了两类:

(1)“昙花一现”: 截至 2024 年 10 月,已经被 GitHub 删除的仓库(共 14371 个)。

(2)“钉子户”: 截至 2024 年 10 月,仍然存在于 GitHub 上的仓库(共 1464 个)。

昙花一现的特点:

  • 寿命极短: 超过 75% 的仓库,在 GitHub 上活跃的时间不到三天,简直是“昙花一现”。
  • “刷星”比例高: 它们的虚假 Star 比例通常比“钉子户”更高。
  • “星”光黯淡: 即使查看它们最后的点赞数量,仍然可以看到一部分点赞被取消了,这说明 GitHub 正在积极打击虚假账号,也侧面证明了 StarScout 的准确性。

研究团队从对昙花一现的仓库名称的词频分析中,发现了一些蛛丝马迹:

  • “盗版软件”: 比如 “Adobe-Animate-Crack”
  • “加密货币机器人”: 比如 “pixel-wallet-bot-free”、“Solana-Sniper-Bot”
  • “游戏作弊”: 比如 “GTA5-cheat”

“钉子户”的特点:

通过与仍然存在于 GitHub 上的具有相似名称的仓库进行比较,研究团队发现,这些仓库充其量是垃圾邮件,最坏的情况是恶意软件。比如,VirusTotal 报告说,截至 2024 年 10 月,仍然存在于 GitHub 上的 1464 个“刷星”仓库中,有 41 个存在恶意软件。

需要注意的是,VirusTotal 并不能完全覆盖 GitHub 上存在的恶意软件类型。即使对于那些没有 VirusTotal 警报的仓库,研究团队仍然能够发现它们内部隐藏着高度混淆的恶意软件。

当然,仍然存在于 GitHub 上的仓库,它们的名称更加多样化,这说明至少有一部分较小的仓库购买虚假点赞,是为了人气竞赛或增长黑客。

RQ3:参与虚假 Star 活动的 GitHub 账户有哪些特征?

为了揭开“刷星”用户的真面目,研究团队首先把他们的个人资料,跟“正常用户”以及之前研究中发现的“虚假用户”进行了对比。研究团队收集了四个关键的个人资料特征,并在表 5 中总结了结果。

结果显示,“刷星”用户的个人资料,确实有一些“猫腻”:

  • 默认头像: 他们更倾向于使用默认头像,就像“隐形人”一样。
  • 没有组织: 他们通常不属于 GitHub 上的任何组织,就像“散兵游勇”一样。
  • 没有隶属关系或网站: 他们的个人资料中,通常没有任何隶属关系或网站信息,就像“无根之木”一样。

相比之下,之前研究中发现的“虚假用户”,可能在账户管理和创建策略上有所不同。不过,虽然“刷星”用户更倾向于使用这些空白字段,但与随机 GitHub 用户相比,差异并不算太大。更重要的是,他们的活动模式差异非常明显,这说明,仅仅通过个人资料的“真假”来判断用户是否参与“刷星”活动,并不是一个靠谱的方法。

研究团队对 1816 个“刷星”用户的活动数据进行了谱聚类分析,结果发现,他们可以被分为三个不同的“阵营”:

  • “点赞狂魔”: (Cluster 1,占 53.74%)这个“阵营”的用户,几乎只为仓库点赞,就像“点赞机器”一样。
  • “点赞 +Fork”: (Cluster 2,占 6.44%)这个“阵营”的用户,除了点赞,还会 Fork 一些仓库,就像“升级版点赞机器”一样。
  • “伪装者”: (Cluster 0,占 39.97%)这个“阵营”的用户,除了点赞和 Fork,还会参与其他活动,看起来更像“正常用户”,但他们的删除率仍然很高。

值得注意的是,“点赞狂魔”和“点赞 +Fork”这两个“阵营”的删除率都超过了 70%,这说明他们很可能来自不同的“刷星”商家。而“伪装者”虽然看起来更像“正常用户”,但他们的删除率仍然高达 30.25%,这说明,即使他们中存在一些“误伤”,也一定有一些“刷星”商家通过真实的虚假账户、交换平台甚至被盗账户来交付 Star。

RQ4:虚假 Star 在多大程度上有效地推广了目标

研究团队为了探究这种虚假 Star 是否真的有效,在多大程度上有效地推广了目标 GitHub 仓库,提出了两个假设:

  • H1: 真实 Star 能带来更多真实 Star(“富者更富”效应)。
  • H2: 虚假 Star 也能带来更多真实 Star,但效果不如真实 Star。

研究团队使用面板自回归模型来分析虚假 Star 对未来真实 Star 的影响。该模型能处理时间依赖性数据,并控制其他因素的影响。收集了每个仓库在每个月的以下数据:

  1. 当月虚假 Star 数量
  2. 累计虚假 Star 数量
  3. 当月真实 Star 数量
  4. 累计真实 Star 数量
  5. 仓库年龄
  6. 是否有发布
  7. 真实活动量(非仓库所有者和虚假 Star 用户的活动)

前四个变量用于检验假设,后三个变量用于控制其他因素拟合不同阶数的自回归模型,使用了固定效应和随机效应两种方法。

结果研究团队发现所有模型都得出了相似的结论:

  • H1 得到支持: 真实 Star 的增加能显著促进未来真实 Star 的增加,符合“富者更富”效应。
  • H2 部分支持: 虚假 Star 在短期内(1-2 个月)能带来少量真实 Star,但效果远不如真实 Star。长期来看,虚假 Star 反而会降低真实 Star 的增长。

购买虚假 Star 只能在短期内带来少量关注,氮素从长期来看反而会成为负担!

结语

"看完这个’星星交易’的故事,不禁让人思考:在开源社区里,真实的价值到底应该用什么来衡量?是浮于表面的数字,还是实打实的代码贡献?

而且,小鹿去查了下,星标的价格从几分钱到几元不等,这种价格差异主要由账户的“质量”决定。高价星标通常来自注册时间较长、有一定活跃度的账户,这些账户的星标看起来更“真实”,更难以被平台识别和封禁。而低价星标则来自新注册的、几乎没有任何活动记录的账户,这些星标的风险更高,很容易被平台识别并取消。

产业链很成熟。。这些服务还提供“失效包重刷”的保障。。。

或许有人会说:'花钱买星星不就等于给自己贴金吗?'但转念一想,如今各行各业都在追求数据美化,GitHub 星星买卖不过是这个时代的一个缩影罢了。

就像之前咱们给家人们介绍的杀猪盘研究员。。。

杀猪盘开始走学术路线了?95后天才,4个博士+2个博士后,被暂停聘任

但仔细一想,这背后是不是有点让人细思极恐?

我们为什么会觉得需要买星星呢? 是为了项目的面子工程,还是为了吸引关注、获得资源?如果这些星星的“含金量”被虚假流量所掩盖,那原本追求技术创新和共享精神的开源社区,会不会渐渐失去它的灵魂?

本文中推荐的这篇论文中的实验也证明了而这些“花钱买繁荣”的行为,最终也会像黑市刷出来的星星一样——短暂发光,最后悄无声息地消失,连一点痕迹都留不下。

真正有价值的星星,永远是那些因为代码本身的力量而聚集起来的闪光点。

家人们怎么看 ~ 欢迎评论区和我们一起讨论 ~

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/177589
 
227 次点击