Skip to content
Heist/ feed
Back to feed
High

Omni: TOCTOU race condition allows multiple concurrent uses of a single-use SAML session token

Type: advisorySources: OSV

Omni manages Kubernetes on bare metal, virtual machines, or in a cloud. Prior to 1.6.6 and from 1.7.0 until 1.7.3, SAML.getSession in internal/pkg/auth/interceptor/saml.go checks SAMLAssertion.Used and marks it used in separate state operations. Concurrent requests carrying the same captured saml-session token can each observe the assertion as unused and obtain authentication as the victim before either update is visible. The attacker can invoke SAML-protected gRPC endpoints, use ConfirmPublicKey to create multiple persistent credentials tied to the victim, and generate audit entries attributed to the victim, with the resulting access potentially affecting confidentiality, integrity, and availability according to the victim's privileges. This issue is fixed in versions 1.6.6 and 1.7.3.

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

Source evidence

Omni: TOCTOU race condition allows multiple concurrent uses of a single-use SAML session token

core-osv · Original source

Published 17 Sept 2026, 19:40 UTC

Omni manages Kubernetes on bare metal, virtual machines, or in a cloud. Prior to 1.6.6 and from 1.7.0 until 1.7.3, SAML.getSession in internal/pkg/auth/interceptor/saml.go checks SAMLAssertion.Used and marks it used in separate state operations. Concurrent requests carrying the same captured saml-session token can each observe the assertion as unused and obtain authentication as the victim before either update is visible. The attacker can invoke SAML-protected gRPC endpoints, use ConfirmPublicKey to create multiple persistent credentials tied to the victim, and generate audit entries attributed to the victim, with the resulting access potentially affecting confidentiality, integrity, and availability according to the victim's privileges. This issue is fixed in versions 1.6.6 and 1.7.3.

osv:CVE-2026-45720
Complete source record
{
  "id": "4c92f8eaa15ead4603d76f2f911b67c25a3dffa7c9bc2d1f658f20660cdd0cc4",
  "url": "https://osv.dev/vulnerability/CVE-2026-45720",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Omni: TOCTOU race condition allows multiple concurrent uses of a single-use SAML session token",
    "summary": "Omni manages Kubernetes on bare metal, virtual machines, or in a cloud. Prior to 1.6.6 and from 1.7.0 until 1.7.3, SAML.getSession in internal/pkg/auth/interceptor/saml.go checks SAMLAssertion.Used and marks it used in separate state operations. Concurrent requests carrying the same captured saml-session token can each observe the assertion as unused and obtain authentication as the victim before either update is visible. The attacker can invoke SAML-protected gRPC endpoints, use ConfirmPublicKey to create multiple persistent credentials tied to the victim, and generate audit entries attributed to the victim, with the resulting access potentially affecting confidentiality, integrity, and availability according to the victim's privileges. This issue is fixed in versions 1.6.6 and 1.7.3.",
    "evidence": "osv:CVE-2026-45720",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-45720",
      "aliases": [
        "CVE-2026-45720",
        "GHSA-5x9f-6vg5-qg4m",
        "GO-2026-5160"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/siderolabs/omni",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "9769f9442e302e000401e351ffd6d6fb3671a5bf"
                },
                {
                  "introduced": "5e912b14ddad86d13d9c004a9774a875e9cee108"
                },
                {
                  "fixed": "e70a16e4a226aa2f98643dbed6664edc1a5e90e7"
                },
                {
                  "fixed": "272d3f4dd00e778b39fde09afde35575fe13ef13"
                },
                {
                  "fixed": "4c4c1e2d8226914f26774a309a91595f168ee921"
                },
                {
                  "fixed": "ced79da6c032d2103803eb53343d0916cc957d2a"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "1.6.6"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "1.7.0"
                      },
                      {
                        "fixed": "1.7.3"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "272d3f4dd00e778b39fde09afde35575fe13ef13"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "4c4c1e2d8226914f26774a309a91595f168ee921"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ced79da6c032d2103803eb53343d0916cc957d2a"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "9769f9442e302e000401e351ffd6d6fb3671a5bf"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v1.6.6"
                  },
                  {
                    "range": [
                      {
                        "fixed": "e70a16e4a226aa2f98643dbed6664edc1a5e90e7"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v1.7.3"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v1.6.5",
            "client/v1.6.5",
            "v1.7.2",
            "client/v1.7.2",
            "v1.7.1",
            "client/v1.7.1",
            "v1.7.0",
            "client/v1.7.0",
            "v1.7.0-beta.0",
            "client/v1.7.0-beta.0",
            "v1.6.4",
            "client/v1.6.4",
            "v1.6.3",
            "client/v1.6.3",
            "v1.6.2",
            "client/v1.6.2",
            "v1.6.1",
            "client/v1.6.1",
            "v1.6.0",
            "client/v1.6.0",
            "v1.6.0-beta.3",
            "client/v1.6.0-beta.3",
            "v1.6.0-beta.2",
            "client/v1.6.0-beta.2",
            "v1.6.0-beta.1",
            "client/v1.6.0-beta.1",
            "v1.6.0-beta.0",
            "client/v1.6.0-beta.0",
            "v1.5.0-beta.2",
            "client/v1.5.0-beta.2",
            "v1.5.0-beta.1",
            "client/v1.5.0-beta.1",
            "v1.5.0-beta.0",
            "v1.4.0-beta.1",
            "client/v1.4.0-beta.1",
            "v1.4.0-beta.0",
            "client/v1.4.0-beta.0",
            "v1.3.0-beta.1",
            "client/v1.3.0-beta.1",
            "v1.2.0-beta.3",
            "client/v1.2.0-beta.3",
            "v1.2.0-beta.2",
            "client/v1.2.0-beta.2",
            "v1.2.0-beta.1",
            "client/v1.2.0-beta.1",
            "v1.2.0-beta.0",
            "client/v1.2.0-beta.0",
            "v1.1.0-beta.0",
            "v1.0.0-beta.1",
            "v1.0.0-beta.0",
            "v0.52.0-beta.0",
            "v0.51.0-beta.2",
            "v0.51.0-beta.1",
            "client/v0.51.0-beta.1",
            "v0.51.0-beta.0",
            "client/v0.51.0-beta.0",
            "v0.50.0-beta.0",
            "v0.49.0-beta.0",
            "v0.48.0-beta.0",
            "client/v0.48.0-beta.0",
            "v0.47.0-beta.1",
            "v0.47.0-beta.0",
            "v0.46.0-beta.0",
            "v0.45.0-beta.0",
            "v0.44.0-beta.0",
            "v0.43.0",
            "v0.43.0-beta.0",
            "v0.42.0-beta.0",
            "v0.41.0-beta.0",
            "v0.40.0-beta.0",
            "v0.39.0-beta.0",
            "v0.38.0-beta.0",
            "v0.37.0-beta.0",
            "v0.36.0-beta.0",
            "v0.35.0-beta.0",
            "v0.34.0-beta.0",
            "v0.33.0-beta.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-45720.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:26.189696703Z",
      "provider": "osv",
      "references": [
        "https://github.com/siderolabs/omni/releases/tag/v1.6.6",
        "https://github.com/siderolabs/omni/releases/tag/v1.7.3",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45720.json",
        "https://github.com/siderolabs/omni/security/advisories/GHSA-5x9f-6vg5-qg4m",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-45720",
        "https://github.com/siderolabs/omni/commit/272d3f4dd00e778b39fde09afde35575fe13ef13",
        "https://github.com/siderolabs/omni/commit/4c4c1e2d8226914f26774a309a91595f168ee921",
        "https://github.com/siderolabs/omni/commit/ced79da6c032d2103803eb53343d0916cc957d2a",
        "https://github.com/siderolabs/omni/pull/2816"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-294",
          "CWE-367"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45720.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-45720",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 492931,
  "published_at": "2026-09-17T19:40:57.112+00:00"
}