CVE-2026-46491: Simplesamlphp/simplesamlphp module casserver Path Traversal Vulnerability

HIGH
Advisory Identifier: GHSA-jrrg-99xh-5j2q
CVSS 8.6
CWE-22
Published
Advisory Summary

CVE-2026-46491 is a HIGH (CVSS 8.6) path traversal vulnerability (CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')) affecting Simplesamlphp/simplesamlphp module casserver libraries in the Packagist ecosystem. The issue involves simplesamlphp casserver filesystemticketstore path traversal allows out-of-ticket-directory read/unserialize and conditional deletion. Remediation is available by upgrading affected packages to version 7.0.3.

CVE-2026-46491 at a Glance

CVE Identifier CVE-2026-46491
GHSA Identifier GHSA-jrrg-99xh-5j2q
Severity HIGH
CVSS v3.1 Base Score 8.6
CWE Classification CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Affected Product Simplesamlphp/simplesamlphp module casserver
Package Ecosystem Packagist
Published Date
Last Updated

Security Impact

CVSS: 8.6

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality Low (C:L)
Integrity High (I:H)
Availability Low (A:L)

How to Fix CVE-2026-46491

To remediate this vulnerability, upgrade all affected Simplesamlphp/simplesamlphp module casserver dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

simplesamlphp/simplesamlphp-module-casserver fixed: 7.0.3
Upgrade simplesamlphp/simplesamlphp-module-casserver to 7.0.3
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for simplesamlphp/simplesamlphp-module-casserver

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-46491, inspect your project dependencies for Simplesamlphp/simplesamlphp module casserver:

inspect dependencies for simplesamlphp/simplesamlphp-module-casserver

Analyze the terminal output to locate any version of Simplesamlphp/simplesamlphp module casserver in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 7.0.3), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'), where the product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory. In Simplesamlphp/simplesamlphp module casserver, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

## Summary `simplesamlphp-module-casserver` builds file paths for the file-based CAS ticket store by directly concatenating the configured ticket directory with an attacker-controlled ticket identifier. Public CAS validation/proxy endpoints pass attacker-controlled `ticket` / `pgt` query parameters into this store. In deployments using `FileSystemTicketStore`, a remote attacker can use path traversal sequences such as `../target.serialized` to make the CAS server read and unserialize files outside the ticket directory. In the CAS 1.0 validation flow, the same attacker-selected path is also passed to `deleteTicket()` immediately after `getTicket()` returns, which can delete the target file when it is readable by the PHP process, deletable under the PHP process filesystem permissions, and unserializes to a value compatible with the `?array` return type. ### Preconditions The demonstrated issue requires: - the `casserver` module to be enabled; - the file-based ticket store to be configured (`FileSystemTicketStore`); - public CAS validation/proxy endpoints to be reachable; - the PHP process to have filesystem permissions for the target path. - for the demonstrated CAS 1.0 deletion impact, `getTicket()` must return without throwing; practically, the target file must contain serialized PHP data that unserializes to a value compatible with the `?array` return type, such as an array or null. Full CAS semantic validation is not required for deletion in CAS 1.0 because `deleteTicket($ticket)` is called immediately after `getTicket($ticket)`. The attacker does not need administrator access to SimpleSAMLphp. ## Impact Affected deployments can allow remote attackers to escape the configured CAS ticket directory through public ticket validation inputs. Confirmed impact: - read and unserialize files outside the ticket cache when the file content is valid serialized PHP data; - delete attacker-selected files outside the ticket cache through the CAS 1.0 validation flow when the target is readable by the PHP process, deletable under the PHP process filesystem permissions, and the target content unserializes to a value compatible with the `?array` return type, such as a serialized array or serialized null. Full CAS semantic validation is not required before deletion in the CAS 1.0 flow. The file deletion impact depends on filesystem permissions of the PHP process. In realistic deployments, this can destroy CAS tickets, serialized SimpleSAMLphp runtime/cache files, or other writable files whose contents can be unserialized into a value accepted by the `?array` return type. It may also delete attacker-created files outside the ticket directory if the attacker has another primitive to place such serialized content. The `unserialize()` call creates a dangerous secondary primitive if an attacker can place a serialized object file at a reachable path, although this report does not claim a complete object-injection or RCE chain.

CVE-2026-46491 Affected Simplesamlphp/simplesamlphp module casserver Versions

1 component(s)
Fixed Versions:
7.0.3
Product / Package Ecosystem Affected Versions Fixed Version
simplesamlphp/simplesamlphp-module-casserver
Packagist
< 7.0.3
7.0.3

References

Frequently Asked Questions

What is CVE-2026-46491?
CVE-2026-46491 is a security vulnerability in Simplesamlphp/simplesamlphp module casserver involving SimpleSAMLphp casserver FileSystemTicketStore path traversal allows out-of-ticket-directory read/unserialize and conditional deletion under CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal').
Which Simplesamlphp/simplesamlphp module casserver versions are affected?
Affected versions include releases prior to 7.0.3 across affected packages: simplesamlphp/simplesamlphp-module-casserver.
What version fixes CVE-2026-46491?
Upgrading to 7.0.3 (or the latest patched release for your respective branch) resolves the vulnerability.
Is simplesamlphp/simplesamlphp-module-casserver affected?
Yes, simplesamlphp/simplesamlphp-module-casserver is affected in releases prior to 7.0.3. Upgrade your dependency to 7.0.3 or later.
What is the CVSS score of CVE-2026-46491?
CVE-2026-46491 has a CVSS v3.1 base score of 8.6 (HIGH) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L.
What CWE is associated with CVE-2026-46491?
CVE-2026-46491 is classified under CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') (The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.).
How can I check Packagist dependencies for CVE-2026-46491?
Run the dependency tree command: 'inspect dependencies for simplesamlphp/simplesamlphp-module-casserver'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-jrrg-99xh-5j2q",
  "modified" : "2026-06-10T13:41:15Z",
  "published" : "2026-05-15T18:07:51Z",
  "aliases" : [ "CVE-2026-46491" ],
  "summary" : "SimpleSAMLphp casserver FileSystemTicketStore path traversal allows out-of-ticket-directory read/unserialize and conditional deletion",
  "details" : "## Summary\n\n`simplesamlphp-module-casserver` builds file paths for the file-based CAS ticket store by directly concatenating the configured ticket directory with an attacker-controlled ticket identifier. Public CAS validation/proxy endpoints pass attacker-controlled `ticket` / `pgt` query parameters into this store.\n\nIn deployments using `FileSystemTicketStore`, a remote attacker can use path traversal sequences such as `../target.serialized` to make the CAS server read and unserialize files outside the ticket directory. In the CAS 1.0 validation flow, the same attacker-selected path is also passed to `deleteTicket()` immediately after `getTicket()` returns, which can delete the target file when it is readable by the PHP process, deletable under the PHP process filesystem permissions, and unserializes to a value compatible with the `?array` return type.\n\n### Preconditions\n\nThe demonstrated issue requires:\n\n- the `casserver` module to be enabled;\n- the file-based ticket store to be configured (`FileSystemTicketStore`);\n- public CAS validation/proxy endpoints to be reachable;\n- the PHP process to have filesystem permissions for the target path.\n- for the demonstrated CAS 1.0 deletion impact, `getTicket()` must return without throwing; practically, the target file must contain serialized PHP data that unserializes to a value compatible with the `?array` return type, such as an array or null. Full CAS semantic validation is not required for deletion in CAS 1.0 because `deleteTicket($ticket)` is called immediately after `getTicket($ticket)`.\n\nThe attacker does not need administrator access to SimpleSAMLphp.\n\n## Impact\n\nAffected deployments can allow remote attackers to escape the configured CAS ticket directory through public ticket validation inputs.\n\nConfirmed impact:\n\n- read and unserialize files outside the ticket cache when the file content is valid serialized PHP data;\n- delete attacker-selected files outside the ticket cache through the CAS 1.0 validation flow when the target is readable by the PHP process, deletable under the PHP process filesystem permissions, and the target content unserializes to a value compatible with the `?array` return type, such as a serialized array or serialized null. Full CAS semantic validation is not required before deletion in the CAS 1.0 flow.\n\nThe file deletion impact depends on filesystem permissions of the PHP process. In realistic deployments, this can destroy CAS tickets, serialized SimpleSAMLphp runtime/cache files, or other writable files whose contents can be unserialized into a value accepted by the `?array` return type. It may also delete attacker-created files outside the ticket directory if the attacker has another primitive to place such serialized content.\n\nThe `unserialize()` call creates a dangerous secondary primitive if an attacker can place a serialized object file at a reachable path, although this report does not claim a complete object-injection or RCE chain.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "simplesamlphp/simplesamlphp-module-casserver"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "7.0.3"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 7.0.2"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/simplesamlphp/simplesamlphp-module-casserver/security/advisories/GHSA-jrrg-99xh-5j2q"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-46491"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/simplesamlphp/simplesamlphp-module-casserver/commit/b84f3e4ed57c4d97e0dc73df102e7eff831a681f"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/simplesamlphp/simplesamlphp-module-casserver"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/simplesamlphp/simplesamlphp-module-casserver/releases/tag/v7.0.3"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-22" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-05-15T18:07:51Z",
    "nvd_published_at" : "2026-06-10T00:16:53Z"
  }
}