Poisoned Pipeline

Poisoned Pipeline / Incidents / AS24

AS24 · 2023-01

Self-hosted GitHub Actions runners (Praetorian Gato)

GitHub Actions

Praetorian's 2022–2023 red-team work, released as Gato (GitHub Attack
Toolkit) at ShmooCon 2023, showed that non-ephemeral self-hosted Actions
runners are a supply-chain persistence and lateral-movement platform.
A job on the runner executes on the underlying host, on the internal
network, and can schedule follow-on workflows. GitHub's own docs warn
against using self-hosted runners on public repos. T0148 was identified
from this class of operations, not from one public victim advisory.

Mapped techniques

supply-chain Self-hosted runner

T0148 · Persistence · Scheduled tasks on self hosted runner

Self-hosted runners persist the environment between jobs; a malicious
workflow can leave scheduled tasks or extra runner registrations.

T0132 · Privilege Escalation · Overprivileged CI/CD Runners

The runner host sits inside the org network and holds deployment
credentials the public GitHub-hosted runner never sees.

T0166 · Execution · Trigger pipeline execution

Gato's attack module pushes a workflow or opens a fork PR that
executes on the self-hosted runner.

Framework gaps noted

Sources