CVE-2026-49454: Relyra Authentication Bypass Vulnerability

CRITICAL
Advisory Identifier: GHSA-jv46-xfwm-36j7
CVSS 9.1
CWE-287 CWE-347
Published
Advisory Summary

CVE-2026-49454 is a CRITICAL (CVSS 9.1) authentication bypass vulnerability (CWE-287: Improper Authentication) affecting Relyra libraries in the Hex ecosystem. The issue involves relyra saml signaturevalue not cryptographically verified -> authentication bypass. Remediation is available by upgrading affected packages to version 1.2.0.

CVE-2026-49454 at a Glance

CVE Identifier CVE-2026-49454
GHSA Identifier GHSA-jv46-xfwm-36j7
Severity CRITICAL
CVSS v3.1 Base Score 9.1
CWE Classification CWE-287: Improper Authentication
Affected Product Relyra
Package Ecosystem Hex
Published Date
Last Updated

Security Impact

CVSS: 9.1

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:H/I:H/A:N).

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 High (C:H)
Integrity High (I:H)
Availability None (A:N)

How to Fix CVE-2026-49454

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

relyra fixed: 1.2.0
Upgrade relyra to 1.2.0
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 relyra

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-49454, inspect your project dependencies for Relyra:

inspect dependencies for relyra

Analyze the terminal output to locate any version of Relyra in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.2.0), 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-287: Improper Authentication, where when an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct. In Relyra, 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 Relyra `1.0.0` and `1.1.0` accept forged SAML signatures because `SignatureValue` was not cryptographically verified before the library returned a successful authentication result. ## Details In `1.0.0` and `1.1.0`, the XMLDSig trust boundary was incomplete. `:public_key.verify` over the exclusive-C14N canonicalized `SignedInfo` was not performed against the configured IdP certificate's public key, `DigestValue` was not recomputed over the canonicalized referenced element, and `canonicalize/2` remained an unused passthrough in the signature-verification path. The result was a structure-only acceptance path where document shape and trust-source rejection could succeed without proving the signature bytes. ## Impact A forged `SignatureValue` carrying an attacker-controlled `NameID` can be accepted as `{:ok}`. Any relying-party application using Relyra `1.0.0` or `1.1.0` can be logged into as an arbitrary user if it trusts the affected response path. ## Patches Relyra `1.2.0` closes the gap with real exclusive-C14N canonicalization, `:public_key.verify` against the configured IdP certificate's public key, and a constant-time `DigestValue` recompute/compare bound to the exact consumed node on both `verify/4` and `verify_metadata_root/4`. ## Workarounds There is no safe configuration of `1.0.0` or `1.1.0`. Upgrade to `1.2.0` or later. ## Resources - Fix commit `2e45689` (wire real XMLDSig crypto into the candidate arm) - Fix commit `8910200` (close metadata trust bypass, pin over DER) - Regression proof: `test/security/xml/adversarial_crypto_test.exs`, `test/relyra/metadata/auto_refresh_test.exs`, `test/security/ci_gate_integrity_test.exs`

CVE-2026-49454 Affected Relyra Versions

1 component(s)
Fixed Versions:
1.2.0
Product / Package Ecosystem Affected Versions Fixed Version
relyra
Hex
≥ 1.0.0
< 1.2.0
1.2.0

References

Frequently Asked Questions

What is CVE-2026-49454?
CVE-2026-49454 is a security vulnerability in Relyra involving Relyra SAML SignatureValue not cryptographically verified -> authentication bypass under CWE-287: Improper Authentication.
Which Relyra versions are affected?
Affected versions include releases prior to 1.2.0 across affected packages: relyra.
What version fixes CVE-2026-49454?
Upgrading to 1.2.0 (or the latest patched release for your respective branch) resolves the vulnerability.
Is relyra affected?
Yes, relyra is affected in releases prior to 1.2.0. Upgrade your dependency to 1.2.0 or later.
What is the CVSS score of CVE-2026-49454?
CVE-2026-49454 has a CVSS v3.1 base score of 9.1 (CRITICAL) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N.
What CWE is associated with CVE-2026-49454?
CVE-2026-49454 is classified under CWE-287: Improper Authentication (When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.).
How can I check Hex dependencies for CVE-2026-49454?
Run the dependency tree command: 'inspect dependencies for relyra'. 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-jv46-xfwm-36j7",
  "modified" : "2026-06-26T21:05:13Z",
  "published" : "2026-06-26T21:05:13Z",
  "aliases" : [ "CVE-2026-49454" ],
  "summary" : "Relyra SAML SignatureValue not cryptographically verified -> authentication bypass",
  "details" : "## Summary\n\nRelyra `1.0.0` and `1.1.0` accept forged SAML signatures because `SignatureValue` was not cryptographically verified before the library returned a successful authentication result.\n\n## Details\n\nIn `1.0.0` and `1.1.0`, the XMLDSig trust boundary was incomplete. `:public_key.verify` over the exclusive-C14N canonicalized `SignedInfo` was not performed against the configured IdP certificate's public key, `DigestValue` was not recomputed over the canonicalized referenced element, and `canonicalize/2` remained an unused passthrough in the signature-verification path. The result was a structure-only acceptance path where document shape and trust-source rejection could succeed without proving the signature bytes.\n\n## Impact\n\nA forged `SignatureValue` carrying an attacker-controlled `NameID` can be accepted as `{:ok}`. Any relying-party application using Relyra `1.0.0` or `1.1.0` can be logged into as an arbitrary user if it trusts the affected response path.\n\n## Patches\n\nRelyra `1.2.0` closes the gap with real exclusive-C14N canonicalization, `:public_key.verify` against the configured IdP certificate's public key, and a constant-time `DigestValue` recompute/compare bound to the exact consumed node on both `verify/4` and `verify_metadata_root/4`.\n\n## Workarounds\n\nThere is no safe configuration of `1.0.0` or `1.1.0`. Upgrade to `1.2.0` or later.\n\n## Resources\n\n- Fix commit `2e45689` (wire real XMLDSig crypto into the candidate arm)\n- Fix commit `8910200` (close metadata trust bypass, pin over DER)\n- Regression proof: `test/security/xml/adversarial_crypto_test.exs`, `test/relyra/metadata/auto_refresh_test.exs`, `test/security/ci_gate_integrity_test.exs`",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Hex",
      "name" : "relyra"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.0.0"
      }, {
        "fixed" : "1.2.0"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/szTheory/relyra/security/advisories/GHSA-jv46-xfwm-36j7"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-49454"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/szTheory/relyra/commit/2e456897af3158c175bb490ce7fc51d6241c8922"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/szTheory/relyra/commit/8910200"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/szTheory/relyra"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-287", "CWE-347" ],
    "severity" : "CRITICAL",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-06-26T21:05:13Z",
    "nvd_published_at" : "2026-06-18T21:16:29Z"
  }
}