GitHub 推出 npm 包防火墙,拦截 CI 与 AI 代理的依赖请求

Mores的头像Mores
GitHub 推出 npm 包防火墙,拦截 CI 与 AI 代理的依赖请求

GitHub 已推出包防火墙(package firewall)公开预览,用于拦截 npm 生态中在安装阶段窃取凭据的恶意包。防火墙位于端点与上游包注册表之间,GitHub Actions 运行器、AI 编码代理和开发者工作站的每次元数据请求与包下载都要经过它,不符合策略的包会被阻止。

该预览面向所有 GitHub Enterprise Cloud 客户开放,包括使用数据驻留功能的客户,预览期间免费;正式可用后,GitHub 计划按用量计费,类似 Actions 的收费方式。目前仅支持 npm。

安装阶段为何关键

来源指出,今年多起 npm 供应链事件中,恶意代码并不是在测试或扫描阶段被发现,而是在安装阶段就已执行。Axios 在 3 月遭到入侵时,攻击者利用 postinstall 脚本投放远程访问木马;4 月针对 SAP 相关包的攻击和 6 月针对 @redhat-cloud-services 命名空间的攻击,则依赖 preinstall 钩子。

微软跟踪的多起活动专门从 CI 主机上收集 AWS、HashiCorp Vault、GitHub Actions 和 npm 的凭据。8 月披露的一个蠕虫感染了 400 多个 npm 包,并在开发者机器和 CI 运行器上搜寻凭据。这些案例的共同点是:包本身的代码尚未运行,安装脚本已经完成了窃取动作。

GitHub 此前已采取措施:7 月发布的 npm v12 默认关闭依赖生命周期脚本。但这一改动只对使用 npm v12 的团队有效。GitGuardian 还记录了一种规避方式:后续恶意版本去掉安装钩子,改为在 import 时执行,使忽略脚本的配置失去作用。防火墙因此被定位为一个不依赖客户端配置是否正确的控制点。

五项策略控制

企业管理员和安全经理在企业管理层统一设置策略,所有经防火墙路由的请求都受其约束。GitHub 文档列出五项控制。第一项是阻止已知恶意包,查询 GitHub Advisory Database 中的活跃恶意公告,默认开启。第二项是阻止漏洞公告,按管理员选定的严重级别拦截已知存在漏洞的版本,默认仅拦截 critical 级别。

第三项是阻止证明降级:如果较早版本带有 SLSA 证明而所请求的版本没有,该请求会被阻止,因为证明缺失可能意味着发布流程已被入侵,此项默认开启。第四项是阻止新引入的安装脚本,识别近期新增 preinstall 或 postinstall 脚本的包,同样默认开启。

第五项是最小包龄,即冷却期,阻止比设定时间更新的版本,可设范围为 1 至 365 天,默认一天。来源认为冷却期是最简单也可能最有用的控制:多数恶意 npm 版本会被迅速发现并下架,出问题的 Axios 版本在线约三小时,Datadog Security Labs 认为即便一天的冷却期也能挡住那次攻击。

冷却期与例外申请

冷却期并非万无一失。Datadog 指出,有耐心的攻击者可以延迟执行,等到超过冷却窗口后再触发。证明检查也有局限:它能发现某个包突然不再提供来源证明,却无法识别被劫持的流水线如实签名了恶意代码。7 月的 AsyncAPI 攻击就是这种情况,项目自身的 CI 构建并签名了恶意版本。

冷却期还可能挡住带有紧急安全修复的新版本。遇到这种情况,npm 输出或 CI 日志中会附带申请例外的链接。管理员可以批准某个单一版本,也可以批准某个包的所有版本,之后还能撤销例外。

来源引述 Futurum Group 负责 CIO 与技术买家及软件生命周期工程实践的副总裁 Mitch Ashley 的说法:编码代理会按任务要求安装任意新近发布的版本,注册表边界的策略是它们无法跳过的检查。他同时建议团队在网络层阻断对公共注册表的直接访问,并关注正式可用后的按量计费,因为计量账单会让团队有理由减少经过防火墙的流量。

部署方式与限制

部署时,团队在用户级 .npmrc 文件中把 npm 指向企业专属的防火墙 URL。每个请求需要携带与企业成员绑定的令牌,该令牌只需对公共仓库具有只读权限。GitHub 还提供对 JFrog Artifactory 的实验性支持,便于团队保留现有的公共与私有包组合。

目前的限制很明确:仅支持 npm。任何仍直接连接公共注册表的运行器或笔记本电脑都在防火墙覆盖范围之外,Artifactory 用户需要移除指向公共 npm 的直接远程源。

从定位看,防火墙把依赖策略从各个项目集中到一处。来源将其视为 GitHub 今年收紧 npm 的一系列动作的延续,此前包括默认关闭安装脚本、推动可信发布与分阶段发布。对 Enterprise Cloud 客户而言,免费预览是低风险地检验一天冷却期实际能拦截什么的方式。

要点

  • 防火墙位于端点与上游 npm 注册表之间
  • 预览面向 GitHub Enterprise Cloud 客户且免费
  • 正式可用后计划按用量计费
  • 目前仅支持 npm
  • 默认拦截已知恶意包与新增安装脚本

原文链接

更多快讯

全部快讯
  1. Synnovis 勒索攻击被认定为一患者死亡因素,Qilin 疑似成员被引渡德国
  2. Ivanti Connect Secure 严重漏洞遭利用,可绕过认证执行远程代码
  3. PHP 警告两个严重漏洞,紧急补丁将于明日发布
  4. Unit 42:PAN-OS 漏洞 CVE-2026-0257 遭勒索软件团伙利用
  5. OVHcloud CLI 遭供应链攻击,0.11.0 至 0.15.0 版本二进制文件被替换

0 条回复

A文章作者M管理员
上传评论图片

暂无讨论,说说你的看法吧