各位父老乡亲!
作为一个码农,我一直傻乎乎地把 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 行为模式:
"昙花一现"模式:用户仅为极少数仓库点赞后便销声匿迹 "整齐划一"模式: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 的影响。该模型能处理时间依赖性数据,并控制其他因素的影响。收集了每个仓库在每个月的以下数据:
当月虚假 Star 数量 累计虚假 Star 数量 当月真实 Star 数量 累计真实 Star 数量 仓库年龄 是否有发布 真实活动量(非仓库所有者和虚假 Star 用户的活动)
前四个变量用于检验假设,后三个变量用于控制其他因素拟合不同阶数的自回归模型,使用了固定效应和随机效应两种方法。
结果研究团队发现所有模型都得出了相似的结论:
H1 得到支持: 真实 Star 的增加能显著促进未来真实 Star 的增加,符合“富者更富”效应。 H2 部分支持: 虚假 Star 在短期内(1-2 个月)能带来少量真实 Star,但效果远不如真实 Star。长期来看,虚假 Star 反而会降低真实 Star 的增长。
购买虚假 Star 只能在短期内带来少量关注,氮素从长期来看反而会成为负担!
结语
"看完这个’星星交易’的故事,不禁让人思考:在开源社区里,真实的价值到底应该用什么来衡量?是浮于表面的数字,还是实打实的代码贡献?
而且,小鹿去查了下,星标的价格从几分钱到几元不等,这种价格差异主要由账户的“质量”决定。高价星标通常来自注册时间较长、有一定活跃度的账户,这些账户的星标看起来更“真实”,更难以被平台识别和封禁。而低价星标则来自新注册的、几乎没有任何活动记录的账户,这些星标的风险更高,很容易被平台识别并取消。
产业链很成熟。。这些服务还提供“失效包重刷”的保障。。。
或许有人会说:'花钱买星星不就等于给自己贴金吗?'但转念一想,如今各行各业都在追求数据美化,GitHub 星星买卖不过是这个时代的一个缩影罢了。
就像之前咱们给家人们介绍的杀猪盘研究员。。。
但仔细一想,这背后是不是有点让人细思极恐?
我们为什么会觉得需要买星星呢? 是为了项目的面子工程,还是为了吸引关注、获得资源?如果这些星星的“含金量”被虚假流量所掩盖,那原本追求技术创新和共享精神的开源社区,会不会渐渐失去它的灵魂?
本文中推荐的这篇论文中的实验也证明了而这些“花钱买繁荣”的行为,最终也会像黑市刷出来的星星一样——短暂发光,最后悄无声息地消失,连一点痕迹都留不下。
真正有价值的星星,永远是那些因为代码本身的力量而聚集起来的闪光点。
家人们怎么看 ~ 欢迎评论区和我们一起讨论 ~