A user who can open a fork pull request can place workflow content with a shared run-level concurrency group into a Gitea Actions run that is awaiting approval. When a later run in that group cancels the blocked job, the run becomes terminal while still marked as needing approval. If a maintainer later approves the run, Gitea passed the already-cancelled job back through concurrency preparation, set it to waiting, and made it claimable by a matching runner, executing fork-controlled workflow code. Exploitation requires the maintainer's later approval action, Actions to be enabled, and a runner that accepts the repository's jobs.
{
"cna_assigner": "Gitea",
"cwe_ids": [
"CWE-841"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/104xxx/CVE-2026-104626.json"
}{
"extracted_events": [
{
"cpe": "cpe:2.3:a:gitea:gitea:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "28.0.0"
}
],
"source": "CPE_RANGE"
},
{
"original_tag": "v28.0.0",
"range": [
{
"fixed": "15b8a5805adf57c5189602008d38cccfd3c795e0"
}
],
"source": "REFERENCES_TAG"
}
]
}