github 软件安全术语
信息来源:https://llvm.org/devmtg/2024-10/slides/tutorial/Stellard-SupplyChainSecurity.pdf
一、供应链与流程相关
- Supply Chain Security(供应链安全):保障软件从开发者开发、中间流转到用户使用的全链路安全,防范恶意代码注入、权限滥用等风险。
- Git Repo(Git仓库):存储LLVM源代码的版本控制仓库,是代码提交、合并的核心载体。
- Pull Request(PR,拉取请求):开发者向LLVM仓库提交代码贡献的方式,需经审查后合并。
- Release Branch(发布分支):每6个月创建的专门用于版本发布的分支,仅发布管理者可提交代码。
- Release Tarballs(发布压缩包):基于发布分支生成的源代码压缩包,经签名和制品证明后提供给用户。
- Release Binaries(发布二进制文件):预编译的可直接运行的LLVM相关文件,方便用户快速使用,需经安全校验。
- Provenance(制品溯源):通过GitHub Artifact Attestations等机制,记录软件制品的构建来源、流程和相关信息,确保可追溯性。
二、权限与审查相关
- Commit Access(提交权限):向LLVM Git仓库直接提交代码的权限,当前获取门槛较低。
- Pre-commit Review(预提交审查):代码提交合并前的审查流程,LLVM中代码所有者和微小变更可例外。
- Post-Commit Review(提交后审查):代码提交后的补充审查,依赖人工监控提交列表实现。
- Code Owners(代码所有者):对特定模块代码负责的人员,其提交或微小变更可豁免部分预提交审查规则。
- RFC(Request for Comments,征求意见稿):LLVM中重大代码变更需提交的文档,用于收集社区意见后再推进。
- Fine-grained Permissions(细粒度权限):对不同操作、不同角色设置精准的权限控制,LLVM发布资产当前缺乏该机制。
三、基础设施与工具相关
- GitHub Actions:GitHub提供的自动化工作流工具,LLVM用于构建、测试、发布等自动化任务,基于YAML配置。
- GITHUB_TOKEN:GitHub Actions的内置访问令牌,每个任务独立生成,任务结束后过期,权限可配置。
- Secrets(密钥):GitHub Actions中用于存储敏感信息(如PyPI令牌、签名密钥)的工具,支持工作流间“链式调用”。
- Self-hosted Runners(自建运行器):用户自行部署的GitHub Actions运行环境,相比托管运行器存在更多安全隐患。
- GitHub-hosted Runners(GitHub托管运行器):GitHub官方提供的运行环境,安全性更高,是LLVM推荐的选择。
- Workflow(工作流):GitHub Actions中自动化任务的集合,一个工作流可包含多个关联任务,由特定事件触发。
- Ephemeral Nodes(临时节点):临时部署、任务结束后销毁的计算节点,用于降低Buildkite、Buildbot等基础设施的攻击面。
- CI(Continuous Integration,持续集成):通过自动化构建、测试,快速验证代码变更的可行性,LLVM要求提交需通过CI测试。
四、事件与攻击相关
- pull_request Event(拉取请求事件):GitHub Actions的触发事件之一,无Secret访问权限,仓库只读。
- pull_request_target Event(拉取请求目标事件):GitHub Actions的高权限触发事件,可访问Secret和写入仓库,禁止用于执行未信任代码。
- Denial of Service (DoS) Attacks(拒绝服务攻击):通过恶意触发大量任务、占用资源等方式,导致仓库或基础设施无法正常提供服务。
- Token Leak(令牌泄露):GITHUB_TOKEN或Secrets被未授权人员获取,可能引发仓库被篡改、资源被滥用等风险。
- Backdoor(后门):恶意植入软件中的隐藏功能,可被攻击者绕过正常安全验证访问系统或窃取信息。
- XZ Attack(XZ后门攻击):典型的供应链攻击案例,恶意用户获取权限后,通过修改发布压缩包注入恶意代码,劫持RSA解密调用。
五、验证与审计相关
- Artifact Attestations(制品证明):GitHub提供的用于验证软件制品来源和完整性的机制,LLVM发布压缩包和二进制文件均包含该证明。
- Signature(签名):LLVM发布管理者对发布产物(压缩包、二进制文件)进行的数字签名,用于确认文件未被篡改。
- Audit Job(审计任务):LLVM针对发布资产设置的定期检查任务,每小时执行一次,用于发现异常上传的资产。
- Resource Stealing(资源窃取):攻击者滥用GitHub Actions等基础设施的计算资源,执行非授权任务(如挖矿)。
