Skip to content
Heist/ feed
Back to feed
High

one-api through 0.6.10 Missing Authorization on URL-Parameter Channel Pinning

Type: advisorySources: OSV

one-api gates one of its two channel-pinning paths and not the other. middleware/auth.go permits a request to name a specific channel either through a suffix on the API key or through a URL path parameter. The suffix path is reached only after model.IsAdmin succeeds and otherwise rejects the caller, while the path-parameter branch sets the selected-channel value from c.Param("channelid") with no role check at all. The route carrying that parameter sits behind token authentication only, so any account holding a valid API token reaches it. The value flows to the distributor, which loads the channel by integer identifier with no scoping to the caller's user or group, and then sets the outbound Authorization header to that channel's stored key and directs the request at the channel's base URL. A low-privilege account can therefore pin any channel by incrementing an identifier, causing the server to make upstream requests bearing an operator-configured provider key the account was never granted, and bypassing both the per-group restriction and the channel's model allowlist.

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

Source evidence

one-api through 0.6.10 Missing Authorization on URL-Parameter Channel Pinning

core-osv · Original source

Published 26 Aug 2026, 15:44 UTC

one-api gates one of its two channel-pinning paths and not the other. middleware/auth.go permits a request to name a specific channel either through a suffix on the API key or through a URL path parameter. The suffix path is reached only after model.IsAdmin succeeds and otherwise rejects the caller, while the path-parameter branch sets the selected-channel value from c.Param("channelid") with no role check at all. The route carrying that parameter sits behind token authentication only, so any account holding a valid API token reaches it. The value flows to the distributor, which loads the channel by integer identifier with no scoping to the caller's user or group, and then sets the outbound Authorization header to that channel's stored key and directs the request at the channel's base URL. A low-privilege account can therefore pin any channel by incrementing an identifier, causing the server to make upstream requests bearing an operator-configured provider key the account was never granted, and bypassing both the per-group restriction and the channel's model allowlist.

osv:CVE-2026-81027
Complete source record
{
  "id": "5f9e8185a0a88f8cac50f728bfc0ac8d0fe0e1688500218b6b5f78f7154fa44d",
  "url": "https://osv.dev/vulnerability/CVE-2026-81027",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "one-api through 0.6.10 Missing Authorization on URL-Parameter Channel Pinning",
    "summary": "one-api gates one of its two channel-pinning paths and not the other. middleware/auth.go permits a request to name a specific channel either through a suffix on the API key or through a URL path parameter. The suffix path is reached only after model.IsAdmin succeeds and otherwise rejects the caller, while the path-parameter branch sets the selected-channel value from c.Param(\"channelid\") with no role check at all. The route carrying that parameter sits behind token authentication only, so any account holding a valid API token reaches it. The value flows to the distributor, which loads the channel by integer identifier with no scoping to the caller's user or group, and then sets the outbound Authorization header to that channel's stored key and directs the request at the channel's base URL. A low-privilege account can therefore pin any channel by incrementing an identifier, causing the server to make upstream requests bearing an operator-configured provider key the account was never granted, and bypassing both the per-group restriction and the channel's model allowlist.",
    "evidence": "osv:CVE-2026-81027",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-81027",
      "aliases": [
        "CVE-2026-81027"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/songquanpeng/one-api",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "last_affected": "3915ce9814b8261a1ab13ed93adec58b463cd75c"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "last_affected": "0.6.10"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.6.10",
            "v0.6.10-alpha.1",
            "v0.6.10-alpha",
            "v0.6.9",
            "v0.6.10-alpha.6",
            "v0.6.10-alpha.5",
            "v0.6.10-alpha.4",
            "v0.6.10-alpha.3",
            "v0.6.10-alpha.2",
            "v0.6.9-alpha.2",
            "v0.6.9-alpha.1",
            "v0.6.9-alpha",
            "v0.6.8-alpha.6",
            "v0.6.8",
            "v0.6.8-alpha.5",
            "v0.6.8-alpha.4",
            "v0.6.8-alpha.3",
            "v0.6.8-alpha.2",
            "v0.6.8-alpha.1",
            "v0.6.8-alpha",
            "v0.6.7-alpha.9",
            "v0.6.7",
            "v0.6.7-alpha.8",
            "v0.6.7-alpha.7",
            "v0.6.7-alpha.6",
            "v0.6.7-alpha.5",
            "v0.6.7-alpha.4",
            "v0.6.7-alpha.3",
            "v0.6.7-alpha.2",
            "v0.6.7-alpha.1",
            "v0.6.7-alpha",
            "v0.6.6-alpha.15",
            "v0.6.6",
            "v0.6.6-alpha.14",
            "v0.6.6-alpha.13",
            "v0.6.6-alpha.12",
            "v0.6.6-alpha.11",
            "v0.6.6-alpha.10",
            "v0.6.6-alpha.9",
            "v0.6.6-alpha.8",
            "v0.6.6-alpha.7",
            "v0.6.6-alpha.6",
            "v0.6.6-alpha.5",
            "v0.6.6-alpha.4",
            "v0.6.6-alpha.3",
            "v0.6.6-alpha.2",
            "v0.6.6-alpha.1",
            "v0.6.6-alpha",
            "v0.6.5",
            "v0.6.5-alpha.18",
            "v0.6.5-alpha.17",
            "v0.6.5-alpha.16",
            "v0.6.5-alpha.15",
            "v0.6.5-alpha.14",
            "v0.6.5-alpha.13",
            "v0.6.5-alpha.12",
            "v0.6.5-alpha.11",
            "v0.6.5-alpha.10",
            "v0.6.5-alpha.9",
            "v0.6.5-alpha.8",
            "v0.6.5-alpha.7",
            "v0.6.5-alpha.6",
            "v0.6.5-alpha.5",
            "v0.6.5-alpha.4",
            "v0.6.5-alpha.3",
            "v0.6.5-alpha.2",
            "v0.6.5-alpha.1",
            "v0.6.5-alpha",
            "v0.6.4-alpha.2",
            "v0.6.4",
            "v0.6.4-alpha.1",
            "v0.6.4-alpha",
            "v0.6.3",
            "v0.6.3-alpha.2",
            "v0.6.3-alpha.1",
            "v0.6.3-alpha",
            "v0.6.2",
            "v0.6.2-alpha.16",
            "v0.6.2-alpha.15",
            "v0.6.2-alpha.14",
            "v0.6.2-alpha.13",
            "v0.6.2-alpha.12",
            "v0.6.2-alpha.11",
            "v0.6.2-alpha.10",
            "v0.6.2-alpha.9",
            "v0.6.2-alpha.8",
            "v0.6.2-alpha.7",
            "v0.6.2-alpha.6",
            "v0.6.2-alpha.5",
            "v0.6.2-alpha.4",
            "v0.6.2-alpha.3",
            "v0.6.2-alpha.2",
            "v0.6.2-alpha.1",
            "v0.6.2-alpha",
            "v0.6.1-alpha.5",
            "v0.6.1",
            "v0.6.1-alpha.4",
            "v0.6.1-alpha.3",
            "v0.6.1-alpha.2",
            "v0.6.1-alpha.1",
            "v0.6.1-alpha",
            "v0.6.0-alpha.5",
            "v0.6.0",
            "v0.6.0-alpha.4",
            "v0.6.0-alpha.3",
            "v0.6.0-alpha.2",
            "v0.6.0-alpha.1",
            "v0.6.0-alpha",
            "v0.5.12-alpha.3",
            "v0.5.12-alpha.2",
            "v0.5.12-alpha.1",
            "v0.5.12-alpha",
            "v0.5.11",
            "v0.5.11-alpha.9",
            "v0.5.11-alpha.8",
            "v0.5.11-alpha.7",
            "v0.5.11-alpha.6",
            "v0.5.11-alpha.5",
            "v0.5.11-alpha.4",
            "v0.5.11-alpha.3",
            "v0.5.11-alpha.2",
            "v0.5.11-alpha.1",
            "v0.5.11-alpha",
            "v0.5.10-alpha.6",
            "v0.5.10",
            "v0.5.10-alpha.5",
            "v0.5.10-alpha.4",
            "v0.5.10-alpha.3",
            "v0.5.10-alpha.2",
            "v0.5.10-alpha.1",
            "v0.5.10-alpha",
            "v0.5.9",
            "v0.5.9-alpha.2",
            "v0.5.9-alpha.1",
            "v0.5.9-alpha",
            "v0.5.8-alpha.4",
            "v0.5.8",
            "v0.5.8-alpha.3",
            "v0.5.8-alpha.2",
            "v0.5.8-alpha.1",
            "v0.5.8-alpha",
            "v0.5.7",
            "v0.5.7-alpha.7",
            "v0.5.7-alpha.6",
            "v0.5.7-alpha.5",
            "v0.5.7-alpha.4",
            "v0.5.7-alpha.3",
            "v0.5.7-alpha.2",
            "v0.5.7-alpha.1",
            "v0.5.7-alpha",
            "v0.5.6",
            "v0.5.6-alpha.11",
            "v0.5.6-alpha.10",
            "v0.5.6-alpha.9",
            "v0.5.6-alpha.8",
            "v0.5.6-alpha.7",
            "v0.5.6-alpha.6",
            "v0.5.6-alpha.5",
            "v0.5.6-alpha.4",
            "v0.5.6-alpha.3",
            "v0.5.6-alpha.2",
            "v0.5.6-alpha.1",
            "v0.5.6-alpha",
            "v0.5.5",
            "v0.5.5-alpha.9",
            "v0.5.5-alpha.8",
            "v0.5.5-alpha.7",
            "v0.5.5-alpha.6",
            "v0.5.5-alpha.5",
            "v0.5.5-alpha.4",
            "v0.5.5-alpha.3",
            "v0.5.5-alpha.2",
            "v0.5.5-alpha.1",
            "v0.5.5-alpha",
            "v0.5.4-alpha.4",
            "v0.5.4",
            "v0.5.4-alpha.3",
            "v0.5.4-alpha.2",
            "v0.5.4-alpha.1",
            "v0.5.4-alpha",
            "v0.5.3",
            "v0.5.3-alpha.10",
            "v0.5.2-alpha.10",
            "v0.5.3-alpha.9",
            "v0.5.3-alpha.8",
            "v0.5.3-alpha.7",
            "v0.5.3-alpha.6",
            "v0.5.3-alpha.5",
            "v0.5.3-alpha.4",
            "v0.5.3-alpha.3",
            "v0.5.3-alpha.2",
            "v0.5.3-alpha.1",
            "v0.5.3-alpha",
            "v0.5.2-alpha.9",
            "v0.5.2",
            "v0.5.2-alpha.8",
            "v0.5.2-alpha.7",
            "v0.5.2-alpha.6",
            "v0.5.2-alpha.5",
            "v0.5.2-alpha.4",
            "v0.5.1-alpha.5",
            "v0.5.2-alpha.3",
            "v0.5.2-alpha.2",
            "v0.5.2-alpha.1",
            "v0.5.2-alpha",
            "v0.5.1",
            "v0.5.1-alpha.4",
            "v0.5.1-alpha.3",
            "v0.5.1-alpha.2",
            "v0.5.1-alpha.1",
            "v0.5.1-alpha",
            "v0.5.0",
            "v0.5.0-alpha.6",
            "v0.5.0-alpha.5",
            "v0.5.0-alpha.4",
            "v0.5.0-alpha.3",
            "v0.5.0-alpha.2",
            "v0.5.0-alpha.1",
            "v0.5.0-alpha",
            "v0.4.10-alpha.9",
            "v0.4.10-alpha.8",
            "v0.4.10-alpha.7",
            "v0.4.10-alpha.6",
            "v0.4.10-alpha.5",
            "v0.4.10-alpha.4",
            "v0.4.10-alpha.3",
            "v0.4.10-alpha.2",
            "v0.4.10-alpha.1",
            "v0.4.10-alpha",
            "v0.4.9",
            "v0.4.9-alpha.6",
            "v0.4.9-alpha.5",
            "v0.4.9-alpha.4",
            "v0.4.9-alpha.3",
            "v0.4.9-alpha.2",
            "v0.4.9-alpha.1",
            "v0.4.9-alpha",
            "v0.4.8-alpha.4",
            "v0.4.8",
            "v0.4.8-alpha.3",
            "v0.4.8-alpha.2",
            "v0.4.8-alpha.1",
            "v0.4.8-alpha",
            "v0.4.7",
            "v0.4.7-alpha.7",
            "v0.4.7-alpha.6",
            "v0.4.7-alpha.5",
            "v0.4.7-alpha.4",
            "v0.4.7-alpha.3",
            "v0.4.7-alpha.2",
            "v0.4.7-alpha.1",
            "v0.4.7-alpha",
            "v0.4.6",
            "v0.4.5-alpha.18",
            "v0.4.5-alpha.17",
            "v0.4.5-alpha.16",
            "v0.4.5-alpha.15",
            "v0.4.5-alpha.14",
            "v0.4.5-alpha.13",
            "v0.4.5-alpha.12",
            "v0.4.5-alpha.11",
            "v0.4.5-alpha.10",
            "v0.4.5-alpha.9",
            "v0.4.5-alpha.8",
            "v0.4.5-alpha.7",
            "v0.4.5-alpha.6",
            "v0.4.5-alpha.5",
            "v0.4.5",
            "v0.4.5-alpha.4",
            "v0.4.5-alpha.3",
            "v0.4.5-alpha.2",
            "v0.4.5-alpha.1",
            "v0.4.5-alpha",
            "v0.4.4",
            "v0.4.4-alpha.2",
            "v0.4.4-alpha.1",
            "v0.4.4-alpha",
            "v0.4.3",
            "v0.4.3-alpha.3",
            "v0.4.3-alpha.2",
            "v0.4.3-alpha.1",
            "v0.4.3-alpha",
            "v0.4.2",
            "v0.4.2-alpha",
            "v0.4.1",
            "v0.4.1-alpha.3",
            "v0.4.1-alpha.2",
            "v0.4.1-alpha.1",
            "v0.4.1-alpha",
            "v0.4.0",
            "v0.4.0-alpha.1",
            "v0.4.0-alpha",
            "v0.3.4",
            "v0.3.4-alpha.3",
            "v0.3.4-alpha.2",
            "v0.3.4-alpha.1",
            "v0.3.4-alpha",
            "v0.3.3-alpha.5",
            "v0.3.3-alpha.4",
            "v0.3.3-alpha.3",
            "v0.3.3",
            "v0.3.3-alpha.2",
            "v0.3.3-alpha.1",
            "v0.3.3-alpha",
            "v0.3.2",
            "v0.3.2-alpha.2",
            "v0.3.2-alpha.1",
            "v0.3.2-alpha",
            "v0.3.1",
            "v0.3.1-alpha.2",
            "v0.3.1-alpha.1",
            "v0.3.1-alpha",
            "v0.3.0",
            "v0.3.0-alpha.4",
            "v0.3.0-alpha.3",
            "v0.3.0-alpha.2",
            "v0.3.0-alpha.1",
            "v0.3.0-alpha",
            "v0.2.6",
            "v0.2.6-alpha.4",
            "v0.2.6-alpha.3",
            "v0.2.6-alpha.2",
            "v0.2.6-alpha.1",
            "v0.2.6-alpha",
            "v0.2.5",
            "v0.2.5-alpha.1",
            "v0.2.5-alpha",
            "v0.2.4",
            "v0.2.4-alpha.4",
            "v0.2.4-alpha.3",
            "v0.2.4-alpha.2",
            "v0.2.4-alpha.1",
            "v0.2.4-alpha",
            "v0.2.3",
            "v0.2.3-alpha.1",
            "v0.2.3-alpha",
            "v0.2.2",
            "v0.2.2-alpha",
            "v0.2.1",
            "v0.2.1-alpha",
            "v0.2.0",
            "v0.2.0-alpha",
            "v0.1.6-alpha.3",
            "v0.1.6-alpha.2",
            "v0.1.6-alpha.1",
            "v0.1.6-alpha",
            "v0.1.5",
            "v0.1.4",
            "v0.1.4-alpha",
            "v0.1.3",
            "v0.1.2",
            "v0.1.2-alpha.2",
            "v0.1.2-alpha.1",
            "v0.1.2-alpha",
            "v0.1.1",
            "v0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-81027.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:24.956095651Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/81xxx/CVE-2026-81027.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-81027",
        "https://www.vulncheck.com/advisories/one-api-through-0.6.10-missing-authorization-on-url-parameter-channel-pinning",
        "https://github.com/songquanpeng/one-api/issues/2410",
        "https://github.com/songquanpeng/one-api",
        "https://github.com/songquanpeng/one-api/blob/v0.6.10/middleware/auth.go"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-862"
        ],
        "cna_assigner": "VulnCheck",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/81xxx/CVE-2026-81027.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-81027",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 491517,
  "published_at": "2026-08-26T15:44:56.599+00:00"
}