新智元报道

编辑:元宇

【新智元导读】一颗星,0.1美元,一杯6元奶茶能买8颗。ICSE顶会论文曝出GitHub上600万颗星可能是刷出来的,其中大量「热门项目」很可能是伪装成盗版软件、游戏外挂、加密货币机器人的钓鱼或恶意软件仓库。

凌晨一点,一个程序员正在GitHub上挑选即将要用的开源工具。

一番比较之后,他点进了那个star数最高的:4.2万颗,活跃度还行,README写得专业,issue回复频率正常。

看起来,这就是那个对的选择。

但他不知道的是,这个仓库中那个承载了开发者信任的star中,究竟有多大比例是花钱买来的。

在过去,打开一个GitHub项目,第一眼扫star数,这是许多开发者沿用了多年的判断路径。

如今,这条路径正在失灵。


GitHub Trending页面,按star数给开源项目排座次

扯开这层遮羞布的,是一篇来自卡内基梅隆大学的研究论文,它将在国际软件工程大会ICSE2026的主会议上正式宣讲,是妥妥的顶会实锤了!


论文的标题简单粗暴:

《Six Million (Suspected) Fake Stars on GitHub》(GitHub上六百万个(疑似)虚假星标:一场不断升级的热度比拼、垃圾信息与恶意软件漩涡)。


https://arxiv.org/pdf/2412.13459

研究团队来自卡内基梅隆大学,联合北卡罗来纳州立大学和专做软件供应链安全的Socket Inc.。

他们做了一件过去没人做过的事,把2019年7月到2024年12月之间GitHub全网公开事件数据全量扫了一遍。

扫出来的结果触目惊心。

600万颗疑似假星,18617个疑似参与刷星活动的仓库,30.1万个相关账户。

一个曾经熟悉的指标,就这样一夜之间变陌生了。

过去,GitHub的star数是开发者评估一个开源项目时最直观的参考。但这篇顶会论文数据,却告诉我们这个代表着信任的符号正在被系统性操纵。


GitHub上的那颗星,早已被贴上「FOR SALE」的标签

更可怕的是,它的背后已经形成了一条完整的灰产市场,刷一颗GitHub star的报价低至0.10美元,一杯6元奶茶,就能够买上8颗!

而且这些star可以被批量生产、定向投放、精准注入任何一个想看起来「热门」的仓库。

GitHub星标经济

被顶会论文装进显微镜

值得注意的是其中的一个数字。

2024年7月:是CMU研究团队给出的假星活动峰值时点。


假星活动在GitHub上的月度占比走势。2024年7月的峰值,是此前五年总和都够不到的高度。

当月GitHub上收到star的热门仓库里,16.66%涉及假星活动。

这是什么概念?

你打开GitHub的Trending页面,每浏览6个新上榜项目,大概率就有1个的热度是「注了水」的

这还不是所有GitHub仓库,而是当月上榜的那一批热门仓库。热门仓库子集受污染更明显,但 Trending 本身只命中了很小一部分。

研究里另一个数据更有冲击力。

2024年3月,GitHub活跃用户中有6.59%,也就是117024个账户与假星活动相关。

这意味着假星早就不是边缘噪音,它已经大到能污染整个生态的观察指标。

去年9月,CMU发布官方新闻稿时,Vasilescu说了一句很克制但很有分量的话:

我们不是第一批讨论这个问题的人,所以发现与诈骗相关的虚假star并不让我们意外。但它们的数量之大,还是让我们很吃惊。


https://s3d.cmu.edu/news/2025/0903-github-stars.html

这里有个细节不能忽略。

论文同时指出,从绝对比例看,假star在GitHub全站所有star里通常仍只占约1%。

1%听起来似乎不多。

但问题在于,这1%不是均匀分布的。它高度集中在两个最敏感的位置:「热门仓库」和「活跃用户」。

也就是说,普通开发者真正会去看、会去信、会拿来做选型决策的那个区域,恰恰是被污染最严重的。

ICSE是软件工程领域最顶级的会议,一篇论文能进ICSE正式研究论文类别,说明它已经通过了非常严格的同行评审,研究方法、实验数据和结论整体上都是经得起推敲的。

更关键的是,研究团队没有只写论文,还公开了StarScout源码,以及论文测量研究所用的数据和脚本,为外界审查、复核和复现这项研究提供了基础。


https://github.com/hehao98/StarScout

600万假星数据怎么来的?

也许你会好奇,这600万假星是怎么数出来的?会不会有误伤?

研究团队给出的检测方法不复杂,主要有两个维度:

第一个,盯低活跃账号

有些刷星商家会用脚本批量注册一次性账号。这些账号的画像高度统一:没头像、没简介、没项目,注册当天只做了一件事:给某个仓库点star,然后就再也不活跃了。

一看就是来「送数字」的。

第二个,盯群体同步异常

专业术语叫lockstep,意思就是踏着同一步点走。

刷星商家要在短时间内把几千颗星交付给客户,不得不反复调用手头的账号。

于是就会出现一种非常诡异的模式:一批账号,在一个很短的时间窗口里,集中给一批仓库点star,而且每个仓库都接收了这批账号里的很大一部分。

这种模式在自然用户中几乎不可能出现。

Facebook抓虚假点赞用的就是类似思路,算法叫CopyCatch。

研究团队在Google BigQuery上跑了约20TiB的GitHub事件数据,把这套方法从脸书搬到了GitHub的注意力经济里。

为降低误报,他们还加了一道后处理:只有在历史数据上出现过明显「假星异常峰值」的仓库,才会被最终标记。

这就是600万这个数字的来源。


2024年8月,Socket首次披露了370万颗疑似假星。四个月后,样本扩展到2024年底,数字翻到600万。黑灰产的膨胀速度,比研究团队追踪的速度还快。https://socket.dev/blog/3-7-million-fake-github-stars-a-growing-threat-linked-to-scams-and-malware

至于刷星的成本,Socket的早期研究博客给出过一个价格参考:每颗假星最低0.1美元。

而它在GitHub上换来的,是曝光、是Trending、是可能的风投故事、是开发者的第一眼信任。

刷星真相

短期甜长期毒

刷星到底有没有用?

研究团队专门做了面板回归,把「真实star」和「假star」对后续真实关注的影响分开算。

结果很扎心。

真实star会持续带来正向累积效应,有人真的喜欢就会带来更多人真的来看。

而假star的效果,只在接下来不到两个月里有一丁点微弱的促进,大小只有真star的五分之一。

更狠的是,从长期看假star历史越多,后续真star的增长越差。买来的热度到头来变成了负资产。

这也符合直觉。

一个项目被刷上Trending,真实开发者点进去发现文档潦草、代码粗糙、issue无人回应,就会在心里给它打上「浮夸」标签。

这种印象比没上Trending还伤。

但问题在于,即便长期没用,短期也够骗到很多人,比如骗到风投的尽调清单,骗到媒体的「本周最火开源项目」盘点,骗到技术选型时只看star数的新手开发者。

Socket在研究中还点出一个现象。

涉嫌刷星的仓库,标题里大量出现awesome、template、demo、example这几个词。


论文里涉事仓库的词云。awesome、template、demo、example这些词被放得最大,它们是刷星仓库最常用的伪装面具。

看起来很实用、实际质量平平的聚合类、教程类项目。

它们在把GitHub变成一个充满信息噪音的集市。

假星是恶意软件的假面

但所有这些,都还不是这篇论文最令人恐怖的部分。

CMU研究团队在分析那18617个涉事仓库时发现了一个极端数字:

其中90.42%已经被GitHub删除。


StarScout检出的涉事仓库,90.42%已被GitHub删除;而GitHub全站随机对照组的删除率只有5.03%。这18倍的差距,为StarScout检测结果提供了较强印证。

对仍然在线的样本做进一步内容分析,结论是约30%还属于spam或active、phishing、malware,也就是还在主动传播钓鱼木马的仓库。


Spam/Phishing(红色)单项占比达31.1%,比任何「正经」类别都高,假星仓库的主业,不是营销,是伪装。

换句话说:假星这门生意有相当大一块不是给创业公司做增长黑客用的,而是给恶意软件做「化妆」用的。

包装套路高度统一。

伪装成某款游戏的外挂工具、伪装成某个热门应用的破解版、伪装成「一键自动撸空投」的加密货币机器人。

论文公开了一个具体案例。


左上是这个仓库的 、README,漂亮得像一个正规开源项目。下方是代码里藏着的spawn()调用,一旦运行就会远程执行一段加密脚本,悄悄偷走你的加密货币。

如图中右上所显示:一个名为Solmonster/PhantomSniper-Solana-Sniper-Bot的仓库,被检测到时有109个疑似假星,README写得非常漂亮,看起来就像一个正规的Solana链抢购工具。

但它的代码里藏着一个隐蔽的spawn()调用。你一旦运行,它就会悄悄窃取你的加密货币。

再把视野拉高一层。

去年震动安全圈的XZ Backdoor攻击,就是典型的开源供应链攻击样本。

攻击者花了两年时间骗到维护者的信任,把后门植入了一个被无数系统依赖的压缩库。

这件事本身和假星无关,但它说明了一个更本质的问题。

开源生态里,信任一旦被伪造,下游有多少系统会被牵连,根本数不过来。

而假星恰恰是伪造信任的最低成本入口。

如果一颗星按0.1美元来算,1000颗不到100美元,就能让一个藏着木马的钓鱼仓库,看起来像一个刚起来的热门开源项目。

这是一门被定价、被规模化、被工具化的生意。

当「点赞」不再可信

开源世界需要新的信任锚

自动化刷星,早在GitHub官方政策明文禁止:「rank abuse,such as automated starring」(刷榜行为,比如机器自动点Star)。


但问题是规则追不上黑产。

论文揭露的数字足以让我们警醒:违规活动不是在收敛,而是在爆发。至少现有的检测和治理机制,对此的整治还是不够的。

因此,研究团队也给出了几个方向上的建议。

第一,降低star在GitHub声誉体系里的权重

平台排名、搜索推荐、Trending榜单,都不该把star数当作主要指标。

第二,引入差异化star

新注册账号、空白简介账号、无任何活动历史的账号,它们的star不该和一个写了五年代码的老开发者的star等同看待。

第三,把更多难伪造的信号纳入评估

比如release发布节奏、真实依赖关系、issue回复质量、PR合并情况、贡献者多样性。这些都比一个「+1」要难刷得多。

但这些建议的背后,是一个更深的问题。

社会学里有两条经典规律。

坎贝尔定律:任何定量社会指标一旦被广泛用于决策,就越容易被操纵,也越可能扭曲它原本想衡量的东西。

古德哈特定律:当一个测量指标被当作目标时,它就不再是一个好指标。

GitHub的star,正是这两条定律的深刻体现。

它最早只是一个轻量的收藏动作。后来被风投、被招聘、被媒体、被技术选型层层赋予意义,它就从一个「评价工具」,变成了一个「被追逐的目标」。

一旦成为「被追逐的目标」,它就开始失掉原来的意义

这不是GitHub一家的问题,Twitter的关注数、AppStore的评分……每一个「轻量信任信号」,都在经历同样的命运。

区别只在于,GitHub承载的不是一场人气游戏,而是全球开发者赖以工作的代码基础设施。

每颗星堆起来的,是开源世界一道正在被钻穿的信任防线。

参考资

https://x.com/rohanpaul_ai/status/2044567914859397181

https://arxiv.org/pdf/2412.13459