Impact
The vk-app backend accepted VK application callback data without verifying the callback signature when the authkey parameter was omitted.
Applications using this backend could treat unsigned attacker-controlled data as a verified VK identity. An attacker could choose callback fields such as viewerid, accesstoken, apiid, and apiresult, potentially allowing authentication as an arbitrary VK user ID.
The issue affects only applications using the vk-app backend.
Patches
The issue has been fixed by requiring authkey to be present and valid before callback data is trusted.
Users should upgrade to a patched version.
Fix:
https://github.com/python-social-auth/social-core/pull/1811
Workarounds
Applications that cannot upgrade immediately should disable the vk-app backend by removing socialcore.backends.vk.VKAppOAuth2 from SOCIALAUTHAUTHENTICATIONBACKENDS.
There is no complete workaround while continuing to use the vulnerable backend.
Credits
Reported by @lalalala5678 through GitHub private vulnerability reporting.
Impact
The Vend OAuth2 backend used only the numeric Vend userid as the social-auth UID.
When multiple Vend shops authenticate through the same application, users from different shops with the same internal Vend user ID could collide in the social-auth association table. A user from one shop could then be authenticated as the local account previously associated with the same numeric user ID from another shop.
The issue affects applications using the Vend OAuth2 backend with more than one Vend shop.
Patches
The issue has been fixed by scoping Vend social-auth UIDs by shop.
Users should upgrade to a patched version.
Fix:
https://github.com/python-social-auth/social-core/pull/1795
Workarounds
Applications that cannot upgrade immediately should restrict the Vend OAuth2 backend to a single trusted Vend shop.
If Vend authentication is not required, the Vend backend can also be disabled by removing it from SOCIALAUTHAUTHENTICATIONBACKENDS.
There is no complete workaround while continuing to allow authentication from multiple Vend shops with the vulnerable backend.
Credits
Reported through GitHub private vulnerability reporting by Liyi Zhou, Ziyue Wang, Strick, Maurice, and Chenchen Yu from the University of Sydney security research team.
Reporter references:
https://lzhou1110.github.io/ https://zyy0530.github.io/ https://str1ckl4nd.github.io/ https://maurice.busystar.org/ https://7thparkk.github.io/
Impact
The SAML backend accepted SAML responses on the Assertion Consumer Service endpoint without verifying that they matched a previously issued AuthnRequest.
Applications using SAML account association could allow an attacker with a valid account on a trusted IdP to link the attacker's SAML identity to a logged-in victim's local account. The attacker could then authenticate through SAML and gain access to the victim's account.
The issue affects applications using the SAML backend together with authenticated account association.
Patches
The issue has been fixed by validating SAML responses against stored AuthnRequest IDs.
Users should upgrade to a patched version.
Fix:
https://github.com/python-social-auth/social-core/pull/1794
Workarounds
Applications that cannot upgrade immediately should disable SAML account association for already authenticated users.
If SAML login is not required, the SAML backend can also be disabled by removing it from SOCIALAUTHAUTHENTICATIONBACKENDS.
There is no complete workaround while continuing to allow vulnerable SAML account association.
Credits
Reported through GitHub private vulnerability reporting by Liyi Zhou, Ziyue Wang, Strick, Maurice, and Chenchen Yu from the University of Sydney security research team.
Reporter references:
https://lzhou1110.github.io/ https://zyy0530.github.io/ https://str1ckl4nd.github.io/ https://maurice.busystar.org/ https://7thparkk.github.io/
Impact
The LoginRadius backend did not validate OAuth state during the authentication flow.
Applications using this backend were vulnerable to login CSRF. An attacker could cause a victim's browser session to complete authentication using an attacker-controlled LoginRadius token, making the victim authenticated as the attacker's LoginRadius identity.
The issue affects only applications using the LoginRadius backend.
Patches
The issue has been fixed by enabling callback state validation for the LoginRadius backend.
Users should upgrade to a patched version.
Fix:
https://github.com/python-social-auth/social-core/pull/1808
Workarounds
Applications that cannot upgrade immediately should disable the LoginRadius backend by removing it from SOCIALAUTHAUTHENTICATIONBACKENDS.
There is no complete workaround while continuing to use the vulnerable backend.
Credits
Reported through GitHub private vulnerability reporting by Liyi Zhou, Ziyue Wang, Strick, Maurice, and Chenchen Yu from the University of Sydney security research team.
Reporter references:
https://lzhou1110.github.io/ https://zyy0530.github.io/ https://str1ckl4nd.github.io/ https://maurice.busystar.org/ https://7thparkk.github.io/
Impact
The partial-pipeline resume mechanism accepted partialtoken as a bearer credential without binding it to the browser session that created it.
Applications using resumable partial pipeline steps could allow an attacker to start an authentication flow, obtain a valid partial token and verification data, and cause a victim's browser to resume that attacker-controlled flow. This could authenticate the victim's browser as the attacker's account.
The issue affects applications using partial pipeline steps such as mailvalidation or custom steps decorated with @partial.
Patches
The issue has been fixed by binding partial pipeline resumes to the originating browser session.
Users should upgrade to a patched version.
Fix:
https://github.com/python-social-auth/social-core/pull/1816 https://github.com/python-social-auth/social-docs/pull/444 https://github.com/python-social-auth/social-app-django/pull/1009
Workarounds
Applications that cannot upgrade immediately should disable resumable partial pipeline steps, including mailvalidation and custom steps decorated with @partial.
If those flows are required, applications should avoid accepting partial resume links from untrusted contexts until a patched version can be deployed.
There is no complete workaround while continuing to use the vulnerable partial-pipeline resume mechanism.
Credits
Reported through GitHub private vulnerability reporting by Liyi Zhou, Ziyue Wang, Strick, Maurice, and Chenchen Yu from the University of Sydney security research team.
Reporter references:
https://lzhou1110.github.io/ https://zyy0530.github.io/ https://str1ckl4nd.github.io/ https://maurice.busystar.org/ https://7thparkk.github.io/