Katalog CVE

CVE-2026-82761

KrytyczneCVSS 9.1
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

Podatność wyścigu typu time-of-check time-of-use (TOCTOU) w AshAuthentication pozwala atakującemu posiadającemu wyciekły magic link na wielokrotne użycie jednorazowego tokenu i uwierzytelnienie się jako docelowy podmiot. Nic nie serializuje sprawdzenia ważności tokenu względem jego zużycia, więc równoczesne użycia tego samego tokenu kończą się sukcesem, a każde zwraca pełny token użytkownika. Unieważnienie następuje dopiero po weryfikacji JWT, a zapis unieważnienia jako upsert pozwala równoczesnemu duplikatowi zakończyć się sukcesem.

Ocena ryzyka

Atakujący z wyciekłym magic linkiem może uzyskać pełny dostęp do konta ofiary, mimo że token miał być jednorazowy. Może to prowadzić do przejęcia konta i nieautoryzowanego dostępu.

Rekomendacja

Zaktualizuj ash_authentication do wersji 4.15.0 lub 5.0.0-rc.14 (lub nowszej). Rozważ dodatkowe zabezpieczenia ograniczające równoczesne użycie tokenów magic link.

Inne podatności w AshAuthentication

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

Time-of-check Time-of-use (TOCTOU) Race Condition vulnerability in team-alembic AshAuthentication allows an attacker holding a leaked magic link to replay its single-use token and authenticate as the target subject. A magic link configured with single_use_token?, which is the default, is meant to be redeemable exactly once, but nothing serialises the token's validity check against its consumption, so concurrent redemptions of one token all succeed and each yields a full user token. Sign-in verifies the JWT with Jwt.verify/4 and revokes it only afterwards: AshAuthentication.Strategy.MagicLink.SignInPreparation revokes in a Query.after_action callback, and AshAuthentication.Strategy.MagicLink.SignInChange in an after_transaction hook that runs once the sign-in has already committed. AshAuthentication.TokenResource.Actions.revoke/3 writes the revocation as an upsert, so a concurrent duplicate revocation silently succeeds instead of conflicting and no request ever loses the race. This issue affects ash_authentication: from 3.9.0 before 4.15.0 and from 5.0.0-rc.0 before 5.0.0-rc.14.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS