Skip to content
Heist/ feed
Back to feed
Medium

zrok has reflected XSS in GitHub OAuth callback via unsanitized refreshInterval error rendering

Type: advisorySources: OSV

zrok is software for sharing web services, files, and network resources. Prior to version 2.0.1, the proxyUi template engine uses Go's text/template (which performs no HTML escaping) instead of html/template. The GitHub OAuth callback handlers in both publicProxy and dynamicProxy embed the attacker-controlled refreshInterval query parameter verbatim into an error message when time.ParseDuration fails, and render that error unescaped into HTML. An attacker can deliver a crafted login URL to a victim; after the victim completes the GitHub OAuth flow, the callback page executes arbitrary JavaScript in the OAuth server's origin. Version 2.0.1 patches the issue.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-40302
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 04:22 UTC · Revision 1

Source evidence

zrok has reflected XSS in GitHub OAuth callback via unsanitized refreshInterval error rendering

core-osv · Original source

Published 17 Apr 2026, 20:56 UTC

zrok is software for sharing web services, files, and network resources. Prior to version 2.0.1, the proxyUi template engine uses Go's text/template (which performs no HTML escaping) instead of html/template. The GitHub OAuth callback handlers in both publicProxy and dynamicProxy embed the attacker-controlled refreshInterval query parameter verbatim into an error message when time.ParseDuration fails, and render that error unescaped into HTML. An attacker can deliver a crafted login URL to a victim; after the victim completes the GitHub OAuth flow, the callback page executes arbitrary JavaScript in the OAuth server's origin. Version 2.0.1 patches the issue.

osv:CVE-2026-40302
Complete source record
{
  "id": "6753069fcdfeeb850649cac91116dfc4627378244fd45693431aad3c1293e3e0",
  "url": "https://osv.dev/vulnerability/CVE-2026-40302",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "zrok has reflected XSS in GitHub OAuth callback via unsanitized refreshInterval error rendering",
    "summary": "zrok is software for sharing web services, files, and network resources. Prior to version 2.0.1, the proxyUi template engine uses Go's text/template (which performs no HTML escaping) instead of html/template. The GitHub OAuth callback handlers in both publicProxy and dynamicProxy embed the attacker-controlled refreshInterval query parameter verbatim into an error message when time.ParseDuration fails, and render that error unescaped into HTML. An attacker can deliver a crafted login URL to a victim; after the victim completes the GitHub OAuth flow, the callback page executes arbitrary JavaScript in the OAuth server's origin. Version 2.0.1 patches the issue.",
    "evidence": "osv:CVE-2026-40302",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-40302",
      "aliases": [
        "CVE-2026-40302",
        "GHSA-4fxq-2x3x-6xqx",
        "GO-2026-5118"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/openziti/zrok",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "69b9b8dd6d96be15639338414574aa5003f5f8f2"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.0.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "69b9b8dd6d96be15639338414574aa5003f5f8f2"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v2.0.1"
                  },
                  {
                    "cpe": "cpe:2.3:a:netfoundry:zrok:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.0.1"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.1.11",
            "v2.0.0",
            "v2.0.0-rc9",
            "v2.0.0-rc8",
            "v2.0.0-rc7",
            "v2.0.0-rc6",
            "v2.0.0-rc5",
            "v1.1.10",
            "v1.1.8",
            "v1.1.7",
            "v1.1.6",
            "v1.1.5",
            "v1.1.4",
            "v1.1.3",
            "v1.1.2",
            "v1.1.1",
            "v1.1.0",
            "v1.0.8",
            "v1.0.7",
            "v1.0.6",
            "v1.0.5",
            "v1.0.4",
            "v1.0.3",
            "v1.0.2",
            "v1.0.1",
            "v1.0.0",
            "v0.4.49",
            "v0.4.48",
            "v0.4.47",
            "v0.4.46",
            "v0.4.45",
            "v0.4.44",
            "v0.4.43",
            "v0.4.42",
            "v0.4.41",
            "v0.4.40",
            "v0.4.39",
            "v0.4.38",
            "v0.4.37",
            "v0.4.36",
            "v0.4.35",
            "v0.4.34",
            "v0.4.33",
            "v0.4.32",
            "v0.4.31",
            "v0.4.30",
            "v0.4.29",
            "v0.4.28",
            "v0.4.26",
            "v0.4.27",
            "v0.4.24",
            "v0.4.25",
            "v0.4.23",
            "v0.4.22",
            "v0.4.21",
            "v0.4.20",
            "v0.4.19",
            "v0.4.18",
            "v0.4.17",
            "v0.4.16",
            "v0.4.15",
            "v0.4.14",
            "v0.4.13",
            "v0.4.12",
            "v0.4.11",
            "v0.4.10",
            "v0.4.9",
            "v0.4.8",
            "v0.4.7",
            "v0.4.6",
            "v0.4.5",
            "v0.4.4",
            "v0.4.3",
            "v0.4.2",
            "v0.4.0",
            "v0.3.6",
            "v0.3.5",
            "v0.3.5-rc1",
            "v0.3.4",
            "v0.3.2",
            "v0.3.1",
            "v0.3.0",
            "v0.3.0-rc6",
            "v0.3.0-rc5",
            "v0.3.0-rc4",
            "v0.3.0-rc3",
            "v0.3.0-rc2",
            "v0.3.0-rc1",
            "v0.2.18",
            "v0.2.17",
            "v0.2.16",
            "v0.2.15",
            "v0.2.14",
            "v0.2.13",
            "v0.2.12",
            "v0.2.11",
            "v0.2.10",
            "v0.2.9",
            "v0.2.8",
            "v0.2.7",
            "v0.2.6",
            "v0.2.5",
            "v0.2.4",
            "v0.2.3",
            "v0.2.2",
            "v0.2.1",
            "v0.2.0.4",
            "v0.2.0.3",
            "v0.2.0.2",
            "v0.2.0.1",
            "v0.2.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40302.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:25.892636622Z",
      "provider": "osv",
      "references": [
        "https://github.com/openziti/zrok/releases/tag/v2.0.1",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40302.json",
        "https://github.com/openziti/zrok/security/advisories/GHSA-4fxq-2x3x-6xqx",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-40302"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-116",
          "CWE-79"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40302.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-40302",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 492438,
  "published_at": "2026-04-17T20:56:08.368+00:00"
}