Maintainer hijack / repo-jacking
Definition
Maintainer hijack, also known as repo-jacking, occurs when a malicious actor gains control over a software repository by exploiting vulnerabilities in repository management or transfer processes. This can happen if a repository is transferred to a new owner but the original maintainer’s permissions are not properly revoked, or if a repository is deleted and the name becomes available for re-registration by an attacker. This allows the attacker to inject malicious code into the repository, potentially impacting all users who depend on it.
Secure Settings Example
# GitHub repository settings to prevent maintainer hijack
permissions:
maintainers:
- username: "secure_maintainer"
branch_protection_rules:
- pattern: "main"
required_status_checks:
strict: true
contexts: ["ci/test", "ci/lint"]
enforce_admins: true
required_pull_request_reviews:
required_approving_review_count: 2
restrictions:
users: []
teams: ["core-team"]
Insecure Settings Example
# GitHub repository settings with potential for maintainer hijack
permissions:
maintainers:
- username: "old_maintainer" # Old maintainer not removed
branch_protection_rules:
- pattern: "main"
required_status_checks:
strict: false # Status checks not enforced
enforce_admins: false # Admins can bypass protections
required_pull_request_reviews:
required_approving_review_count: 0 # No review required
restrictions:
users: []
teams: []