GitHub Audit Log: Self-Hosted Runner Configuration Changes
Alerts on GitHub audit log events indicating self-hosted runner registration and runner group configuration changes.
- Product
- github
- Service
- audit
- Author
- Muhammad Faisal (@faisalusuf) (SigmaHQ), DRL 1.1
- Published
- 2023-01-27
- Updated
- 2026-07-31
ATT&CK techniques
Initial Access → CollectionRecon
Resource Dev
Initial Access
Execution
Persistence
Priv Esc
Defense Evasion
Cred Access
Discovery
Lateral Movement
Collection
C2
Exfiltration
Impact
What it detects
This rule identifies events in the GitHub audit log related to registering/removing self-hosted runners and creating/updating/removing runner groups, including changes to runners within those groups. Such changes matter because they can alter which systems execute GitHub Actions jobs and may be used to establish persistence or privilege-related impact via runner access. It relies on audit-log telemetry capturing the specific organization and repository actions listed by the rule.
Reporting behind it
- docs.github.comhttps://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners#about-self-hosted-runners
- docs.github.comhttps://docs.github.com/en/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#search-based-on-operation
- github.comhttps://github.com/SigmaHQ/sigma/blob/master/rules/application/github/audit/github_self_hosted_runner_changes_detected.yml
Changelog
v5- v5Candidate ingested via manual entry.2026-07-31
- v4Candidate ingested via manual entry.2026-07-31
- v3Candidate ingested via manual entry.2026-07-31
- v2Candidate ingested via manual entry.2026-07-31
- v1No changelog recorded for this version.2026-07-30
Detection content is published as a reviewed draft. Tune thresholds and exclusions against your own telemetry before enabling this rule for alerting.
title: "GitHub Audit Log: Self-Hosted Runner Configuration Changes"
id: ef1d7694-a36d-409f-9215-89abca6e3790
status: test
description: This rule identifies events in the GitHub audit log related to registering/removing self-hosted runners and creating/updating/removing runner groups, including changes to runners within those groups. Such changes matter because they can alter which systems execute GitHub Actions jobs and may be used to establish persistence or privilege-related impact via runner access. It relies on audit-log telemetry capturing the specific organization and repository actions listed by the rule.
author: Muhammad Faisal (@faisalusuf), Huntrule Team
date: 2023-01-27
references:
- https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners#about-self-hosted-runners
- https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization#search-based-on-operation
- https://github.com/SigmaHQ/sigma/blob/master/rules/application/github/audit/github_self_hosted_runner_changes_detected.yml
tags:
- attack.impact
- attack.discovery
- attack.collection
- attack.persistence
- attack.privilege-escalation
- attack.initial-access
- attack.stealth
- attack.t1526
- attack.t1213.003
- attack.t1078.004
logsource:
product: github
service: audit
definition: "Requirements: The audit log streaming feature must be enabled to be able to receive such logs. You can enable following the documentation here: https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/streaming-the-audit-log-for-your-enterprise#setting-up-audit-log-streaming"
detection:
selection:
action:
- org.remove_self_hosted_runner
- org.runner_group_created
- org.runner_group_removed
- org.runner_group_runner_removed
- org.runner_group_runners_added
- org.runner_group_runners_updated
- org.runner_group_updated
- repo.register_self_hosted_runner
- repo.remove_self_hosted_runner
condition: selection
falsepositives:
- Allowed self-hosted runners changes in the environment.
- A self-hosted runner is automatically removed from GitHub if it has not connected to GitHub Actions for more than 14 days.
- An ephemeral self-hosted runner is automatically removed from GitHub if it has not connected to GitHub Actions for more than 1 day.
level: low
license: DRL-1.1
related:
- id: f8ed0e8f-7438-4b79-85eb-f358ef2fbebd
type: derived