All vulnerabilities

Servers and applications

GHSA-fphg-99ff-7qrp

Login V2: external IdP sign-in callback not bound to the initiating browser (login CSRF / session swapping)

Severity
Medium 5.4
Published
13 Nov 2026
Last changed
13 Nov 2026
Added to UpHeron
13 Nov 2026
Fixed in
4.20.3
Weakness
Cross-site request forgery (CWE-352)
Attack
Over the network · Needs a user account · Needs someone to click or open something
Attacker can
Read some data · Change some data
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Sources
Project advisories (GitHub)

Description

ZITADEL’s hosted Login V2 UI did not bind an external identity‑provider (IdP) sign‑in to the browser that started it. An attacker could get a victim’s browser to finish an external IdP sign‑in that the attacker had started with their own account, so that the victim ended up signed in to the attacker’s ZITADEL account. This is commonly called login CSRF, session swapping, or account pre‑hijacking.

The sign‑in was completed without verifying that the browser finishing it was the same browser that started it.

An attacker who can sign in to the instance with their own external IdP identity can:

  • Place a victim into the attacker’s account when the victim opens a link from the attacker, with no further interaction.
  • Collect what the victim then does under that identity: data the victim enters, documents they upload, and integrations or authentication methods they configure all land in the attacker‑controlled account and can be retrieved by the attacker later.
From zitadel/zitadel's security advisory. Shortened; the full text is there.

Workarounds

The recommended solution is to upgrade to a patched version. There is no configuration that fully closes this gap on unpatched versions. Enforcing multi‑factor authentication is a partial mitigation only: it interrupts the automatic sign‑in at the factor step, but does not restore the missing browser binding.

Workarounds as given by zitadel/zitadel's security advisory.

Affected software

SoftwareAffected versions
ZITADELServers and applications · github:zitadel/zitadel
  • From 4.0.0 before 4.20.3

References