Skip to main content

Gogs CVE-2026-52815

| EUVDEUVD-2026-39061 MEDIUM
Information Exposure (CWE-200)
2026-06-23 https://github.com/gogs/gogs GHSA-744x-3838-5r56
5.5
CVSS 4.0 · Vendor: https://github.com/gogs/gogs
Share

Severity by source

Vendor (https://github.com/gogs/gogs) PRIMARY
5.5 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
5.3 MEDIUM

Network-reachable, no auth (PR:N), exposes only team metadata so confidentiality impact is Low, no integrity or availability impact.

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

Primary rating from Vendor (https://github.com/gogs/gogs).

CVSS VectorVendor: https://github.com/gogs/gogs

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

3
CVSS changed
Jun 24, 2026 - 21:22 NVD
5.5 (MEDIUM)
Source Code Evidence Fetched
Jun 23, 2026 - 17:36 vuln.today
Analysis Generated
Jun 23, 2026 - 17:36 vuln.today

DescriptionCVE.org

Summary

Gogs has an unauthenticated information disclosure vulnerability. The GET /api/v1/orgs/:orgname/teams endpoint at internal/route/api/v1/org_team.go:8 returns all teams for any organization without requiring authentication. The route group at internal/route/api/v1/api.go:380-385 lacks the reqToken() middleware, and the listTeams() handler performs no authentication check, exposing team IDs, names, descriptions, and permission levels to any unauthenticated caller.

Affected Versions

Gogs (all current versions)

Vulnerability Details

Root Cause: Missing reqToken() middleware on org teams route group

internal/route/api/v1/api.go lines 380-385:

go
// Org teams route group - no reqToken() middleware
m.Group("/:orgname", func() {
    m.Get("/teams", org.ListTeams) // No auth required
}, orgAssignment(true))

The orgAssignment(true) middleware only loads the organization object - it performs no authentication. The listTeams() handler at org_team.go:8 returns all teams unconditionally:

go
func ListTeams(c *context.APIContext) {
    org := c.Org.Organization
    teams, err := database.GetTeamsByOrgID(org.ID)
    // Returns all teams - no c.IsLogged check, no permission check
}

Compare with other org endpoints that correctly require authentication:

go
m.Group("/orgs/:orgname", func() {
    // ... other endpoints ...
}, reqToken(), orgAssignment(true, true)) // reqToken() enforces auth

Attack Chain

  • Attacker sends GET /api/v1/orgs/target-org/teams with no authentication
  • orgAssignment(true) loads the organization but does not check auth
  • ListTeams() queries all teams and returns them
  • Response includes team IDs, names, descriptions, and permission levels (read/write/admin/owner)

Proof of Concept

bash
# List all teams in an organization - no authentication needed
curl -s "http://TARGET:3000/api/v1/orgs/myorg/teams" | python3 -m json.tool
# Expected: 200 OK with full team list
# [
#   {
#     "id": 1,
#     "name": "Owners",
#     "description": "Admin team",
#     "permission": "owner"
#   },
#   {
#     "id": 2,
#     "name": "backend-devs",
#     "description": "Backend development team",
#     "permission": "write"
#   }
# ]

Impact

An unauthenticated attacker can:

  • Enumerate all teams within any organization, including private/internal teams
  • Discover team permission levels (read/write/admin/owner), aiding privilege escalation planning
  • Map organizational structure and identify high-value targets (admin/owner teams)
  • Harvest team IDs for use in other API calls that may have weaker authorization checks

Suggested Remediation

go
m.Group("/:orgname", func() {
    m.Get("/teams", org.ListTeams)
}, reqToken(), orgAssignment(true))

Add reqToken() middleware to the org teams route group, consistent with other authenticated org endpoints. Additionally, ListTeams() should verify the authenticated user is a member of the organization.

AnalysisAI

Unauthenticated organization team enumeration in Gogs exposes team IDs, names, descriptions, and permission levels (read/write/admin/owner) to any network-accessible caller without credentials. All versions prior to 0.14.3 are affected - the GET /api/v1/orgs/:orgname/teams endpoint was placed in a route group missing the reqToken() middleware, meaning the orgAssignment(true) middleware loads the org object but enforces no authentication. …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Access
Send unauthenticated GET to /api/v1/orgs/:org/teams
Delivery
orgAssignment middleware loads org, skips auth
Exploit
ListTeams returns all team metadata
Execution
Harvest team IDs and permission levels
Persist
Identify owner/admin teams as targets
Impact
Use team data in further API reconnaissance

Vulnerability AssessmentAI

Exploitation No special conditions are required beyond network access to the Gogs API port (default TCP/3000). … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment No vendor-supplied CVSS vector was provided, so risk must be derived from the description and exploit mechanics. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario An external attacker with HTTP access to a Gogs instance sends `GET /api/v1/orgs/target-org/teams` with no authentication headers. The server responds with a 200 OK containing the full team list including team IDs, names, permission levels, and descriptions. …
Remediation Upgrade to Gogs v0.14.3, which applies the one-line fix from PR #8336 (commit 2ebc0e27069deade992219e10a89fbc44bec8bb9) adding `reqToken()` middleware to the org teams route group. … Detailed patch versions, workarounds, and compensating controls in full report.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

CVE-2026-52815 vulnerability details – vuln.today

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