CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-57175

CVE-2026-57175: Improper Authentication in social-auth-core SAML Backend

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 25, 2026·6 min read·3 visits

Executive Summary (TL;DR)

The social-auth-core SAML backend failed to validate the InResponseTo attribute in SAML responses against the local session. This allows attackers to link their own external SAML identity to a victim's active session, gaining complete and permanent access to the victim's account.

An improper authentication vulnerability (CWE-287) exists in the SAML backend of the social-auth-core package before version 5.0.0. The Assertion Consumer Service (ACS) endpoint does not verify whether incoming SAML assertions match a previously initiated AuthnRequest in the user's session. This permits an attacker with credentials on a shared Identity Provider to perform a 'Session Donor' attack, permanently linking their SAML identity to an authenticated victim's account and achieving full, persistent account takeover.

Vulnerability Overview

The social-auth-core package, serving as the core logic library for Python Social Auth, contains an improper authentication vulnerability within its SAML authentication backend. This backend is responsible for facilitating Single Sign-On (SSO) and external identity association with local user accounts. The vulnerability exposes applications to session donation and account takeover when users link their accounts to a federated identity provider.

The root of the flaw lies in the assertion consumer service (ACS) endpoint's processing of unsolicited SAML assertions. In standard SAML service provider (SP) configurations, the application must verify that any incoming assertion corresponds to an active, locally initiated authentication request. Without this validation, the system cannot guarantee that the SAML assertion belongs to the browser session currently interacting with the application.

The primary attack surface is exposed via the account linking or association flow. If an application allows authenticated users to bind external SAML identities to their local profiles, an attacker can manipulate this flow to link their own external identity to a victim's local account. This results in persistent, unauthorized access to the victim's account without requiring the victim's local credentials.

Root Cause Analysis

In a secure SAML transaction, state tracking prevents authentication replay and response injection. When a user initiates a sign-in or association flow, the Service Provider generates a unique AuthnRequest ID and stores it in the user's session. The Identity Provider then includes this ID in the InResponseTo attribute of the signed XML assertion, which the Service Provider must validate against its session store.

Prior to version 5.0.0, the SAMLAuth backend in social_core/backends/saml.py completely omitted this validation step. The auth_complete method parsed incoming assertions using the python3-saml library's process_response method without passing the active request_id. Consequently, the underlying library bypassed verification of the InResponseTo attribute, rendering the endpoint receptive to unsolicited responses.

By failing to assert that the received assertion matches an active request initiated by the current session, the backend permits an out-of-band identity mapping. This omission is classified under CWE-287 (Improper Authentication). The system assumes that any validly signed assertion from a trusted Identity Provider is legitimate for the active session, ignoring the contextual origin of the transaction.

Code Analysis

The vulnerability is located within the auth_complete method of social_core/backends/saml.py. In the vulnerable code, the method calls auth.process_response() without arguments. This execution path instructs the parser to skip comparing the incoming XML InResponseTo attribute with any expected state, effectively accepting unsolicited login assertions from any trusted IdP.

The patch introduced in version 5.0.0 remediates this by explicitly extracting and verifying the InResponseTo attribute. The application now saves the generated AuthnRequest ID into the session during the auth_url generation phase. Upon receiving the response, the backend retrieves this ID and passes it to the verification logic using constant-time comparison helper functions.

The following diagram illustrates the vulnerable and patched authentication flow path, showing how state tracking is now enforced:

Key additions in the patch include the state-checking logic and session management functions designed to prevent replay attacks by purging the transaction ID from the session cache upon validation.

Exploitation Methodology

Exploiting this vulnerability requires the attacker to possess a valid account on a trusted Identity Provider configured in the target application. The attack is executed through a Session Donor methodology. The attacker initiates a standard SAML authentication flow with the shared IdP and intercepts the resulting signed SAMLResponse payload before it is submitted to the Service Provider.

The attacker then delivers this valid SAMLResponse to the victim's active, authenticated session. This delivery can be accomplished through social engineering, such as cross-site request forgery (CSRF), or by tricking the victim into navigating to an association endpoint preloaded with the attacker's SAML assertion. Because the victim's session does not check for a matching request ID, the backend maps the attacker's IdP identity to the victim's local database profile.

Once the association is complete, the attacker logs out of their identity provider and triggers a normal SAML login flow targeting the victim's application. The application authenticates the attacker via the IdP, identifies the mapped association on the victim's local profile, and logs the attacker directly into the victim's account. This achieves full compromise of the victim's session with persistent access.

Impact Assessment

The security impact of CVE-2026-57175 is characterized by complete unauthorized access to authenticated user accounts, resulting in loss of confidentiality and integrity. If the targeted account belongs to an administrator, the attacker gains full control over application configurations, user data, and system-level operations. The CVSS base score is established at 6.4 (Medium Severity) due to the requirement for specific user interaction and high attack complexity.

The CVSS vector string CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:N highlights key operational constraints of the exploit. The attack vector is Network (AV:N), meaning the flaw is exploitable remotely over HTTP. The Attack Complexity is High (AC:H) because the attacker must capture a valid SAML assertion and successfully deliver it to a victim's active session during an account-linking window.

Privileges Required are Low (PR:L) since the attacker only needs standard credentials on a shared Identity Provider. While the vulnerability does not directly impact application availability (A:N), the persistence of the mapped SAML identity allows the attacker to maintain access indefinitely until the association is manually audited and revoked by an administrator.

Remediation and Mitigation Guidance

The primary and recommended mitigation is to upgrade the social-auth-core package to version 5.0.0 or higher immediately. This update modifies the SAMLAuth backend to enforce strict verification of the InResponseTo attribute during the authentication handshake. The updated library also clears the verified request ID from the session cache to prevent subsequent replay attempts.

In environments where immediate package upgrades are not feasible, temporary workarounds must be applied to limit exposure. Administrators should disable the SAML account association feature to prevent authenticated users from linking new external identities to existing profiles. Alternatively, if SAML login is not required, the backend should be removed from the SOCIAL_AUTH_AUTHENTICATION_BACKENDS list within the application settings.

Security teams should also conduct an audit of historic application logs. Check for multiple local accounts linked to the same external SAML NameID, or instances where SAML login associations occurred without a corresponding outbound AuthnRequest log entry. Monitoring network traffic for unexpected requests to ACS endpoints can help identify active exploitation attempts.

Official Patches

python-social-authPull Request #1794: Fixes InResponseTo validation on SAML ACS endpoint

Fix Analysis (1)

Technical Appendix

CVSS Score
6.4/ 10
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:N

Affected Systems

social-auth-core (PyPI package)

Affected Versions Detail

Product
Affected Versions
Fixed Version
social-auth-core
python-social-auth
< 5.0.05.0.0
AttributeDetail
CWE IDCWE-287
Attack VectorAV:N/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:N
CVSS Score6.4 (Medium)
EPSS ScoreNot Available
ImpactAccount Takeover / Unauthorized Identity Mapping
Exploit StatusNo public exploit available
KEV StatusNot listed

MITRE ATT&CK Mapping

T1078Valid Accounts
Initial Access
T1190Exploit Public-Facing Application
Initial Access
CWE-287
Improper Authentication

The software does not prove or has an insufficient method to prove that a user is who they claim to be.

Vulnerability Timeline

Official patch committed to master branch
2026-06-17
GitHub Security Advisory GHSA-vq6g-g6c7-5f2j published
2026-09-24
CVE-2026-57175 officially published in NVD
2026-09-24

References & Sources

  • [1]GitHub Advisory GHSA-vq6g-g6c7-5f2j
  • [2]NVD CVE-2026-57175 Detailed Information

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•17 minutes ago•CVE-2026-55736
5.9

CVE-2026-55736: Mass Assignment / Parameter Pollution in Ash Framework Changeset Path

A parameter injection vulnerability exists in the Ash framework for Elixir, where untrusted string-keyed maps can bypass the 'public?: false' restriction on action arguments. An attacker can leverage this bypass to inject and overwrite private arguments, resulting in unauthorized data modification or privilege escalation depending on the target application's design.

Alon Barad
Alon Barad
2 views•5 min read
•about 2 hours ago•CVE-2026-57176
6.8

CVE-2026-57176: Multi-Tenant Account Takeover via Identity Binding Collision in python-social-auth Vend Backend

An identity binding collision vulnerability in the Vend OAuth2 backend of python-social-auth (social-core) before version 5.0.0 allows unauthenticated remote attackers to take over local accounts in multi-tenant configurations. The flaw stems from relying on shop-local numeric user IDs as global social-auth identifiers, leading to collisions when identical IDs exist across distinct tenants.

Alon Barad
Alon Barad
4 views•6 min read
•about 3 hours ago•CVE-2026-57177
4.3

CVE-2026-57177: Login Cross-Site Request Forgery in python-social-auth (social-auth-core)

A Login Cross-Site Request Forgery (Login CSRF) vulnerability was discovered in the social-auth-core library prior to version 5.0.0 when utilizing the LoginRadius authentication backend. The backend explicitly disabled state token validation during the authentication callback, allowing attackers to link their identities to victim sessions.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 4 hours ago•CVE-2026-57178
7.4

CVE-2026-57178: Authentication Bypass via Missing Signature Verification in social-auth-core

An authentication bypass vulnerability exists in the VKontakte App backend of social-auth-core prior to version 5.0.0. The vulnerability allows remote attackers to bypass cryptographic signature verification and gain unauthorized access to arbitrary accounts by omitting the signature parameter.

Amit Schendel
Amit Schendel
5 views•7 min read
•about 5 hours ago•CVE-2026-57179
4.2

CVE-2026-57179: Session Fixation and Login CSRF in social-auth-core Partial Pipeline

CVE-2026-57179 is a critical Session Fixation and Login Cross-Site Request Forgery (CSRF) vulnerability in python-social-auth's core library (social-auth-core) prior to version 5.0.0. The vulnerability allows remote attackers to force arbitrary state transitions and bind third-party social credentials to a victim's session, leading to complete account takeover.

Alon Barad
Alon Barad
7 views•7 min read
•about 6 hours ago•CVE-2026-57232
3.1

CVE-2026-57232: Server-Side Request Forgery in Contao CMS Feed Reader Module

A Server-Side Request Forgery (SSRF) vulnerability exists in the Contao Open Source Content Management System (CMS) within the Feed Reader front-end module. When processing RSS feed configurations, the module initiates outbound HTTP connections using a default HTTP client that lacks loopback and private network controls. Authenticated backend users with permissions to configure frontend modules can exploit this flaw to coerce the server into sending requests to internal endpoints, loopback addresses, and cloud instance metadata services.

Amit Schendel
Amit Schendel
7 views•7 min read