User impersonation using SAMLv1.x SSO in Open Access Management
Description
Open Access Management (OpenAM) is an access management solution that includes Authentication, SSO, Authorization, Federation, Entitlements and Web Services Security. OpenAM up to version 14.7.2 does not properly validate the signature of SAML responses received as part of the SAMLv1.x Single Sign-On process. Attackers can use this fact to impersonate any OpenAM user, including the administrator, by sending a specially crafted SAML response to the SAMLPOSTProfileServlet servlet. This problem has been patched in OpenAM 14.7.3-SNAPSHOT and later. User unable to upgrade should comment servlet SAMLPOSTProfileServlet from their pom file. See the linked GHSA for details.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
org.openidentityplatform.openam:openam-federation-libraryMaven | < 14.7.3 | 14.7.3 |
Affected products
1- Range: < 14.7.3
Patches
17c18543d126eGHSL-2023-143, GHSL-2023-144, deny unsigned SAML response (#624)
1 file changed · +10 −6
openam-federation/openam-federation-library/src/main/java/com/sun/identity/saml/common/SAMLUtils.java+10 −6 modified@@ -951,6 +951,10 @@ public static Response getResponse(byte [] bytes) { */ public static boolean verifyResponse(Response response, String requestUrl, HttpServletRequest request) { + if(!response.isSigned()) { + debug.message("verifyResponse: Response is not signed"); + return false; + } if (!response.isSignatureValid()) { debug.message("verifyResponse: Response's signature is invalid."); return false; @@ -1585,13 +1589,13 @@ public static Map processResponse(Response samlResponse, String target) List assertions = null; SAMLServiceManager.SOAPEntry partnerdest = null; Subject assertionSubject = null; - if (samlResponse.isSigned()) { - // verify the signature - boolean isSignedandValid = verifySignature(samlResponse); - if (!isSignedandValid) { - throw new SAMLException(bundle.getString("invalidResponse")); - } + + // verify the signature + boolean isSignedandValid = verifySignature(samlResponse); + if (!isSignedandValid) { + throw new SAMLException(bundle.getString("invalidResponse")); } + // check Assertion and get back a Map of relevant data including, // Subject, SOAPEntry for the partner and the List of Assertions. Map ssMap = verifyAssertionAndGetSSMap(samlResponse);
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-4mh8-9wq6-rjxgghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2023-37471ghsaADVISORY
- github.com/OpenIdentityPlatform/OpenAM/commit/7c18543d126e8a567b83bb4535631825aaa9d742ghsax_refsource_MISCWEB
- github.com/OpenIdentityPlatform/OpenAM/pull/624ghsax_refsource_MISCWEB
- github.com/OpenIdentityPlatform/OpenAM/security/advisories/GHSA-4mh8-9wq6-rjxgghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.