GitHub Audit Log: Self-Hosted Runner Configuration Changes

Alerts on GitHub audit log events indicating self-hosted runner registration and runner group configuration changes.

FreeReviewedSigma · Low · v5
Product
github
Service
audit
Author
Muhammad Faisal (@faisalusuf) (SigmaHQ), DRL 1.1
Published
2023-01-27
Updated
2026-07-31
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