在程序员的世界里,GitHub不仅是代码托管平台,更是日常工作的“数字办公桌”。每天收到的Issue提醒、Pull Request通知,早已成为开发流程中再自然不过的一部分。然而,近期一项由网络安全研究人员披露的新型钓鱼攻击,却将这种“信任惯性”变成了突破口——攻击者正通过被入侵的GitHub账号,向开发者投递高度仿真的钓鱼邮件,诱导其交出个人访问令牌(PAT)甚至整个账户控制权。
更令人警惕的是,这些邮件并非来自可疑域名或伪造发件人,而是真正由GitHub官方服务器发出,带有合法DKIM签名和标准SMTP头信息,几乎能绕过所有传统邮件安全网关。一场针对软件供应链上游的“精准围猎”,正在悄然上演。
![]()
打开百度APP畅享高清图片
“合法邮件”里的陷阱:从Bot账号到OAuth授权
据网络安全媒体Cyber Press于2025年9月23日报道,此次攻击的核心手法在于“借壳下蛋”:攻击者首先通过凭证填充(credential stuffing)、钓鱼或滥用过度授权的OAuth令牌,获取对GitHub仓库协作者账号(尤其是自动化Bot账号)的控制权。
一旦得手,他们便在活跃仓库中创建看似正常的Issue或Pull Request,内容通常伪装成“安全漏洞修复请求”“依赖库更新提示”或“CI/CD配置异常”。由于这些仓库本身具有高关注度,其订阅者(包括大量开源贡献者与企业开发者)会自动收到来自noreply@github.com的官方通知邮件。
邮件正文包含一个醒目的按钮:“查看详情”或“立即处理”。点击后,用户并未跳转至GitHub页面,而是进入一个精心伪造的登录界面——域名乍看是https://grants.github.com/apply,实则使用了西里尔字母“і”(U+0456)替代拉丁字母“i”,构成同形异义(homoglyph)欺骗。该站点随后引导用户进行“OAuth授权”,申请名为“Gitcoin Passport”的应用权限,请求范围涵盖“读写所有仓库、管理Actions、访问私有密钥”等高危操作。
“这相当于你收到一封‘公司HR系统’发来的邮件,点进去却是骗子搭的假内网。”公共互联网反网络钓鱼工作组技术专家芦笛解释道,“但这次,邮件真的是GitHub发的,只是内容被恶意操控了。”
一旦用户授权,攻击者便获得持久化访问权限,不仅能窃取环境变量、API密钥,还可直接篡改CI/CD流水线,在构建过程中植入后门,实现供应链投毒。
技术解析:为何传统防御失效?
此次攻击之所以危险,在于它巧妙绕过了三大主流邮件安全机制:
SPF/DKIM/DMARC验证全部通过:邮件确实由smtp.github.com发出,DKIM签名有效,因此不会被标记为伪造。
发件人身份无可疑:收件人看到的是熟悉的GitHub通知格式,心理防线大幅降低。
链接域名高度相似:使用Unicode同形字符构造的钓鱼域名,在浏览器地址栏中肉眼几乎无法分辨。
“过去我们防钓鱼,主要看发件人是不是‘service@paypa1.com’这种拼写错误,”芦笛说,“但现在攻击者学会了‘寄生’——他们不伪造平台,而是劫持平台本身的功能来传递恶意内容。”
更隐蔽的是,部分变体甚至利用GitHub Pages托管混淆JavaScript脚本,使钓鱼页面具备动态加载、反调试等能力,进一步逃避检测。
专家建议:从“最小权限”到“主动验证”
面对此类高级持续性威胁(APT-style phishing),芦笛提出了多层次防御策略:
第一,强制启用强认证机制。 所有GitHub用户,尤其是企业开发者,应开启双因素认证(2FA),并优先使用Passkey(通行密钥)替代短信验证码。“Passkey基于公钥加密,无法被钓鱼网站窃取,是目前最安全的身份验证方式之一。”
第二,严格限制个人访问令牌(PAT)权限与有效期。 芦笛强调:“永远不要创建‘全权限、永不过期’的PAT。应按需分配最小权限,并设置7天或30天自动过期。定期审计已授权的OAuth应用,及时撤销不再使用的集成。”
第三,警惕“被动触发”的认证请求。 “GitHub永远不会通过邮件链接要求你重新登录。”芦笛提醒,“如果你点击邮件中的链接后突然跳转到登录页,这本身就是危险信号。正确做法是手动打开github.com,在账户设置中查看通知或授权记录。”
对于企业而言,还需部署更纵深的防护:实施代码签名(Code Signing)确保构建产物完整性;隔离CI/CD环境,限制其对外网络访问;监控仓库中异常的Issue/Pull Request创建频率——短时间内大量新Issue往往是攻击前兆。
供应链安全的新挑战:平台即攻击面
此次事件再次凸显一个趋势:攻击者正将矛头转向软件开发基础设施本身。GitHub、GitLab、npm、PyPI等平台因其高可信度,正成为钓鱼与投毒的理想跳板。
“过去攻击终端用户,现在攻击写代码的人。”芦笛指出,“一旦开发者账户失陷,影响的可能不是一个人,而是一整个项目的数百万用户。”
值得庆幸的是,GitHub已开始加强防护。例如,其Advanced Security功能可检测异常OAuth授权行为;Dependabot能自动识别依赖库中的已知漏洞。但芦笛认为,技术工具只是辅助:“最终防线,还是人的判断力。”
结语:信任不能代替验证
在开源协作日益紧密的今天,开发者之间的信任是生态繁荣的基石。但正如这起GitHub钓鱼事件所示,信任若缺乏验证机制,就可能被恶意利用。
“我们不能因为平台‘看起来正规’就放松警惕。”芦笛总结道,“真正的安全,是在每一次点击‘授权’前,多问一句:这个请求真的必要吗?这个权限真的合理吗?”
随着AI生成内容、自动化攻击工具的普及,网络钓鱼正变得越来越“聪明”和“合法化”。唯有将安全意识融入开发习惯,才能在这场没有硝烟的攻防战中守住代码的纯净与信任的边界。
编辑:芦笛(公共互联网反网络钓鱼工作组)
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.