<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-29T05:58:53.195237+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/cve-2026-59765</id>
    <title>CVE-2026-59765 — SSRF via Migration Asset Downloads Bypasses hostmatcher — Reads Internal Files and Cloud Metadata</title>
    <updated>2026-10-29T05:58:53.215388+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Gitea Open Source Git Server</p>
<p>SSRF via Migration Asset Downloads Bypasses hostmatcher — Reads Internal Files and Cloud Metadata</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/cve-2026-59765"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-2wm4-vwp6-v7xc</id>
    <title>GHSA-2wm4-vwp6-v7xc — Gitea: SSRF via Migration Asset Downloads Bypasses hostmatcher — Reads Internal Files and Cloud Metadata</title>
    <updated>2026-10-29T05:58:53.215472+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Go: code.gitea.io/gitea, Go: gitea.dev</p>
<p>### Summary</p>
<p>Gitea has robust SSRF protection via `hostmatcher.NewDialContext()` for webhook and migration clone URLs, which validates resolved IPs at the TCP dial level. However, three code paths use raw `http.Get()` (Go's `DefaultClient`) which completely bypasses this protection, enabling SSRF to internal services and local file read via the `file://` scheme.</p>
<p>### Vulnerable Code</p>
<p>**File: `modules/uri/uri.go` (line 32) -- Core vulnerability**</p>
<p>```go
func Open(uriStr string) (io.ReadCloser, error) {
    u, err := url.Parse(uriStr)
    switch strings.ToLower(u.Scheme) {
    case "http", "https":
        f, err := http.Get(uriStr)   // RAW http.Get -- no hostmatcher filtering
        return f.Body, nil
    case "file":
        return os.Open(u.Path)        // LOCAL FILE READ via file:// scheme
    }
}
```</p>
<p>**Callers in migration path:**
- `services/migrations/gitea_uploader.go:340` -- `uri.Open(*asset.DownloadURL)` for release assets
- `services/migrations/gitea_uploader.go:586` -- `uri.Open(pr.PatchURL)` for PR patches</p>
<p>**File: `services/migrations/dump.go` (lines 312, 453)**</p>
<p>```go
// Line 312 -- release asset download
resp, err := http.Get(*asset.DownloadURL)</p>
<p>// Line 453 -- PR patch download (with self-documenting TODO)
resp, err := http.Get(u) // TODO: This probably needs to use the downloader
```</p>
<p>**File: `routers/web/auth/oauth.go` (line 306)**</p>
<p>```go
func oauth2UpdateAvatarIfNeed(ctx *context.Context, url string, u *user_model.User) {
    resp, err := http.Get(url)…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-2wm4-vwp6-v7xc"/>
  </entry>
</feed>
