Skip to content
Heist/ feed
Back to feed
CriticalFix available

gitea-runner: workflow container.options passes host namespaces and capability flags to job container when privileged mode is disabled

Type: advisorySources: OSV2 source records

### Summary act_runner appends workflow-controlled `jobs..container.options` directly to the Docker HostConfig for the job container. When runner privileged mode is disabled, only `Privileged` is forced false. Host namespace flags, capability expansion, and security profile overrides from workflow YAML are preserved in the final HostConfig. A workflow author can enter host PID/IPC namespaces and execute commands on the runner host as root. ### Details Source-to-sink path in act_runner: - `ContainerSpec.Options` accepts workflow YAML `container.options` - `RunContext.options()` appends workflow options to runner-level container options - Job container is created with `Privileged: rc.Config.Privileged` but also with `Options: rc.options(ctx)` - `mergeContainerConfigs()` parses Docker CLI-style options into HostConfig - When privileged mode is disabled, only `copts.privileged` is forced false - `sanitizeConfig()` only filters `Binds` and `Mounts` - Preserved dangerous HostConfig fields: ```text Privileged=false PidMode=host IpcMode=host CapAdd=["ALL"] SecurityOpt=["seccomp=unconfined","apparmor=unconfined"] ``` Attacker workflow YAML: ```yaml jobs: breakout: runs-on: ubuntu-latest container: image: ubuntu:22.04 options: >- --pid=host --ipc=host --cap-add=ALL --security-opt seccomp=unconfined --security-opt apparmor=unconfined steps: - name: host namespace marker run: | nsenter -t 1 -m -u -i -n -p -- sh -c "id > /tmp/marker" ``` ### Impact An attacker who can submit a workflow to

Products
gitea.com/gitea/runner
Affected versions
Not specified
Fixed versions
1.0.9-0.20260731160927-34bfa1915022
CVEs
CVE-2026-73802
Confirmed fixed CVEs
Not specified
Updated in this feed
28 Oct 2026, 08:46 UTC · Revision 1

Source evidence

gitea-runner: workflow container.options passes host namespaces and capability flags to job container when privileged mode is disabled

core-osv · Original source

Published 2 Oct 2026, 23:18 UTC

### Summary act_runner appends workflow-controlled `jobs..container.options` directly to the Docker HostConfig for the job container. When runner privileged mode is disabled, only `Privileged` is forced false. Host namespace flags, capability expansion, and security profile overrides from workflow YAML are preserved in the final HostConfig. A workflow author can enter host PID/IPC namespaces and execute commands on the runner host as root. ### Details Source-to-sink path in act_runner: - `ContainerSpec.Options` accepts workflow YAML `container.options` - `RunContext.options()` appends workflow options to runner-level container options - Job container is created with `Privileged: rc.Config.Privileged` but also with `Options: rc.options(ctx)` - `mergeContainerConfigs()` parses Docker CLI-style options into HostConfig - When privileged mode is disabled, only `copts.privileged` is forced false - `sanitizeConfig()` only filters `Binds` and `Mounts` - Preserved dangerous HostConfig fields: ```text Privileged=false PidMode=host IpcMode=host CapAdd=["ALL"] SecurityOpt=["seccomp=unconfined","apparmor=unconfined"] ``` Attacker workflow YAML: ```yaml jobs: breakout: runs-on: ubuntu-latest container: image: ubuntu:22.04 options: >- --pid=host --ipc=host --cap-add=ALL --security-opt seccomp=unconfined --security-opt apparmor=unconfined steps: - name: host namespace marker run: | nsenter -t 1 -m -u -i -n -p -- sh -c "id > /tmp/marker" ``` ### Impact An attacker who can submit a workflow to

osv:GHSA-x4q3-gcj3-m6cf

gitea.com/gitea/runner

Fixed versions: 1.0.9-0.20260731160927-34bfa1915022

Complete source record
{
  "id": "6831ff7488dcecaa9a4f41ddf59f57909b5ee6d023a587b01adfced8d93c147c",
  "url": "https://osv.dev/vulnerability/GHSA-x4q3-gcj3-m6cf",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "gitea-runner: workflow container.options passes host namespaces and capability flags to job container when privileged mode is disabled",
    "summary": "### Summary act_runner appends workflow-controlled `jobs..container.options` directly to the Docker HostConfig for the job container. When runner privileged mode is disabled, only `Privileged` is forced false. Host namespace flags, capability expansion, and security profile overrides from workflow YAML are preserved in the final HostConfig. A workflow author can enter host PID/IPC namespaces and execute commands on the runner host as root. ### Details Source-to-sink path in act_runner: - `ContainerSpec.Options` accepts workflow YAML `container.options` - `RunContext.options()` appends workflow options to runner-level container options - Job container is created with `Privileged: rc.Config.Privileged` but also with `Options: rc.options(ctx)` - `mergeContainerConfigs()` parses Docker CLI-style options into HostConfig - When privileged mode is disabled, only `copts.privileged` is forced false - `sanitizeConfig()` only filters `Binds` and `Mounts` - Preserved dangerous HostConfig fields: ```text Privileged=false PidMode=host IpcMode=host CapAdd=[\"ALL\"] SecurityOpt=[\"seccomp=unconfined\",\"apparmor=unconfined\"] ``` Attacker workflow YAML: ```yaml jobs: breakout: runs-on: ubuntu-latest container: image: ubuntu:22.04 options: >- --pid=host --ipc=host --cap-add=ALL --security-opt seccomp=unconfined --security-opt apparmor=unconfined steps: - name: host namespace marker run: | nsenter -t 1 -m -u -i -n -p -- sh -c \"id > /tmp/marker\" ``` ### Impact An attacker who can submit a workflow to",
    "evidence": "osv:GHSA-x4q3-gcj3-m6cf",
    "products": [
      {
        "name": {
          "value": "gitea.com/gitea/runner",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "1.0.9-0.20260731160927-34bfa1915022",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "critical",
    "structured": {
      "id": "GHSA-x4q3-gcj3-m6cf",
      "aliases": [
        "CVE-2026-73802",
        "GHSA-x4q3-gcj3-m6cf",
        "GO-2026-6656"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "1.0.9-0.20260731160927-34bfa1915022"
                }
              ]
            }
          ],
          "package": {
            "name": "gitea.com/gitea/runner",
            "purl": "pkg:golang/gitea.com/gitea/runner",
            "ecosystem": "Go"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-x4q3-gcj3-m6cf/GHSA-x4q3-gcj3-m6cf.json"
          }
        }
      ],
      "modified": "2026-10-07T17:55:44.795358931Z",
      "provider": "osv",
      "references": [
        "https://github.com/go-gitea/gitea/security/advisories/GHSA-x4q3-gcj3-m6cf",
        "https://gitea.com/gitea/runner/pulls/1058",
        "https://gitea.com/gitea/runner/releases/tag/v3.0.0",
        "https://github.com/go-gitea/gitea"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-269"
        ],
        "severity": "CRITICAL",
        "github_reviewed": true,
        "nvd_published_at": null,
        "github_reviewed_at": "2026-10-02T23:18:12Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-73802",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 97124,
  "published_at": "2026-10-02T23:18:12+00:00"
}

gitea-runner: workflow container.options passes host namespaces and capability flags to job container when privileged mode is disabled in gitea.com/gitea/runner

core-osv · Original source

Published 7 Oct 2026, 14:10 UTC

gitea-runner: workflow container.options passes host namespaces and capability flags to job container when privileged mode is disabled in gitea.com/gitea/runner

osv:GO-2026-6656

gitea.com/gitea/runner

Fixed versions: 1.0.9-0.20260731160927-34bfa1915022

Complete source record
{
  "id": "b02c1d05d19aee1527cc9846ce96aef861347d06771f3d615d178b321f7dff8b",
  "url": "https://osv.dev/vulnerability/GO-2026-6656",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "gitea-runner: workflow container.options passes host namespaces and capability flags to job container when privileged mode is disabled in gitea.com/gitea/runner",
    "summary": "gitea-runner: workflow container.options passes host namespaces and capability flags to job container when privileged mode is disabled in gitea.com/gitea/runner",
    "evidence": "osv:GO-2026-6656",
    "products": [
      {
        "name": {
          "value": "gitea.com/gitea/runner",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "1.0.9-0.20260731160927-34bfa1915022",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "GO-2026-6656",
      "aliases": [
        "CVE-2026-73802",
        "GHSA-x4q3-gcj3-m6cf",
        "GO-2026-6656"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "1.0.9-0.20260731160927-34bfa1915022"
                }
              ]
            }
          ],
          "package": {
            "name": "gitea.com/gitea/runner",
            "purl": "pkg:golang/gitea.com/gitea/runner",
            "ecosystem": "Go"
          },
          "database_specific": {
            "source": "https://vuln.go.dev/ID/GO-2026-6656.json"
          },
          "ecosystem_specific": {}
        }
      ],
      "modified": "2026-10-07T17:45:12.474497003Z",
      "provider": "osv",
      "references": [
        "https://github.com/go-gitea/gitea/security/advisories/GHSA-x4q3-gcj3-m6cf",
        "https://gitea.com/gitea/runner/pulls/1058",
        "https://gitea.com/gitea/runner/releases/tag/v3.0.0"
      ],
      "provider_metadata": {
        "url": "https://pkg.go.dev/vuln/GO-2026-6656",
        "review_status": "UNREVIEWED"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-73802",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 97099,
  "published_at": "2026-10-07T14:10:14+00:00"
}