CVE-2026-63440
ŚrednieCVSS 5.9Streszczenie
W 2FAuth ścieżka pobierania obrazów otpauth waliduje nazwę hosta przez ValidatesUrls::isExternalHost(), a następnie IconService::storeRemoteImage() ponownie rozwiązuje tę samą nazwę hosta dla żądania HTTP. Przy włączonym pobieraniu zewnętrznych obrazów otpauth uwierzytelniony użytkownik kontrolujący autorytatywny DNS o niskim TTL może zwrócić adres publiczny podczas walidacji i adres wewnętrzny podczas późniejszego połączenia, omijając listę blokowanych adresów prywatnych. Pozwala to na dostęp do loopback, sieci prywatnej, link-local lub punktów końcowych metadanych chmury.
Ocena ryzyka
Luka umożliwia atakującemu z kontrolą DNS obejście zabezpieczeń i dostęp do wewnętrznych zasobów sieci, co może skutkować wyciekiem danych lub wykorzystaniem usług metadanych chmury. Ryzyko dotyczy wdrożeń z włączonym pobieraniem zewnętrznych obrazów otpauth.
Rekomendacja
Zaktualizuj 2FAuth do wersji 8.0.0 lub nowszej. W międzyczasie rozważ wyłączenie pobierania zewnętrznych obrazów otpauth, jeśli nie jest to konieczne.
Inne podatności w 2FAuth
Zobacz wszystkie- CVE-2026-63441Średnie
W aplikacji 2FAuth funkcja ValidatesUrls::isPublicIp() nie rozpoznaje prefiksów NAT64 64:ff9b::/96 oraz 64:ff9b:1::/48, co pozwala na obejście walidacji adresów prywatnych. Parametr obrazu w URI otpauth może zawierać adres IPv6 lub adres syntezowany przez DNS64, którego docelowy adres IPv4 jest prywatny, link-local, loopback lub należy do metadanych chmury. W wyniku tego IconService::buildFromRemoteImage() wykonuje żądanie HTTP GET do wewnętrznego celu, umożliwiając odczyt odpowiedzi obrazów lub sondowanie innych punktów końcowych.
- CVE-2026-63437Średnie
W 2FAuth metoda recipients() w app/Api/v1/Controllers/TwoFAccountShareController.php otrzymuje wybrany przez wywołującego TwoFAccount przez powiązanie modelu Laravel, ale nie wywołuje polityki autoryzacji manageShares przed wyświetleniem listy odbiorców. Gdy udostępnianie kont jest włączone, uwierzytelniony użytkownik może wywołać GET /api/v1/twofaccounts/{victimId}/recipients dla kont należących do innych użytkowników, wyliczyć identyfikatory i nazwy wyświetlane zarejestrowanych użytkowników, testować dokładne adresy e-mail za pomocą filter[nameOrEmail] oraz sprawdzać relacje udostępniania każdego konta.
- CVE-2026-63439Krytyczne
2FAuth przed wersją 8.0.0 przy włączonym AUTHENTICATION_GUARD=reverse-proxy-guard odczytuje domyślny nagłówek tożsamości REMOTE_USER lub niestandardowy nagłówek wskazany w AUTH_PROXY_HEADER_FOR_USER bez potwierdzenia, że żądanie pochodzi z zaufanego proxy. Zdalny klient mogący dotrzeć bezpośrednio do aplikacji może sfałszować nagłówek tożsamości i uwierzytelnić się jako istniejący użytkownik, w tym administrator.
- CVE-2026-63438Krytyczne
2FAuth przed wersją 8.0.0 przy AUTHENTICATION_GUARD=reverse-proxy-guard akceptuje nagłówki uwierzytelniania od klienta, który nie przeszedł przez zaufane proxy; RemoteUserProvider::retrieveById() tworzy konto dla nieznanego REMOTE_USER, awansuje pierwsze utworzone konto na administratora i synchronizuje e-mail z nagłówka poczty. Nieuwierzytelniony zdalny klient może utworzyć administratora na świeżej instancji lub podszyć się pod znane konto i przekierować jego e-mail.
Oryginalny opis (angielski, źródło NVD)
2FAuth is a web app to manage Two-Factor Authentication (2FA) accounts and generate their security codes. Prior to 8.0.0, the otpauth image-fetch path validates a hostname through ValidatesUrls::isExternalHost() and then lets IconService::storeRemoteImage() resolve the same hostname again for the HTTP request. When external otpauth image fetching is enabled, an authenticated user controlling low-TTL authoritative DNS can return a public address during validation and an internal address during the later connection, bypassing the private-address deny list to reach loopback, private-network, link-local, or cloud metadata endpoints. This issue is fixed in version 8.0.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

