Skip to main content

Gitea EUVDEUVD-2026-93914

| CVE-2026-103504 HIGH
Least Privilege Violation (CWE-272)
2026-10-06 88ee5874-cf24-4952-aea0-31affedb7ff2
8.1
CVSS 3.1 · Vendor: 88ee5874-cf24-4952-aea0-31affedb7ff2
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Hold membership in org team
  2. Delivery
    Owner demotes team via API (permission field only)
  3. Exploit
    Per-unit access not rebuilt or capped
  4. Execution
    Retain stale write/read repo access
  5. Impact
    Read and push to repositories

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V8 - Authorization Least privilege on resource access
Exploitation Conditions

Exploitation is triggered specifically when an organization owner changes a team's permission level through the Gitea REST API submitting only the permission field (e.g., demoting admin→read); the code neither rebuilds the team's per-unit access nor applies the requested level as a cap, so previously granted unit permissions (including write to team repositories) persist. Prerequisites/limits: the target team must have existing per-unit repository access, an administrator must perform the API-based demotion, and the beneficiary must already be an authenticated member of that team. The web UI form path is explicitly NOT affected, so organizations that manage team permissions only through the web form are not exposed. Affected versions are Gitea ≤1.27.3; upgrading to v28.0.0 remediates.

Impact

This is a genuine but conditional broken-access-control flaw (CWE-272, Incorrect Privilege Assignment) in Gitea rather than a mass-exploitable remote code execution issue. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N, 8.1 High) indicates network-reachable, low-complexity exploitation by an already-authenticated low-privilege actor with high confidentiality and integrity impact and no availability impact - consistent with a team member retaining write/read repository access they should have lost. The exploitation-enabling signals are weak: EPSS is only 0.16% (5th percentile), there is no CISA KEV listing, and no public exploit code is identified, so this is best treated as a lower-urgency patch-management item than the 8.1 score alone implies. A key nuance the CVSS score cannot capture is that the elevated access does not arise from an attacker action but from an administrator mistake: the flaw only manifests after an organization owner demotes a team via the API supplying only the permission field, so the real-world risk is concentrated in environments that programmatically manage team permissions. No signals are in direct conflict, but note the input Tag 'Information Disclosure' understates the issue - the retained access includes write (C:H AND I:H), making this a privilege-retention/least-privilege-violation problem, not merely disclosure.

Exploit ScenarioDerived

An organization owner uses the Gitea API to demote a team (e.g., from admin to read) by sending only the permission field, intending to reduce the team's access. Because the per-unit access is not rebuilt and the new level is not applied as a cap, the team's members silently keep their previous unit permissions - including write access to the organization's repositories - and can continue reading and pushing to repos they should no longer control. No public exploit code is identified at time of analysis; exploitation requires an existing low-privileged team account plus the triggering administrative API call.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 07, 2026

Gitea through 1.27.3 fails to revoke per-unit repository access when an organization team is demoted through the REST API, so existing team members silently keep their previous unit permissions - including write access to the team's repositories - after an owner lowers the team level (for example admin to read). The flaw is CWE-272 Incorrect Privilege Assignment: a PATCH that supplies only the permission field updates the team's access mode but never rebuilds its per-unit grants nor applies the new level as a cap, and exploitation requires an authenticated organization owner to make that API call plus a team that already holds per-unit repository permissions, with the CVSS vector (PR:L) confirming an authenticated beneficiary; the web form path is not affected. Vendor scoring is 8.1 with high confidentiality and integrity impact, while EPSS is only 0.16% (5th percentile) and no public exploit code has been identified at time of analysis; upgrading to Gitea 28.0.0 restores the intended cap behavior.

RemediationAI

Upgrade to Gitea 28.0.0, which is the vendor-released fix for this issue (see the GHSA-x8c3-3rp8-2j46 advisory, the release notes at https://github.com/go-gitea/gitea/releases/tag/v28.0.0, and PR https://github.com/go-gitea/gitea/pull/38938); because the patch changes unit-permission resolution rather than rewriting stored rows, administrators should also audit teams that were demoted via the API and, where needed, re-establish the correct unit set. Until upgrading, the most reliable compensating control is to change team permission levels only through the web form, which is confirmed unaffected, or to delete and recreate the affected team (or remove and re-add its unit grants) after any API-based demotion so stale team_unit rows cannot persist; note that recreating a team resets its unit configuration and may temporarily interrupt member access. Because the retained permissions can include write access to repositories, review recent commits, pushes, and pipeline activity on repositories owned by teams that were demoted through the API, and revoke or rotate any credentials, deploy keys, or tokens reachable through those repositories. Restricting the REST API to trusted administrators (network ACLs, reverse-proxy allowlists) reduces exposure but does not remediate the underlying broken-access-control behavior, and read-only monitoring via the organization team API can be used to detect teams whose effective unit access exceeds their reported permission level. No vendor-released patch exists for versions prior to 28.0.0, so remaining on 1.27.3 or earlier requires the workarounds above on an ongoing basis.

Affected VersionsENISA

Gitea 0 ≤1.27.3

Affected Packages

euvd gitea no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Gitea's authorization model is built from organizations, teams, and per-team 'units' (code, issues, pull requests, releases, wiki, etc.), each carrying an access mode of none, read, write, or admin; a team is also assigned an overall access mode, and repository visibility for a team is derived from a combination of team_repo associations and team_unit rows. Access decisions for a given user therefore take the maximum of the team-level mode and the matching unit-level mode, capped by the unit type's maximum permitted access. CVE-2026-103504 (CWE-272, Incorrect Privilege Assignment) arises because the API code path that changes a team's permission with only the permission field mutated the team's AccessMode but did not re-derive or rebuild the team_unit records, nor did it clamp the effective per-unit mode to the newly requested (lower) level. The result was a persisted privilege escalation for the team's existing members: after an admin-to-read demotion, the stale unit rows still granted write access to the team's repositories. The upstream fix in PR 38938 (shipped in v28.0.0, GHSA-x8c3-3rp8-2j46) reworks unit permission resolution: UnitAccessModeEx now computes the mode as max(unit access, team access) and then applies min(mode, unit type's MaxPerm()) as a hard cap, TeamList.UnitMaxAccess was renamed/reimplemented as AnyRepoUnitMaxAccess with an explicit FIXME noting it is still not per-repository precise, unit-name handling no longer special-cases admin teams, and repository query conditions were split into a reader-scoped helper (teamUnitsRepoReaderCond) that additionally honors the team's own authorize setting. The vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N describes a network-reachable, low-complexity issue requiring an authenticated actor and no user interaction, with high confidentiality and integrity impact but no availability impact - consistent with retained read/write repository access rather than service disruption.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2) PRIMARY 8.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

Authenticated team member (PR:L) reaches repos over the network API (AV:N) with no added complexity (AC:L); retained write/read gives C:H/I:H, no availability impact (A:N), scope unchanged.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (88ee5874-cf24-4952-aea0-31affedb7ff2).

CVSS VectorVendor: 88ee5874-cf24-4952-aea0-31affedb7ff2

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

3
CVSS changed
Oct 07, 2026 - 21:23 NVD
8.1 (HIGH)
CVE Published
Oct 06, 2026 - 20:17 cve.org
UNKNOWN (no severity yet)
CVE Published
Oct 06, 2026 - 20:17 cve.org
HIGH 8.1

DescriptionCVE.org

Changing an organization team's permission through the API with only the permission field did not rebuild the team's per-unit access, and the requested level was not applied as a cap. After an organization owner demoted a team, for example from admin to read, the team's members kept their previous unit permissions, including write access to the team's repositories. The web form was not affected.

Technical POC Analysis

CWE-272 (Incorrect Privilege Assignment / least-privilege violation) in Gitea's organization team edit path.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Gitea deployments at or below 1.27.3 can allow organization owners to demote a team through the REST API without actually reducing the team's existing repository write access, undermining access governance and least-privilege controls. This can leave proprietary code exposed to unauthorized modification or viewing by users who should have lost access, affecting any organization using Gitea teams with per-unit repository grants. Leadership should prioritize this because it creates a silent privilege persistence risk that can erode trust in code integrity and compliance controls.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 95% exploitable
Prevalence
Medium
popular self-hosted Git service, common in dev teams but not ubiquitous
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy