Skip to content
Heist/ feed
Back to feed
Medium

Cloudreve: SSRF guard bypass: checkIP does not decode IPv6-transition wrappers (NAT64, IPv4-compatible, 6to4) reaching internal and cloud-metadata addresses

Type: advisorySources: OSV

Cloudreve is a self-hosted file management and sharing system. Prior to 4.18.0, the ValidateExternalURL server-side request forgery guard in pkg/request/ssrf.go passes resolved addresses to checkIP without decoding NAT64, IPv4-compatible, and 6to4 IPv4-in-IPv6 transition forms. An authenticated user with remote-download access can provide SrcUri through RemoteDownloadTask.createDownloadTask so a wrapper embedding a loopback, private, link-local, or cloud metadata IPv4 address is classified as public and fetched, exposing internal service responses and cloud instance credentials. IPv4-mapped IPv6 addresses remain blocked because Go converts that form with net.IP.To4. This issue is fixed in version 4.18.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-79913
Confirmed fixed CVEs
Not specified
Updated in this feed
8 Nov 2026, 02:13 UTC · Revision 1

Source evidence

Cloudreve: SSRF guard bypass: checkIP does not decode IPv6-transition wrappers (NAT64, IPv4-compatible, 6to4) reaching internal and cloud-metadata addresses

core-osv · Original source

Published 22 Sept 2026, 15:24 UTC

Cloudreve is a self-hosted file management and sharing system. Prior to 4.18.0, the ValidateExternalURL server-side request forgery guard in pkg/request/ssrf.go passes resolved addresses to checkIP without decoding NAT64, IPv4-compatible, and 6to4 IPv4-in-IPv6 transition forms. An authenticated user with remote-download access can provide SrcUri through RemoteDownloadTask.createDownloadTask so a wrapper embedding a loopback, private, link-local, or cloud metadata IPv4 address is classified as public and fetched, exposing internal service responses and cloud instance credentials. IPv4-mapped IPv6 addresses remain blocked because Go converts that form with net.IP.To4. This issue is fixed in version 4.18.0.

osv:CVE-2026-79913
Complete source record
{
  "id": "a989207df4f1e33c3e486c58b2f2d6929906cbef653999af27ad52d6b5909ff7",
  "url": "https://osv.dev/vulnerability/CVE-2026-79913",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Cloudreve: SSRF guard bypass: checkIP does not decode IPv6-transition wrappers (NAT64, IPv4-compatible, 6to4) reaching internal and cloud-metadata addresses",
    "summary": "Cloudreve is a self-hosted file management and sharing system. Prior to 4.18.0, the ValidateExternalURL server-side request forgery guard in pkg/request/ssrf.go passes resolved addresses to checkIP without decoding NAT64, IPv4-compatible, and 6to4 IPv4-in-IPv6 transition forms. An authenticated user with remote-download access can provide SrcUri through RemoteDownloadTask.createDownloadTask so a wrapper embedding a loopback, private, link-local, or cloud metadata IPv4 address is classified as public and fetched, exposing internal service responses and cloud instance credentials. IPv4-mapped IPv6 addresses remain blocked because Go converts that form with net.IP.To4. This issue is fixed in version 4.18.0.",
    "evidence": "osv:CVE-2026-79913",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-79913",
      "aliases": [
        "CVE-2026-79913",
        "GHSA-jvh5-97xg-v99f",
        "GO-2026-6572"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/cloudreve/cloudreve",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "0bb0ab833571d380153edd3529e01a7957b8b4ce"
                },
                {
                  "fixed": "1c5cad6dec7ec3037c6479e3a26a3909995d16a2"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "4.18.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "1c5cad6dec7ec3037c6479e3a26a3909995d16a2"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "0bb0ab833571d380153edd3529e01a7957b8b4ce"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "4.18.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "4.17.0",
            "4.16.1",
            "4.16.0",
            "4.15.0",
            "4.14.1",
            "4.14.0",
            "4.13.0",
            "4.12.1",
            "4.12.0",
            "4.11.1",
            "4.11.0",
            "4.10.1",
            "4.10.0",
            "4.9.2",
            "4.9.1",
            "4.9.0",
            "4.8.0",
            "4.7.0",
            "4.6.0",
            "4.5.1",
            "4.5.0",
            "4.4.1",
            "4.4.0",
            "4.3.0",
            "4.2.0",
            "4.1.3",
            "4.1.2",
            "4.1.1",
            "4.1.0",
            "4.0.0",
            "4.0.0-beta.14",
            "4.0.0-beta.13",
            "4.0.0-beta.12",
            "4.0.0-beta.11",
            "4.0.0-beta.10",
            "4.0.0-beta.9",
            "4.0.0-beta.8",
            "4.0.0-beta.7",
            "4.0.0-beta.6",
            "3.8.3",
            "3.8.2",
            "3.8.1",
            "3.8.0",
            "3.8.0-beta1",
            "3.7.1",
            "3.7.0",
            "3.6.2",
            "3.6.1",
            "3.6.0",
            "3.6.0-beta1",
            "3.5.3",
            "3.5.2",
            "3.5.1",
            "3.5.0",
            "3.5.0-beta.3",
            "3.5.0-beta2",
            "3.5.0-beta1",
            "3.4.2",
            "3.4.1",
            "3.4.0",
            "3.4.0-beta1",
            "3.3.2",
            "3.3.1",
            "3.3.0",
            "3.2.1",
            "3.2.0",
            "3.1.1",
            "3.1.0",
            "3.0.0",
            "3.0.0-rc1",
            "3.0.0-beta3",
            "3.0.0-beta2",
            "3.0.0-beta1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-79913.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:52.983425754Z",
      "provider": "osv",
      "references": [
        "https://github.com/cloudreve/cloudreve/releases/tag/4.18.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/79xxx/CVE-2026-79913.json",
        "https://github.com/cloudreve/cloudreve/security/advisories/GHSA-jvh5-97xg-v99f",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-79913",
        "https://github.com/cloudreve/cloudreve/commit/1c5cad6dec7ec3037c6479e3a26a3909995d16a2"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-697",
          "CWE-918"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/79xxx/CVE-2026-79913.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-79913",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 521678,
  "published_at": "2026-09-22T15:24:33.456+00:00"
}