{"id":"CVE-2021-21239","aliases":["GHSA-5p3x-r448-pc62","PYSEC-2021-49"],"title":"Improper Verification of Cryptographic Signature in PySAML2","summary":"Improper Verification of Cryptographic Signature in PySAML2","severity":"medium","cvss":6.5,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","vendor":"pysaml2","product":"pysaml2","ecosystem":"pip","affected":["pysaml2 < 6.5.0"],"patched":["pysaml2 6.5.0"],"published":"2021-01-21","updated":"2026-09-10","sourceUpdated":"2026-09-10T03:49:13.846262945Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/GHSA-5p3x-r448-pc62","references":[{"url":"https://github.com/IdentityPython/pysaml2/security/advisories/GHSA-5p3x-r448-pc62"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2021-21239"},{"url":"https://github.com/IdentityPython/pysaml2/commit/46578df0695269a16f1c94171f1429873f90ed99"},{"url":"https://github.com/IdentityPython/pysaml2"},{"url":"https://github.com/IdentityPython/pysaml2/releases/tag/v6.5.0"},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/pysaml2/PYSEC-2021-49.yaml"},{"url":"https://lists.debian.org/debian-lts-announce/2021/02/msg00038.html"},{"url":"https://pypi.org/project/pysaml2"},{"url":"https://www.aleksey.com/pipermail/xmlsec/2013/009717.html"}],"tags":["osv","pip","exploit-available"],"epss":0.01271,"epssPercentile":0.6859,"exploits":{"github":4,"githubRepos":["https://github.com/RyanBoomer30/CVE-2021-21239-Exploit","https://github.com/GrantBirki/redash-vulnerable","https://github.com/illera88/CVE-2021-21239"],"checkedAt":"2026-09-24T07:52:47.498Z"},"exploitAvailable":true,"ingestedAt":"2026-09-12T03:13:01.661Z","slug":"CVE-2021-21239","body":"## Overview\n\n### Impact\n\nAll users of pysaml2 that use the default `CryptoBackendXmlSec1` backend and need to verify signed SAML documents are impacted. `pysaml2 <= 6.4.1` does not ensure that a signed SAML document is correctly signed. The default `CryptoBackendXmlSec1` backend is using the `xmlsec1` binary to verify the signature of signed SAML documents, but by default, `xmlsec1` accepts any type of key found within the given document. `xmlsec1` needs to be configured explicitly to only use only _x509 certificates_ for the verification process of the SAML document signature.\n\n### Patches\n\nUsers should upgrade to pysaml2 `v6.5.0`.\n\n### Workarounds\n\nNo workaround provided at this point.\n\n### References\n\nThis issue has been reported in the past at the xmlsec1 mailing list:\nhttps://www.aleksey.com/pipermail/xmlsec/2013/009717.html\n\n### Credits\n\n- Brian Wolff\n\n### For more information\n\nIf you have any questions or comments about this advisory:\n* Open an issue in [pysaml2](https://github.com/IdentityPython/pysaml2)\n* Email us at [the incident-response address](mailto:incident-response@idpy.org)\n\n\n## Affected packages\n\n- `pysaml2 < 6.5.0`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `pysaml2 6.5.0`","depth":"twilight","depthScore":48,"depthScoreParts":{"impact":35.8,"likelihood":0.3,"exploitation":12,"ransomware":0},"changes":[]}