1美元买10颗星?顶会曝出GitHub假星灰产,热门仓库或藏木马

  新智元报道

  编辑:元宇

  一颗星,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