---
id: "CVE-2026-116474"
kind: "vulnerability"
aliases: ["CVE-2026-116474"]
title: "Gitea: Actions job could fake trusted commit signatures on any repository"
severity: "low"
cvss: null
epss: null
exploited: false
status: "open"
category: "other"
products: []
ecosystems: []
tags: ["gitea", "gitea-actions", "other", "self-hosted"]
not_affected_if: ["actions-disabled"]
published_at: "2026-11-01T10:18:35+00:00"
first_seen_at: "2026-11-01T10:49:33+00:00"
updated_at: "2026-11-01T10:51:35+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-116474", "first_seen_at": "2026-11-01T10:49:33+00:00"}]
---

# Gitea: Actions job could fake trusted commit signatures on any repository

A Gitea Actions job runs as a system user that could register an email and GPG key on itself, so commits signed with that key show as verified and signed by the instance. The impact is limited to the displayed signature status; enforcement such as required signed commits is unaffected and no access is gained.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the Gitea version with `gitea --version` and compare it to the fixed release in the sources

## Timeline

- 2026-11-01T10:49:33+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-116474

## From the sources

The `GITEA_TOKEN` of a Gitea Actions job authenticates as the `gitea-actions` system user, and the `/api/v1/user` email and GPG key endpoints accepted that user, so a job could register an email address and a GPG key on it; without required email confirmation (the default) the address is stored as activated. Commit verification treats a key without a real owner as the instance signing key, so any user who can run a workflow job could make commits signed with their own key show as trusted and signed by the instance in every repository where they appear, including pull requests to repositories the user cannot write to. The impact is limited to the displayed signature status: enforcement such as required signed commits only checks that a signature is verified and is unaffected, and no access is gained. The `/api/v1/user` routes now reject system users.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
