{"items":[{"id":"NVI-00013055","kind":"vulnerability","title":"Gitea: Blind SSRF in OAuth2 avatar synchronization via unvalidated OIDC picture claim","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-x77v-q46j-393g","CVE-2026-23603"],"plain_summary":"GitHub lists this reviewed advisory for code.gitea.io/gitea. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-4b4926e0ec8b7e4ccf65105a61367851"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-04T12:10:25.000Z","value":"3.1 low","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-4b4926e0ec8b7e4ccf65105a61367851"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-4b4926e0ec8b7e4ccf65105a61367851","url":"https://github.com/advisories/GHSA-x77v-q46j-393g","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-x77v-q46j-393g","publisher":"GitHub Advisory Database","observed_at":"2026-11-01T01:39:10.636Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-4b4926e0ec8b7e4ccf65105a61367851"],"technology":"code.gitea.io/gitea","known_exclusions":[],"conditions_summary":"### Summary\nWhen `[oauth2_client] UPDATE_AVATAR = true` is enabled, Gitea fetches the avatar URL received from an OAuth2/OIDC provider using Go's default HTTP client. The URL comes from the user's OAuth/OIDC avatar value, commonly the OIDC `picture` claim.\n\nThe affected code path calls `http.Get(url)` without applying outbound host or IP restrictions. A low-privileged user who can influence their own `picture` claim under an already-configured OAuth2/OIDC source can cause the Gitea server to make arbitrary outbound HTTP GET requests. This includes requests to loopback addresses, RFC 1918 private network addresses, and IPv4 link-local addresses such as `169.254.169.254`.\n\nThis is a blind SSRF by default. Impact can increase in deployments where the Gitea host can reach cloud metadata services, localhost-only services, or internal services that return valid image data.\n\n### Details\nThe vulnerable sink is in `routers/web/auth/oauth.go`:\n\n```go\nfunc oauth2UpdateAvatarIfNeed(ctx *context.Context, url string, u *user_model.User) {\n    if setting.OAuth2Client.UpdateAvatar && len(url) > 0 {\n        resp, err := http.Get(url)\n        if err == nil {\n            defer func() { _ = resp.Body.","public_affected_ranges":["< 1.27.0"]}],"null_published_at":"2026-11-01T07:29:12.913Z","source_updated_at":"2026-10-04T12:10:25.000Z","source_disclosed_at":"2026-07-21T20:22:23.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-01T01:39:10.636Z"}],"next_cursor":null,"snapshot_revision":"42594"}