W systemie Authentik (open-source Identity Provider) istnieje błąd niewystarczającej weryfikacji uprawnień w przepływie odzyskiwania konta. Atakujący, który wejdzie w posiadanie linku odzyskiwania wygenerowanego przez administratora, może ustawić hasło dla dowolnego konta użytkownika.
▸ Pokaż oryginał (EN)
authentik is an open-source Identity Provider. Due to an insufficient access check, a recovery flow link that is created by an admin (or sent via email by an admin) can be used to set the password for any arbitrary user. This attack is only possible if a recovery flow exists, which has both an Identification and an Email stage bound to it. If the flow has policies on the identification stage to skip it when the flow is restored (by checking `request.context['is_restored']`), the flow is not affected by this. With this flow in place, an administrator must create a recovery Link or send a recovery URL to the attacker, who can, due to the improper validation of the token create, set the password for any account. Regardless, for custom recovery flows it is recommended to add a policy that checks if the flow is restored, and skips the identification stage. This issue has been fixed in versions 2023.2.3, 2023.1.3 and 2022.12.2.
Podatność wynika z nieprawidłowej walidacji tokenu odzyskiwania (CWE-345 — brak odpowiedniej weryfikacji autentyczności danych). Gdy administrator tworzy link odzyskiwania lub wysyła URL odzyskiwania dowolnemu użytkownikowi, atakujący będący w posiadaniu tego linku może go wykorzystać do zresetowania hasła dla dowolnego konta — nie tylko tego, dla którego link był przeznaczony. Warunek konieczny do przeprowadzenia ataku to istnienie w systemie przepływu odzyskiwania zawierającego zarówno etap identyfikacji (Identification), jak i etap e-mail (Email Stage). Jeśli przepływ posiada politykę pomijającą etap identyfikacji przy jego przywróceniu (poprzez sprawdzenie `request.context['is_restored']`), podatność nie występuje.
Atakujący może przejąć kontrolę nad dowolnym kontem użytkownika w systemie, w tym kontami uprzywilejowanymi, poprzez ustawienie nowego hasła — co prowadzi do pełnego naruszenia poufności, integralności i dostępności zasobów chronionych przez Authentik.
Należy zaktualizować Authentik do wersji 2023.2.3, 2023.1.3 lub 2022.12.2. Dodatkowo, dla niestandardowych przepływów odzyskiwania zaleca się dodanie polityki sprawdzającej, czy przepływ jest przywracany (`request.context['is_restored']`), i pomijającej etap identyfikacji w takim przypadku. Do czasu wdrożenia patcha należy unikać tworzenia i dystrybucji linków odzyskiwania.
Goauthentik Authentik w wersjach poprzedzających 2022.12.2, 2023.1.3 oraz 2023.2.3, gdy skonfigurowany jest przepływ odzyskiwania zawierający etap identyfikacji i etap e-mail.
Podatność wymaga, aby administrator samodzielnie wygenerował i udostępnił link odzyskiwania atakującemu — co ogranicza możliwość jej masowego wykorzystania, jednak w scenariuszach phishingu lub kompromitacji konta admina ryzyko pozostaje wysokie.
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:HGoauthentik Authentik
APPGoauthentik< 2022.12.3≤ 2023.1.3≤ 2023.2.3
Powiązane podatności
Pominięcie etapu uwierzytelniania (Source Stage) w Goauthentik Authentik
XSS w AutosubmitStage komponentu SFE w Goauthentik Authentik
RCE w authentik przez endpoint testowy mapowania właściwości
Pominięcie uwierzytelnienia przez nagłówek X-Forwarded-For w authentik
authentik — pominięcie uwierzytelnienia przy resetowaniu hasła admina