Read the docs

Account pre-hijacking in Prowler API through unverified social login

Priority LOW 37CWE-287Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
Passive
Attack complexity
Low
Attack requirements
Present
Impact type
Security bypass
Confidentiality · integrity · availability
High · High · None
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-287.

Summary

Prowler from 5.4.0 before 5.35.0 contains an improper authentication flaw (CWE-287) in the Prowler API social account linking. The API links a Google or GitHub login to an existing local account with the same email address without checking that the address is verified. A remote unauthenticated attacker who registers an email address before its owner can keep access to that account after the owner signs in with Google or GitHub.

Written with Claude Haiku 5.5 from the sources below · 2026-10-28

Description from the CNA

Improper Authentication in the social account linking path of the Prowler API in Prowler from 5.4.0 before 5.35.0 allows a remote unauthenticated attacker to obtain persistent access to the account of a user who has not yet registered, because ProwlerSocialAccountAdapter.pre_social_login() in api/src/backend/api/adapters.py links a Google or GitHub login to any existing local account that has the same email address as the one returned by the provider, without requiring that the address has been verified by the provider or on the existing account, and without any other check that both accounts belong to the same person. Self registration is open and the new account is usable at once, because UserViewSet.get_permissions() in api/src/backend/api/v1/views.py grants AllowAny to the create action, ACCOUNT_EMAIL_VERIFICATION is set to none in api/src/backend/config/settings/social_login.py, and the Django ModelBackend checks only the password and is_active, not the django-allauth EmailAddress record. An attacker who registers an email address before its owner keeps the password set at registration after the link is made, because sociallogin.connect() does not reset the password and does not disable the existing account, and the owner who later signs in with Google or GitHub is logged into the attacker's account. django-allauth makes the same email based link on its own, because SOCIALACCOUNT_EMAIL_AUTHENTICATION and SOCIALACCOUNT_EMAIL_AUTHENTICATION_AUTO_CONNECT are both set to True in the same settings module. This gives the attacker the cloud provider credentials, scan findings and tenant memberships held in the account.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00851 58th percentileScored 2026-11-07
Fix Fixed Prowler (Prowler): 5.35.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
ProwlerProwler5.4.0 to before 5.35.05.35.0Patch availableCNA
  • Prowler VendorProwler Affected 5.4.0 to before 5.35.0 Fixed in 5.35.0 Patch available CNA

Remediation

Upgrade Prowler to 5.35.0, which fixes this flaw.

Written with Claude Haiku 5.5 from the sources below · 2026-10-28

  • Fix · CNA Prowler (Prowler) Fixed in 5.35.0

Timeline

  1. 2026-10-14 Threatist record created from CVE-2026-100169
  2. 2026-10-15 Alias added: GHSA-5qw5-54v9-9g7q
  3. 2026-10-16 Priority changed: MEDIUM → LOW
  4. 2026-10-16 CISA SSVC decision points changed

References

  • TI-2026-42317 Prowler: SAML Domain Claiming Enables Cross-Tenant Account Takeover CVSS 3.1CRITICAL 9.6

Sources