GitHub藏在明处的10大媒介:你忽视了吗?

新闻
2天前

GitHub已经从最初的代码托管工具,成长为现代软件开发的核心平台。然而,当企业忙于扫描 npm、PyPI等官方依赖库时,却往往忽视了一个更普遍、更隐蔽的风险:贯穿整个软件开发生命周期的GitHub代码引用

正是这些“隐藏在明处”的媒介,成为高级攻击者发动供应链攻击的突破口。tj-actions GitHub Action与XZ Utils的事件,就是活生生的例子。

1756801515868909.png

OX Security 的研究指出:从编码到上线,每一个GitHub引用都是潜在攻击入口。以下是最容易被忽视的10大媒介

1.依赖管理:直接引用GitHub仓库

  • 媒介npm、pip、Maven等允许直接拉取GitHub仓库,而不是官方注册库。

  • 隐患使用可变分支(如 main),导致构建不可预测;仓库被劫持后风险更大

  • 数据分析发现超过11万个package-lock.json文件等直接引用GitHub。

2.容器构建:镜像创建时注入代码

媒介Dockerfile中git clone或ADD/COPY GitHub链接。

隐患缓存机制可能复用被篡改的远程仓库。

现实被植入的工具脚本可窃取容器环境变量。

3.Kubernetes部署:Helm chart & Manifests

媒介Helm chart或init容器从GitHub拉取脚本/配置。

隐患缺乏校验的动态拉取可能让攻击者拿到集群权限。

4.配置管理:自动化工具引用GitHub

  • Ansible、SaltStack、Grafana 等直接拉GitHub配置。

  • 隐患被篡改的配置可转移日志、引发拒绝服务,甚至执行恶意命令。

5.CI/CD自动化:GitHubActions&工作流

  • 媒介超过56万个工作流使用外部Action,另有16万+直接git clone。

  • 隐患如果使用@main这种可变标签,攻击者可在执行时窃取机密或篡改产物。

6.代码组织:Git Submodules&Subtrees

  • 媒介14,000+子模块、2,000+子树命令引用GitHub。

  • 隐患仓库被接管后,git submodule update等操作可能引入恶意代码。

7.基础设施即代码Terraform&IaC模块

  • 媒介Terraform模块直接引用 GitHub(11万+文件)。

  • 篡改模块可创建攻击者控制的云资源、暴露机密或植入后门脚本。

8.构建与插件:GradleRedis 

  • 媒介Gradle插件或Redis插件直接从 GitHub 加载。

  • 隐患缺少官方审核,合并恶意插件就可能在构建时泄露敏感信息。

9.开发流程:预提交&安装钩子

  • 媒介7,000+ Git hook 文件和 6.5万npm包的 pre/post install 脚本。

  • 隐患一旦被篡改,安装依赖时就能窃取凭证或植入恶意软件。

10.跨仓库触发:Webhooks&集成

  • 媒介5.6万个workflow监听repository_dispatch事件。

  • 隐患若攻击者获取token,可伪造事件触发恶意工作流。

我们该如何自保?

GitHub的风险并不意味着要放弃它,而是需要:

1) 全盘清识别所有生命周期中的GitHub引用。

2) 固定版本统一采用不可变的commit hash,而不是main。

3) 完整性校验对外部资源启用签名验证。

4) 内部替代为常用依赖建立安全的内部镜像或仓库。

5) 预置安全基为开发者提前准备可验证、可信赖的工具与配置。

✍️结语

GitHub的开放与灵活是软件创新的核心动力,但也带来了巨大的供应链风险。正如研究所说:看见媒介,才能管控媒介。忽视这10个“隐藏在明处”的攻击面,只会让企业在未来的供应链攻击中更加脆弱。