
このリポジトリには、USENIX Security '23 の論文「ARGUS: A Framework for Staged Static Taint Analysis of GitHub Workflows and Actions」のコードが含まれています。Argus は、GitHub Actions向けに特別に設計された包括的なセキュリティ分析ツールです。CI/CDワークフローのセキュリティを強化する目的で構築されたArgusは、テイントトラッキング技術と影響度分類器を利用して、GitHub Actionワークフローにおける潜在的な脆弱性を検出します。
詳細については、ウェブサイト - 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 のうち、正確に1つを指定する必要があります。このパラメータはオプションです。--commit: コミットハッシュ。--branch、--commit、--tag のうち、正確に1つを指定する必要があります。このパラメータはオプションです。--tag: タグ。--branch、--commit、--tag のうち、正確に1つを指定する必要があります。このパラメータはオプションです。--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
これにより、指定されたリポジトリのmasterブランチでrepoモードでスクリプトが実行されます。
ArgusはDockerコンテナ内で実行できます。次の手順に従ってください。
results フォルダ内で利用できますSARIF結果は、オンラインビューアまたはVisual Studio Code(VSCode)拡張機能を使用して表示できます。
オンラインビューア: SARIF Web Viewer は、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はオープンソースプロジェクトであり、コミュニティからの貢献を歓迎します。バグの報告、機能の提案、コードの作成など、どんな貢献も常に歓迎します!
研究で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={32st USENIX Security Symposium (USENIX Security 23)},
year={2023},
}
Argus は GPL ライセンスの下で提供されています。