← Back to CVE Explorer

CVE-2026-49454

Full vulnerability record from the local CVENow database.

Description

Relyra is a strict-by-default SAML 2.0 Service Provider library for Elixir and Phoenix. Versions 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. The XMLDSig trust boundary was incomplete as :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. A forged SignatureValue carrying an attacker-controlled NameID could be accepted as {:ok}. This issue has been fixed in version 1.2.0.

Severity
CRITICAL
CVSS score
9.1 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-06-18 21:16:29.920000
Last modified
2026-10-26 11:10:00.157000
View original CVE JSON
{
  "id": "CVE-2026-49454",
  "sourceIdentifier": "[email protected]",
  "published": "2026-06-18T21:16:29.920",
  "lastModified": "2026-10-26T11:10:00.157",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Relyra is a strict-by-default SAML 2.0 Service Provider library for Elixir and Phoenix. Versions 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. The XMLDSig trust boundary was incomplete as :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. A forged SignatureValue carrying an attacker-controlled NameID could be accepted as {:ok}. This issue has been fixed in version 1.2.0."
    },
    {
      "lang": "es",
      "value": "Relyra es una biblioteca de proveedor de servicios SAML 2.0 estricta por defecto para Elixir y Phoenix. Las versiones 1.0.0 y 1.1.0 aceptan firmas SAML falsificadas porque SignatureValue no fue verificado criptográficamente antes de que la biblioteca devolviera un resultado de autenticación exitoso. El límite de confianza de XMLDSig estaba incompleto ya que :public_key.verify sobre el SignedInfo canonizado exclusive-C14N no se realizó contra la clave pública del certificado IdP configurado, DigestValue no se volvió a calcular sobre el elemento referenciado canonizado, y canonicalize/2 permaneció como un passthrough sin usar en la ruta de verificación de firma. El resultado fue una ruta de aceptación solo por estructura donde la forma del documento y el rechazo de la fuente de confianza podían tener éxito sin probar los bytes de la firma. Un SignatureValue falsificado que contenía un NameID controlado por el atacante podía ser aceptado como {:ok}. Este problema ha sido solucionado en la versión 1.2.0."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "szTheory",
          "product": "relyra",
          "versions": [
            {
              "version": ">= 1.0.0, < 1.2.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N",
          "baseScore": 9.1,
          "baseSeverity": "CRITICAL",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 3.9,
        "impactScore": 5.2
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-06-22T15:50:42.585285Z",
          "id": "CVE-2026-49454",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-287"
        },
        {
          "lang": "en",
          "value": "CWE-347"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/szTheory/relyra/commit/2e456897af3158c175bb490ce7fc51d6241c8922",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/szTheory/relyra/commit/8910200",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/szTheory/relyra/security/advisories/GHSA-jv46-xfwm-36j7",
      "source": "[email protected]"
    }
  ]
}