GitHub Advisoryadvisory · Go
GHSA-j2w3-9c3r-g83q Gitea: Private Repository Metadata Remains Accessible After Access Revocation
LOW
Official page ↗
- Aliases
- CVE-2026-58434
- Ecosystem
- Go
- Packages
- code.gitea.io/gitea
- Severity
- Low
- CVSS vector
- CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
- Weaknesses
- CWE-200, CWE-862
- Reviewed
- 2026-07-21
Affected packages
• Go code.gitea.io/gitea: < 1.27.0 → fixed in 1.27.0
Description
Summary
A user who previously had access to a private repository can continue to obtain repository metadata through `GET /api/v1/user/starred` after their access to the repository has been revoked.
After a collaborator is removed from a private repository, direct access to the repository is correctly denied. However, the repository may still appear in the user's starred repository list, and the endpoint continues to return repository metadata. Changes made to that metadata after access revocation are also reflected in subsequent responses.
Details
The issue affects the authenticated endpoint:
```http
GET /api/v1/user/starred
```
The same behavior was also observed on:
```http
GET /api/v1/user/subscriptions
```
A reproducible scenario is:
1. User `alice` creates a private repository.
2. User `bob` is granted collaborator access.
3. `bob` stars the repository.
4. `alice` removes `bob` from the repository collaborators.
5. Direct repository access by `bob` is denied.
6. `bob` requests `/api/v1/user/starred`.
7. The repository is still present in the response together with repository metadata.
Additionally, if repository metadata is modified after access revocation, the updated values are returned by `/api/v1/user/starred`.
As a result, a user who no longer has permission to access the repository can continue to obtain repository metadata through the starred repository list.
PoC
PoC Link
https://anonymous.4open.science/r/Gitea_PoC-EC93/5_poc_starred_list
PoC Details
1. Create a private repository:
```text
alice/P
description = "INITIAL"
```
2. Add `bob` as a collaborator with read access.
3. As `bob`, star the repository:
```http
PUT /api/v1/user/starred/alice/P
```
Response:
```http
204 No Content
```
4. Remove `bob` from the collaborator list.
5. Update the repository description:
```text
description = "AFTER-REVOKE"
```
6. Verify that direct repository access is no longer allowed:
```http
GET /api/v1/repos/alice/P
```
Response:
```http
404 Not Found
```
7. As `bob`, request the starred repository list:
```http
GET /api/v1/user/starred
```
The response still contains the repository entry and reflects the updated description:
```json
{
"full_name": "alice/P",
"description": "AFTER-REVOKE",
"private": true
}
```
This demonstrates that repository metadata remains accessible through the starred repository list even after repository access has been revoked.
Impact
A user who previously had legitimate access to a private repository can continue to retrieve repository metadata after losing access to the repository.
The exposed information includes repository metadata returned by the endpoint, such as:
• Repository name (`full_name`)
• Repository description
• Repository visibility status (`private`)
This issue does not expose repository contents, source code, issues, pull requests, secrets, or collaborator information.
The impact is limited to continued access to repository metadata after repository permissions have been revoked.
Related
Alias · CVE (1)
- CVE-2026-58434 Private Repository Metadata Remains Accessible After Access Revocation vulnerability
References
- https://github.com/go-gitea/gitea/security/advisories/GHSA-j2w3-9c3r-g83q web
- https://github.com/go-gitea/gitea/pull/38321 web
- https://github.com/go-gitea/gitea/pull/38390 web
- https://github.com/go-gitea/gitea/commit/362539b78e50dfcc4bd1b9368fdd2a1b8cab0129 web
- https://github.com/go-gitea/gitea/commit/500a09e044156d7a8d6eb58d67a28b8a1512c887 web
- https://github.com/go-gitea/gitea package
- https://github.com/go-gitea/gitea/releases/tag/v1.27.0 web