CVE-2026-58053 Security Alert: CRITICAL Vulnerability

Urgent: CVE-2026-58053 requires immediate attention.

· 8 min read

Executive Summary

CVE-2026-58053 is a critical flaw in Gitea act_runner when using the Docker backend (through act 0.262.0). The runner passes a workflow’s container.options directly into Docker’s host configuration and, even with privileged: false, only disables the Privileged flag while leaving dangerous options like --pid=host, --cap-add, and --security-opt intact. That means a user who can run a workflow on a Docker-backed runner may be able to break out of the container and gain root on the host.

This is especially dangerous for solo developers and small teams because CI runners are often deployed with broad access, persistent credentials, and shared infrastructure. No KEV listing and no known in-the-wild exploitation does not make this safe to ignore: the attack path is straightforward once an attacker can submit or trigger a workflow.

Immediate Action

  • Stop using the Docker-backed runner for untrusted workflows until patched or isolated. If possible, disable workflow execution from forks, external contributors, and low-trust branches.
  • Upgrade act_runner / act to a fixed release as soon as the vendor publishes one. If no fixed version is available yet, roll back to a non-Docker executor or a tightly isolated runner.
  • Remove or block container options in workflow jobs, especially --pid=host, --cap-add, --security-opt, --network=host, and any mount-related flags.
  • Isolate the runner host: use a dedicated VM, no sensitive secrets, no SSH keys, and no access to production networks or cloud metadata endpoints.
  • Review vendor guidance and release notes: Vendor advisory / release notes.
  • Rotate credentials used on the runner if you suspect any malicious workflow execution.

Affected Versions

  • gitea/act_runner with the Docker backend and act 0.262.0 or earlier: vulnerable.
  • workflow container.options passed through to Docker HostConfig: vulnerable behavior.
  • privileged: false is not sufficient to mitigate the issue.
  • act_runner@<=TODO_FIXED_VERSION vulnerable; upgrade to act_runner@>=TODO_FIXED_VERSION.
  • act@<=0.262.0 vulnerable; upgrade to act@>=TODO_FIXED_VERSION if a fix is released.

Resolution Guide

1) Patch or upgrade immediately

# Docker image update example
docker pull gitea/act_runner:TODO_FIXED_TAG
docker stop act-runner
docker rm act-runner
docker run -d --name act-runner \
  --restart unless-stopped \
  gitea/act_runner:TODO_FIXED_TAG

2) If you install via package managers, update the runner package or pin a safe version

# npm / yarn / pnpm (if you vendor or wrap act tooling)
npm i -D act@TODO_FIXED_VERSION
yarn add -D act@TODO_FIXED_VERSION
pnpm add -D act@TODO_FIXED_VERSION

# Python (if you use a wrapper or automation package)
pip install --upgrade TODO_PACKAGE_NAME==TODO_FIXED_VERSION
pipx upgrade TODO_PACKAGE_NAME

# Java (Maven / Gradle) - replace with the fixed artifact version
mvn versions:use-latest-releases
./gradlew dependencyUpdates

# Linux packages
sudo apt-get update
sudo apt-get install --only-upgrade TODO_PACKAGE_NAME
sudo yum update TODO_PACKAGE_NAME

3) Harden runner configuration

# Example hardening: disable risky container options in workflow policy
# Pseudocode / config pattern — adapt to your runner setup
allow_container_options: false
privileged: false
allow_host_network: false
allow_host_pid: false
allow_cap_add: false
allow_security_opt: false

4) Prefer safer execution modes

  • Use a dedicated, disposable VM runner instead of a shared Docker host.
  • Run workflows with the minimum permissions needed.
  • Block self-hosted runners from executing untrusted pull requests.

5) Minimal code fix example

If you maintain a fork or wrapper, reject dangerous options before they reach Docker:

// Pseudocode: sanitize workflow-supplied container options
func sanitizeOptions(opts string) string {
    blocked := []string{"--pid=host", "--cap-add", "--security-opt", "--network=host"}
    for _, b := range blocked {
        if strings.Contains(opts, b) {
            return ""
        }
    }
    return opts
}

Detection & Verification

Check versions

act --version
docker image ls | grep -E 'gitea/act_runner|act_runner'
docker inspect <runner-container> --format '{{.Config.Image}}'

Search workflows for dangerous options

grep -RInE 'container\.options|--pid=host|--cap-add|--security-opt|--network=host' .github workflows . 2>/dev/null

Check runner logs for suspicious container settings

docker logs act-runner 2>&1 | grep -E 'HostConfig|Privileged|cap-add|pid=host|security-opt'

Use dependency and image scanners

# Examples
npm audit
pip audit
mvn -q dependency:tree
./gradlew dependencies
docker scout cves gitea/act_runner:TODO_TAG
trivy image gitea/act_runner:TODO_TAG

Verify the fix

# Confirm the runner no longer accepts or forwards hostile container options
grep -RInE 'sanitizeOptions|allow_container_options|allow_host_pid|allow_cap_add' /etc /opt 2>/dev/null

# Re-run a harmless workflow and confirm the job container does not get host PID/caps
docker inspect <job-container> --format '{{json .HostConfig}}' | jq .

Risk and Impact

If exploited, an attacker can escape the workflow container and execute commands as root on the runner host. From there, they may steal secrets, tamper with build artifacts, modify source code, pivot into internal networks, or use the runner as a launch point for broader compromise. For small teams, the blast radius can include source repositories, deployment credentials, cloud tokens, and any systems reachable from the CI host.

Bottom line: if your Gitea runner uses Docker and accepts workflow-controlled container options, treat this as an urgent containment issue and patch or isolate immediately.

Keep reading