Skip to content
Heist/ feed
Back to feed
Medium

Directus has open redirect in SAML

Type: advisorySources: OSV

Directus is a real-time API and App dashboard for managing SQL database content. Prior to version 11.14.0, an open redirect vulnerability exists in the Directus SAML authentication callback endpoint. During SAML authentication, the `RelayState` parameter is intended to preserve the user's original destination. However, while the login initiation flow validates redirect targets against allowed domains, this validation is not applied to the callback endpoint. This allows an attacker to craft a malicious authentication request that redirects users to an arbitrary external URL upon completion. The vulnerability is present in both the success and error handling paths of the callback. This vulnerability can be exploited without authentication. Version 11.14.0 contains a patch.

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

Source evidence

Directus has open redirect in SAML

core-osv · Original source

Published 8 Jan 2026, 14:32 UTC

Directus is a real-time API and App dashboard for managing SQL database content. Prior to version 11.14.0, an open redirect vulnerability exists in the Directus SAML authentication callback endpoint. During SAML authentication, the `RelayState` parameter is intended to preserve the user's original destination. However, while the login initiation flow validates redirect targets against allowed domains, this validation is not applied to the callback endpoint. This allows an attacker to craft a malicious authentication request that redirects users to an arbitrary external URL upon completion. The vulnerability is present in both the success and error handling paths of the callback. This vulnerability can be exploited without authentication. Version 11.14.0 contains a patch.

osv:CVE-2026-22032
Complete source record
{
  "id": "a74bb49ed20fd0446707731e2d927f111410d2089d67059dd799359218828365",
  "url": "https://osv.dev/vulnerability/CVE-2026-22032",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Directus has open redirect in SAML",
    "summary": "Directus is a real-time API and App dashboard for managing SQL database content. Prior to version 11.14.0, an open redirect vulnerability exists in the Directus SAML authentication callback endpoint. During SAML authentication, the `RelayState` parameter is intended to preserve the user's original destination. However, while the login initiation flow validates redirect targets against allowed domains, this validation is not applied to the callback endpoint. This allows an attacker to craft a malicious authentication request that redirects users to an arbitrary external URL upon completion. The vulnerability is present in both the success and error handling paths of the callback. This vulnerability can be exploited without authentication. Version 11.14.0 contains a patch.",
    "evidence": "osv:CVE-2026-22032",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-22032",
      "aliases": [
        "CVE-2026-22032",
        "GHSA-3573-4c68-g8cc"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/directus/directus",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "9d3faa3ab11c58203d12d323ac549fd0130c1cd6"
                },
                {
                  "fixed": "dad9576ea9362905cc4de8028d3877caff36dc23"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:monospace:directus:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "11.14.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "dad9576ea9362905cc4de8028d3877caff36dc23"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v11.13.4",
            "v11.13.3",
            "v11.13.2",
            "v11.13.1",
            "v11.13.0",
            "v11.12.0",
            "v11.11.0",
            "v11.10.2",
            "v11.10.1",
            "v11.10.0",
            "v11.9.3",
            "v11.9.2",
            "v11.9.1",
            "v11.9.0",
            "v11.8.0",
            "v11.7.2",
            "v11.7.1",
            "v11.7.0",
            "v11.6.1",
            "v11.6.0",
            "v11.5.1",
            "v11.5.0",
            "v11.4.1",
            "v11.4.0",
            "v11.3.5",
            "v11.3.4",
            "v11.3.3",
            "v11.3.2",
            "v11.3.1",
            "v11.3.0",
            "v11.2.2",
            "v11.2.1",
            "v11.2.0",
            "v11.1.2",
            "v11.1.1",
            "v11.1.0",
            "v10.13.2",
            "v11.0.2",
            "v11.0.1",
            "v11.0.0",
            "v10.13.1",
            "v10.13.0",
            "v10.12.1",
            "v10.11.2",
            "10.11.2",
            "v10.11.1",
            "v10.11.0",
            "v10.10.7",
            "v10.10.6",
            "v10.10.5",
            "v10.10.4",
            "v10.10.3",
            "v10.10.2",
            "v10.10.1",
            "v10.10.0",
            "v10.9.3",
            "v10.9.2",
            "v10.9.1",
            "v10.9.0",
            "v10.8.3",
            "v10.8.2",
            "v10.8.1",
            "v10.8.0",
            "v10.7.2",
            "v10.7.1",
            "v10.7.0",
            "v10.6.4",
            "v10.6.3",
            "v10.6.2",
            "v10.6.1",
            "v10.6.0",
            "v10.5.3",
            "v10.5.2",
            "v10.5.1",
            "v10.5.0",
            "v10.4.3",
            "v10.4.2",
            "v10.4.0",
            "v10.3.0",
            "v10.2.1",
            "v10.2.0",
            "v10.1.1",
            "v10.1.0",
            "v10.0.0",
            "v9.26.0",
            "v9.25.2",
            "v9.25.1",
            "v9.25.0",
            "v9.24.0",
            "v9.23.4",
            "v9.23.3",
            "v9.23.2",
            "v9.23.1",
            "v9.23.0",
            "v9.22.4",
            "v9.22.3",
            "v9.22.2",
            "v9.22.1",
            "v9.22.0",
            "v9.21.2",
            "v9.21.1",
            "v9.21.0",
            "v9.20.4",
            "v9.20.3",
            "v9.20.2",
            "v9.20.1",
            "v9.20.0",
            "v9.19.2",
            "v9.19.1",
            "v9.19.0",
            "v9.18.1",
            "v9.18.0",
            "v9.17.4",
            "v9.17.3",
            "v9.17.2",
            "v9.17.1",
            "v9.17.0",
            "v9.16.1",
            "v9.16.0",
            "v9.15.1",
            "v9.15.0",
            "v9.14.5",
            "v9.14.4",
            "v9.14.3",
            "v9.14.2",
            "v9.14.1",
            "v9.13.0",
            "v9.12.2",
            "v9.12.1",
            "v9.12.0",
            "v9.11.1",
            "v9.11.0",
            "v9.10.0",
            "v9.9.1",
            "v9.9.0",
            "v9.8.0",
            "v9.7.1",
            "v9.7.0",
            "v9.6.0",
            "v9.5.2",
            "v9.5.1",
            "v9.5.0",
            "v9.4.3",
            "v9.4.2",
            "v9.4.1",
            "v9.4.0",
            "v9.3.0",
            "v9.2.2",
            "v9.2.1",
            "v9.2.0",
            "v9.1.2",
            "v9.1.1",
            "v9.1.0",
            "v9.0.1",
            "v9.0.0",
            "v9.0.0-rc.101",
            "v9.0.0-rc.100",
            "v9.0.0-rc.99",
            "v9.0.0-rc.98",
            "v9.0.0-rc.97",
            "v9.0.0-rc.96",
            "v9.0.0-rc.95",
            "v9.0.0-rc.94",
            "v9.0.0-rc.93",
            "v9.0.0-rc.92",
            "v9.0.0-rc.91",
            "v9.0.0-rc.90",
            "v9.0.0-rc.89",
            "v9.0.0-rc.88",
            "v9.0.0-rc.87",
            "v9.0.0-rc.86",
            "v9.0.0-rc.85",
            "v9.0.0-rc.84",
            "v9.0.0-rc.83",
            "v9.0.0-rc.82",
            "v9.0.0-rc.81",
            "v9.0.0-rc.80",
            "v9.0.0-rc.79",
            "v9.0.0-rc.78",
            "v9.0.0-rc.77",
            "v9.0.0-rc.76",
            "v9.0.0-rc.75",
            "v9.0.0-rc.74",
            "v9.0.0-rc.73",
            "v9.0.0-rc.72",
            "v9.0.0-rc.71",
            "v9.0.0-rc.70",
            "v9.0.0-rc.69",
            "v9.0.0-rc.68",
            "v9.0.0-rc.67",
            "v9.0.0-rc.66",
            "v9.0.0-rc.65",
            "v9.0.0-rc.64",
            "v9.0.0-rc.63",
            "v9.0.0-rc.62",
            "v9.0.0-rc.61",
            "v9.0.0-rc.60",
            "v9.0.0-rc.59",
            "v9.0.0-rc.58",
            "v9.0.0-rc.57",
            "v9.0.0-rc.56",
            "v9.0.0-rc.55",
            "v9.0.0-rc.54",
            "v9.0.0-rc.53",
            "v9.0.0-rc.52",
            "v9.0.0-rc.51",
            "v9.0.0-rc.50",
            "v9.0.0-rc.49",
            "v9.0.0-rc.48",
            "v9.0.0-rc.47",
            "v9.0.0-rc.46",
            "v9.0.0-rc.45",
            "v9.0.0-rc.44",
            "v9.0.0-rc.43",
            "v9.0.0-rc.42",
            "v9.0.0-rc.41",
            "v9.0.0-rc.40",
            "v9.0.0-rc.39",
            "v9.0.0-rc.38",
            "v9.0.0-rc.37",
            "v9.0.0-rc.36",
            "v9.0.0-rc.35",
            "v9.0.0-rc.34",
            "v9.0.0-rc.33",
            "v9.0.0-rc.32",
            "v9.0.0-rc.31",
            "v9.0.0-rc.30",
            "v9.0.0-rc.29",
            "v9.0.0-rc.28",
            "v9.0.0-rc.27",
            "v9.0.0-rc.25",
            "v9.0.0-rc.26",
            "v9.0.0-rc.24",
            "v9.0.0-rc.23",
            "v9.0.0-rc.22",
            "v9.0.0-rc.21",
            "v9.0.0-rc.20",
            "v9.0.0-rc.19",
            "v9.0.0-rc.18",
            "v9.0.0-rc.17",
            "v9.0.0-rc.15",
            "v9.0.0-rc.14",
            "v9.0.0-rc.13",
            "v9.0.0-rc.12",
            "v9.0.0-rc.11",
            "v9.0.0-rc.10",
            "v9.0.0-rc.9",
            "v9.0.0-rc.8",
            "v9.0.0-rc.7",
            "v9.0.0-rc.6",
            "v9.0.0-rc.5",
            "v9.0.0-rc.4",
            "v9.0.0-rc.3",
            "v9.0.0-rc.2",
            "v9.0.0-rc.1",
            "v9.0.0-rc.0",
            "v9.0.0-beta.14",
            "v9.0.0-beta.13",
            "v9.0.0-beta.12",
            "v9.0.0-beta.11",
            "v9.0.0-beta.10",
            "v9.0.0-beta.9",
            "v9.0.0-beta.8",
            "v9.0.0-beta.7",
            "v9.0.0-beta.5",
            "v9.0.0-beta.4",
            "v9.0.0-beta.3",
            "v9.0.0-beta.2",
            "v9.0.0-beta.1",
            "v9.0.0-beta.0",
            "v9.0.0-alpha.42",
            "v9.0.0-alpha.41",
            "v9.0.0-alpha.40",
            "v9.0.0-alpha.39",
            "v9.0.0-alpha.38",
            "v9.0.0-alpha.37",
            "v9.0.0-alpha.36",
            "v9.0.0-alpha.34",
            "v9.0.0-alpha.33",
            "v9.0.0-alpha.32",
            "v9.0.0-alpha.31",
            "v9.0.0-y.0",
            "v9.0.0-alpha.27",
            "v9.0.0-alpha.26",
            "v9.0.0-alpha.25",
            "v9.0.0-alpha.24",
            "v9.0.0-alpha.23",
            "v9.0.0-alpha.22",
            "v9.0.0-alpha.21",
            "v9.0.0-alpha.20",
            "v9.0.0-alpha.18",
            "v9.0.0-alpha.17",
            "v9.0.0-alpha.16",
            "v9.0.0-alpha.15",
            "v9.0.0-alpha.14",
            "v9.0.0-alpha.10",
            "v9.0.0-alpha.9",
            "v9.0.0-alpha.8",
            "v9.0.0-alpha.7",
            "v9.0.0-alpha.6",
            "v9.0.0-alpha.5",
            "v9.0.0-alpha.4"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-22032.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:28.575148155Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22032.json",
        "https://github.com/directus/directus/security/advisories/GHSA-3573-4c68-g8cc",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-22032",
        "https://github.com/directus/directus/commit/dad9576ea9362905cc4de8028d3877caff36dc23"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-601"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22032.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-22032",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 495425,
  "published_at": "2026-01-08T14:32:06.619+00:00"
}