# Shared CI runner exposes private state across jobs

A job reaches a previous job's private filesystem or image material despite the runner's promised isolation.

**Candidate CWE:** [CWE-668](https://cwe.mitre.org/data/definitions/668.html)

## Test hypothesis

Use two owned fixture jobs on a disposable runner. Create one known synthetic marker or private fixture image in the first context; test only that predetermined resource from the restricted second job. Compare a fresh isolated runner and record cache/mount/pull policy.

## Evidence required

Runner/executor version, job identities, host/mount or image boundary, marker result and clean-runner comparison. Prove the promised isolation and the lower-trust job's attainable scheduling conditions.

## Rule out false positives

Deliberately shared cache data, identical trust domains, an intentionally preinstalled public image, or a marker made public by the fixture itself.

## Playbook and command references

- [GitLab pipelines: contribution, job token and runner boundaries](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/gitlab-pipeline-boundaries.html) — Trace GitLab execution context, included configuration, downstream inputs, job-token permissions and runner reuse using private synthetic fixtures.
- [Container and Kubernetes isolation](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/container-kubernetes.html) — Test RBAC, workload identity, admission, networking and host exposure as separate enforcement layers.

[Find the associated command snippets](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/commands.html?q=GitLab%20pipelines%3A%20contribution%2C%20job%20token%20and%20runner%20boundaries)

## Referenced by these target playbooks

[OSS & self-hosted](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/oss.html) · [Cloud & containers](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/cloud.html)

## Report checklist

- [ ] Capture the affected version, configuration, identities, and object ownership.
- [ ] Preserve a valid baseline and a negative control.
- [ ] Reproduce the forbidden data access, action, or state change on controlled fixtures.
- [ ] Explain the intended security rule and why the observed behavior violates it.
- [ ] State prerequisites, uncertainty, cleanup, and the smallest demonstrated impact.

## Conditional ATT&CK mapping

No direct ATT&CK mapping selected. Record the weakness and demonstrated impact without forcing an adversary-behavior classification. See the [mapping guide](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/attack.html).

## Primary references

- [GitLab runner security](https://docs.gitlab.com/runner/security/)
- [CWE-668: unintended resource sphere](https://cwe.mitre.org/data/definitions/668.html)

[Back to the complete vulnerability catalog](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities.html)
