{"id":"CVE-2026-66877","aliases":["EUVD-2026-101089","GHSA-v2w8-m4gr-qj65"],"status":"published","title":"Gitea fork workflow approval bypass through concurrency cancellation","description":"Gitea enforces first-time fork contributor approval by blocking jobs, but some job transition and dispatch paths do not re-check the run's approval requirement. A separate run sharing a job-level concurrency group can cancel a pending job and cause its blocked sibling jobs to be re-emitted and dispatched without approval. This allows unreviewed workflow code to execute on self-hosted runners; fork secrets remain withheld and the run token remains read-only.","severity":{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-11","score":0.00426,"percentile":0.37342,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-284"],"published":"2026-10-14T14:36:11Z","modified":"2026-10-28T02:30:56Z","products":[{"vendor":"gitea","product":"gitea"}],"references":[{"url":"https://github.com/go-gitea/gitea/security/advisories/GHSA-v2w8-m4gr-qj65","tags":["vendor-advisory","advisory"]},{"url":"https://blog.gitea.com/release-of-1.27.3/","tags":["release-notes","advisory"]},{"url":"https://github.com/go-gitea/gitea/pull/39005","tags":["patch","fix"]},{"url":"https://github.com/go-gitea/gitea/pull/39018","tags":["patch","fix"]},{"url":"https://github.com/go-gitea/gitea/releases/tag/v1.27.3","tags":["release-notes","advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/66xxx/CVE-2026-66877.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-66877","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-66877","title":"Gitea fork workflow approval bypass through concurrency cancellation","description":"Gitea enforces first-time fork contributor approval by blocking jobs, but some job transition and dispatch paths do not re-check the run's approval requirement. A separate run sharing a job-level concurrency group can cancel a pending job and cause its blocked sibling jobs to be re-emitted and dispatched without approval. This allows unreviewed workflow code to execute on self-hosted runners; fork secrets remain withheld and the run token remains read-only.","status":"published","published":"2026-10-14T14:36:11.356Z","modified":"2026-10-15T03:56:53.515Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high","assessor":"adp"}],"cwes":["CWE-284"],"updated_at":"2026-11-02T14:20:12.939084Z"}],"euvd":[{"id":"EUVD-2026-101089","description":"Gitea enforces first-time fork contributor approval by blocking jobs, but some job transition and dispatch paths do not re-check the run's approval requirement. A separate run sharing a job-level concurrency group can cancel a pending job and cause its blocked sibling jobs to be re-emitted and dispatched without approval. This allows unreviewed workflow code to execute on self-hosted runners; fork secrets remain withheld and the run token remains read-only.","status":"published","published":"2026-10-14T14:36:11Z","modified":"2026-10-15T03:56:53Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T17:00:15.585288Z"}],"nvd":[{"id":"CVE-2026-66877","description":"Gitea enforces first-time fork contributor approval by blocking jobs, but some job transition and dispatch paths do not re-check the run's approval requirement. A separate run sharing a job-level concurrency group can cancel a pending job and cause its blocked sibling jobs to be re-emitted and dispatched without approval. This allows unreviewed workflow code to execute on self-hosted runners; fork secrets remain withheld and the run token remains read-only.","status":"published","published":"2026-10-14T15:17:21.863Z","modified":"2026-10-15T04:18:25.113Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high","assessor":"secondary"}],"cwes":["CWE-284"],"updated_at":"2026-11-02T14:12:58.99337Z"}],"osv":[{"id":"CVE-2026-66877","title":"Gitea fork workflow approval bypass through concurrency cancellation","description":"Gitea enforces first-time fork contributor approval by blocking jobs, but some job transition and dispatch paths do not re-check the run's approval requirement. A separate run sharing a job-level concurrency group can cancel a pending job and cause its blocked sibling jobs to be re-emitted and dispatched without approval. This allows unreviewed workflow code to execute on self-hosted runners; fork secrets remain withheld and the run token remains read-only.","status":"published","published":"2026-10-14T14:36:11.356Z","modified":"2026-10-28T02:30:56.775334062Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:45:14.46177Z"}]}}
