Začleněno 26. 9. 2026  První zásah v open source

Yopass: neověřené e-maily mohly projít omezením domén v OIDC

BudgetScan upozornil na chybějící kontrolu email_verified v přihlášení do Yopass, open-source nástroje pro sdílení tajemství, hesel a souborů. Naše záplata se stala prvním commitem správcovy začleněné opravy.

Co bylo špatně

Při OIDC přihlášení vrací poskytovatel identity údaje o uživateli: e-mailovou adresu a volitelně email_verified, které říká, zda poskytovatel adresu skutečně ověřil. Yopass podle e-mailu vynucoval seznam povolených e-mailových domén (nastavení AllowedEmailDomains), ale email_verified nekontroloval. OIDC je v Yopass volitelná licencovaná funkce; když je nastavené, objeví se v navigační liště tlačítko Sign in.

Kdo tedy měl u poskytovatele identity s povolenou doménou neověřený účet, mohl omezení domén obejít. Zda je to v praxi možné, záleží na konkrétním poskytovateli identity.

Zjednodušený tok OIDC přihlášení v Yopass Poskytovatel identity vrací e-mail a volitelně email_verified. Před opravou šel e-mail rovnou do kontroly povolených domén. Nyní je mezi tím kontrola ověřeného e-mailu. Poskytovatel identityvrací e-mail a volitelně email_verified Přihlašovací callback v Yopassčte claimy z UserInfo NOVĚ: email_verified musí být truechybí nebo false: přihlášení odmítnuto Kontrola povolených doménAllowedEmailDomains Vznikne sessionuživatel je přihlášen předopravou
Zjednodušený nákres přihlašování, ne screenshot. Před opravou šel e-mail z callbacku rovnou do kontroly domén (čárkovaná čára).
Ilustrace Yopass: odkaz Sign in v navigační liště při zapnutém OIDC a před opravou uživatel, jehož e-mail poskytovatel označil za neověřený, který byl přesto přihlášen.
Ilustrace objevu (ne screenshot). (1) Když je OIDC nastavené, v liště se objeví odkaz Sign in. (2) Před opravou se přihlášení s neověřeným e-mailem přesto přijalo.

Jak to bylo opraveno

Naše první záplata odmítala přihlášení s neověřeným e-mailem, zaznamenala pokus do logu a přidala testy. Správce Johan Haals upozornil, že email_verified je nepovinný claim, takže jeho slepé vynucení by mohlo rozbít stávající nasazení. Na našem commitu proto postavil nový pull request, který:

Náš původní commit zůstal prvním commitem toho pull requestu, s naším autorstvím.

Časová osa

Jak to číst

Skener problém našel a člověk, správce projektu, rozhodl, jak ho bezpečně opravit. Přesně takhle to chceme mít: nálezy jsou podněty pro lidi, ne rozsudky. Je to jeden příklad, ne benchmark, a naměřené výsledky zveřejníme, až je budeme mít. Díky Johanu Haalsovi za rychlé a pečlivé zpracování.

Zdroje

← Zpět na příběhy úspěchu