本仓库包含我们 USENIX Security '23 论文《ARGUS:GitHub 工作流与操作的阶段性静态污点分析框架》的代码。Argus 是一款专为 GitHub Actions 设计的综合性安全分析工具。它旨在增强 CI/CD 工作流的安全性,通过污点追踪技术和影响分类器来检测 GitHub Actions 工作流中的潜在漏洞。
更多信息请访问我们的网站 - secureci.org
污点追踪:Argus 使用复杂算法追踪 GitHub Actions 工作流中潜在不可信数据从特定来源到安全关键接收点的流动过程。这有助于识别可能导致代码注入攻击的漏洞。
影响分类器:Argus 将识别出的漏洞分为高、中、低三个严重等级,提供对每个漏洞潜在影响的更清晰理解。这对于确定缓解工作的优先级至关重要。
该 Python 脚本提供了一个命令行界面,用于与 GitHub 仓库和 GitHub Actions 交互。
python argus.py --mode [mode] --url [url] [--output-folder path_to_output] [--config path_to_config] [--verbose] [--branch branch_name] [--commit commit_hash] [--tag tag_name] [--action-path path_to_action] [--workflow-path path_to_workflow]
--mode:操作模式,可选 'repo' 或 'action'。此参数为必填。--url:GitHub URL。对于私有仓库,使用 USERNAME:TOKEN@URL 格式。此参数为必填。--output-folder:输出文件夹,默认值为 /tmp。此参数为可选。--config:配置文件路径。此参数为可选。--verbose:详细模式。若提供此选项,日志级别将设为 DEBUG,否则为 INFO。此参数为可选。--branch:分支名称。必须提供 --branch、--commit、--tag 中的恰好一个。此参数为可选。--commit:提交哈希值。必须提供 --branch、--commit、--tag 中的恰好一个。此参数为可选。--tag:标签名称。必须提供 --branch、--commit、--tag 中的恰好一个。此参数为可选。--action-path:操作的(相对)路径。在 repo 模式下不能提供 --action-path。此参数为可选。--workflow-path:工作流的(相对)路径。在 action 模式下不能提供 --workflow-path。此参数为可选。使用该脚本与 GitHub 仓库交互的示例命令如下:
python argus.py --mode repo --url https://github.com/username/repo.git --branch master
该命令将以 repo 模式运行脚本,并分析指定仓库的 master 分支。
Argus 可以在 Docker 容器中运行。步骤如下:
results 文件夹中你可以通过在线查看器或 Visual Studio Code(VSCode)扩展来查看 SARIF 结果。
在线查看器:SARIF 网页组件 是一个在线工具,可用于可视化 SARIF 文件。你可以直接上传 SARIF 文件(argus_report.sarif)到该网站以查看结果。
VSCode 扩展:如果你更喜欢使用 VSCode,可以安装 SARIF Viewer 扩展。安装后,在 VSCode 中打开你的 SARIF 文件(argus_report.sarif)。结果将显示在 SARIF Explorer 窗格中,该窗格提供详细且可导航的结果视图。
请注意妥善处理 SARIF 文件,尤其是当它包含代码库中的敏感信息时。
如果运行时需要 GitHub 授权,你可以在 GITHUB_CREDS 环境变量中提供 username:TOKEN。该凭据将用于所有向 GitHub 发起的请求。注意,我们不会在任何地方存储此信息,也不会在 GitHub 账户中创建任何内容——我们仅用于克隆仓库。
Argus 是一个开源项目,我们欢迎社区的贡献。无论是报告 bug、建议新特性,还是编写代码,你的贡献总是受欢迎的!
如果你在研究中使用了 Argus,请引用我们的论文:
@inproceedings{muralee2023Argus,
title={ARGUS: A Framework for Staged Static Taint Analysis of GitHub Workflows and Actions},
author={S. Muralee, I. Koishybayev, A. Nahapetyan, G. Tystahl, B. Reaves, A. Bianchi, W. Enck,
A. Kapravelos, A. Machiry},
booktitle={32nd USENIX Security Symposium (USENIX Security 23)},
year={2023},
}
Argus 遵循 GPL 许可证。