Granite: Granular Runtime Enforcement for GitHub Actions Permissions
Mojtaba Moazen, Amir.M Ahmadian, Musard Balliu

TL;DR
Granite is a runtime system that enforces fine-grained, step-level permissions in GitHub Actions workflows, significantly reducing security risks from permission misuse with manageable performance overhead.
Contribution
Granite introduces a transparent, runtime proxy-based approach for enforcing step-level permissions in GitHub Actions, addressing the coarse permission model's security limitations.
Findings
Protects 52.7% of jobs from permission misuse attacks
Prevents attacks in 42 workflows across 20 repositories
Imposes an average overhead of 55% per job
Abstract
Modern software projects use automated CI/CD pipelines to streamline their development, build, and deployment processes. GitHub Actions is a popular CI/CD platform that enables project maintainers to create custom workflows -- collections of jobs composed of sequential steps -- using reusable components known as actions. Wary of the security risks introduced by fully-privileged actions, GitHub provides a job-level permission model for controlling workflow access to repository resources. Unfortunately, this model is too coarse-grained to reduce the attack surface pertaining to permission misuse attacks: All actions within a job share the same permissions granted to the job. This violates the principle of least privilege and can lead to broader software supply chain attacks, whenever a compromised action exploits the granted permissions to compromise the repository resources. In this…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSecurity and Verification in Computing · Web Application Security Vulnerabilities · Information and Cyber Security
