Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as any Gitea user
-
ExploitSend POST /{username} follow request
-
ExecutionRead private profile fields from response
-
ImpactHarvest user PII
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a valid signed-in account on the target Gitea instance (PR:L) - self-registration, if enabled, satisfies this. The target user must have configured a private/limited-visibility profile; public profiles leak nothing new. Exploitation is performed against the POST /{username} follow/unfollow endpoint, whose visibility check was absent (it was enforced only on GET). Limiting factors: only users with private profiles are affected, only a bounded set of profile fields (full name, location, website, description) is exposed, and an authenticated session is mandatory, so unauthenticated internet-wide exploitation is not possible. Fixed in 28.1.0 (disclosed 28.2.0). |
| Impact | This is a genuine but modest-priority information-disclosure flaw (CWE-200). The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, 6.5) correctly reflects network-reachable, low-complexity access requiring an authenticated account (PR:L) with no user interaction and no integrity/availability impact. All exploitation signals point toward low real-world urgency: EPSS is 0.16% (4th percentile), the CVE is NOT on CISA KEV, and no public exploit code is referenced - so exploitation status is 'no public exploit identified at time of analysis.' The one point of tension is the Confidentiality rating: the vendor/NVD vector claims C:H, but the data actually disclosed is limited profile metadata (full name, location, website, description of users with private profiles), which is closer to C:L in my independent judgment - this inflates the 6.5 base score somewhat. Net assessment: a real, vendor-confirmed authorization gap worth patching on normal cycles, but NOT an emergency - it requires a valid account, affects only users who deliberately set a private profile, and leaks non-credential PII rather than enabling takeover. |
| Exploit ScenarioDerived | An attacker who holds any valid (even self-registered) account on a Gitea instance targets a user who has set their profile to private. Instead of a GET to the profile (which enforces visibility), the attacker sends POST /{username} (the follow/unfollow action), which only checked for a signed-in session, and reads the private user's full name, location, website and description from the response. No public exploit code is referenced, but the request is trivial to craft manually. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Authenticated users on a Gitea instance can harvest private-profile information - full name, location, website, and free-text description - from other accounts by sending requests to the POST /{username} follow and unfollow endpoint, because the profile visibility check was applied only to GET requests while the POST handler merely required a signed-in session. Anyone holding a valid account on Gitea 1.22.0 through 28.0.0 (self-registration, where enabled, is enough) can pull these fields from the response for any target whose profile visibility is set to private; public profiles expose nothing new. The vendor fixed the flaw in 28.1.0 and disclosed it alongside the 28.2.0 release; there is no public exploit code identified at time of analysis, it is not in CISA KEV, and EPSS is low at roughly 0.16% (4th percentile), so this is a genuine but modest-priority information-disclosure issue.
RemediationAI
Upgrade to Gitea 28.1.0 or later - 28.2.0 is the recommended target since it is the release made in conjunction with disclosure and carries the complete hardening set from PRs https://github.com/go-gitea/gitea/pull/39501 and https://github.com/go-gitea/gitea/pull/39507. Vendor-released patch: 28.1.0 (disclosed with 28.2.0); follow the advisory at https://github.com/go-gitea/gitea/security/advisories/GHSA-xmfc-hqq8-33wh and the 28.2.0 release notes for upgrade steps. Because exploitation requires only a valid signed-in account (PR:L in the assessed vector), the most effective interim compensating control is to disable open self-registration (Require Sign-In / disable registration in the service configuration) so that arbitrary internet users cannot obtain the session needed to reach the POST /{username} handler - the trade-off is that legitimate new users must be provisioned manually by an administrator. If registration must remain open, restrict the instance to trusted networks via a reverse proxy or firewall allow-list, accepting that this weakens the value of a public-facing forge. Administrators can also reduce blast radius by asking users who rely on private profiles to temporarily clear the sensitive profile fields (full name, location, website, description) until the upgrade is applied, since an empty field cannot leak; note this is user-visible and does not fix the underlying missing check. Audit logs of POST follow/unfollow requests against private-profile accounts can be used to look for prior harvesting, and any data already disclosed should be treated as exposed given the low EPSS score alone does not rule out targeted use by an insider or registered tenant.
Affected VersionsENISA
Affected Packages
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 is a self-hosted, Go-based Git service whose user profiles carry a visibility setting that hides fields such as full name, location, website, and biography from viewers who are not the profile owner or an administrator. The root cause is a classic CWE-200 exposure of sensitive information through an inconsistent authorization boundary: the read path (GET) correctly called the profile visibility helper before rendering, but the POST /{username} follow/unfollow action - whose response returns the profile model - performed only a signed-in check and skipped that helper, so the same data set was reachable through a state-changing verb with weaker gating. The upstream fix set, delivered through the pull requests referenced in the advisory (GHSA-xmfc-hqq8-33wh), hardens profile visibility checks in adjacent code paths as well - the supplied diff shows, for example, the profile Atom feed handler now denying requests when feeds are disabled or when user_model.IsUserVisibleToViewer or organization.HasOrgOrUserVisible rejects the viewer, replacing the previous ad-hoc 'signed in and admin or owner' logic. The same pull requests bundle a broader authorization sweep (push-mirror creation now validates the caller rather than the context user and honours the DisableNewPush setting, OAuth2 refresh handling now verifies the token kind is a refresh token, and release deletion now rejects tags attached to a release), which is consistent with the class of missing per-object visibility enforcement that produced this CVE, even though the specific POST profile-handler hunk is not visible in the excerpt provided. The affected component in CPE terms is cpe:2.3:a:gitea:gitea across all version ranges up to the fixed release.
Know when Gitea gets its next vulnerability
- 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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Network endpoint, low complexity, and any authenticated account suffice (PR:L); only limited profile metadata is exposed, so C:L not C:H, with no integrity or availability impact.
Primary rating from Vendor (Gitea).
CVSS VectorVendor: Gitea
Lifecycle Timeline
2DescriptionCVE.org
The visibility check of Gitea user profiles was applied to GET requests only, while POST /{username} (follow and unfollow) required only a signed-in user. Any authenticated user could therefore obtain the full name, location, website and description of a user with a private profile from the response. The issue was fixed in 28.1.0 and disclosed with 28.2.0.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote code execution in Gitea (self-hosted Git service) via a code-injection flaw (CWE-94) allows attackers to run arbi
Broken access control in Gitea's Composer package registry (versions up to and including 1.26.1) lets remote attackers r
Gitea before 1.16.7 does not escape git fetch remote. Rated high severity (CVSS 7.5), this vulnerability is remotely exp
The git hook feature in Gitea 1.1.0 through 1.12.5 might allow for authenticated remote code execution in customer envir
Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting') vulnerability in Gitea Gitea
Authenticated command injection in Dokploy (self-hostable PaaS) versions 0.29.3 through 0.29.12 lets a low-privileged us
Reverse-proxy authentication bypass in the official Gitea Docker image (versions up to and including 1.26.2) allows any
Path traversal in Gitea's Org-mode (`.org`) markup renderer allows an attacker who can get Org-mode content rendered by
Container escape in Gitea act_runner (Docker backend, through act 0.262.0) lets an authenticated user with workflow-exec
models/repo_mirror.go in Gitea before 1.7.6 and 1.8.x before 1.8-RC3 mishandles mirror repo URL settings, leading to rem
Server-side request forgery and internal repository exfiltration in Gitea before 1.27.0 lets a low-privileged authentica
Authorization bypass in Gitea versions 1.22.3 through 1.26.1 allows holders of `public-only` access tokens or OAuth gran
EUVD-2026-103990
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB