CVE-2026-100711
WysokieCVSS 7.5Streszczenie
Froxlor przed wersją 2.3.12 nie unieważnia istniejących sesji panelu, kluczy API i ciasteczek zaufania 2FA po zmianie hasła użytkownika. Atakujący posiadający przejęte sesje, ważne klucze API lub tokeny zaufania 2FA zachowują pełny dostęp do konta po rotacji hasła, omijając działania związane z reagowaniem na incydenty.
Ocena ryzyka
Ryzyko obejmuje utrzymanie nieautoryzowanego dostępu do kont nawet po zmianie hasła, co może prowadzić do długotrwałej kompromitacji i utrudniać reagowanie na incydenty.
Rekomendacja
Zaleca się aktualizację Froxlor do wersji 2.3.12 lub nowszej oraz wymuszenie wylogowania wszystkich sesji i unieważnienia kluczy API po zmianie hasła.
Inne podatności w Froxlor
Zobacz wszystkie- CVE-2026-100712Średnie
Froxlor do wersji 2.3.10 wyłącza dwuskładnikowe uwierzytelnianie (2FA) użytkownika natychmiast po nieuwierzytelnionym żądaniu GET do strony zarządzania 2FA (np. /customer_index.php?page=2fa&action=delete), bez potwierdzenia, ponownego uwierzytelnienia ani tokena CSRF. Globalny middleware CSRF obejmuje tylko żądania POST/PUT/PATCH/DELETE, a ciasteczko sesji ma SameSite=Lax, więc nawigacja między witrynami (kliknięcie linku lub przekierowanie) przenosi sesję ofiary i cicho czyści type_2fa/data_2fa. Dotyczy to zarówno handlerów 2FA klienta, jak i administratora. Atakujący, który zwabi zalogowanego użytkownika panelu do kliknięcia spreparowanego linku, redukuje konto do uwierzytelniania tylko hasłem, co można połączyć z przejętym hasłem do przejęcia konta. Naprawione w 2.3.12.
- CVE-2026-100708Wysokie
Froxlor przed wersją 2.3.13 zwraca kolumnę ssl_key_file — która przechowuje surową zawartość prywatnego klucza TLS w formacie PEM — bezpośrednio w odpowiedziach JSON poleceń API Certificates.get i Certificates.listing, ponieważ wyniki zapytań domain_ssl_settings są przekazywane przez ApiCommand::response() bez żadnego usuwania pól ani listy dozwolonych. Nisko uprzywilejowany uwierzytelniony klient API może pobrać klucze prywatne certyfikatów swoich domen, w tym klucze Let's Encrypt generowane przez Froxlor po stronie serwera i przechowywane z uprawnieniami root-only (0600), do których klient nie ma dostępu do systemu plików; konta reseller i customers_see_all admin mogą zrzucić klucze prywatne innych podmiotów przez ten sam mechanizm. Ujawnione klucze umożliwiają podszywanie się pod domenę, pasywne deszyfrowanie przechwyconego ruchu TLS oraz aktywne ataki typu man-in-the-middle.
- CVE-2026-100717Krytyczne
Froxlor w wersjach 2.3.10 i wcześniejszych zawiera niekompletną poprawkę podatności GHSA-c3p2 — funkcja Validate::validateUrl odrzuca znaki CR/LF tylko w ścieżce, zapytaniu i fragmencie, a nie sprawdza części userinfo (user:pass@). Uwierzytelniony klient z uprawnieniami do tworzenia subdomen może podać adres URL przekierowania subdomeny z ładunkiem CR/LF w części userinfo, który przechodzi walidację i jest zapisywany dosłownie w konfiguracji vhost nginx lub Apache. Froxlor regeneruje i przeładowuje konfigurację jako root, więc wstrzyknięte dyrektywy działają w całym serwerze.
- CVE-2026-100716Krytyczne
Froxlor w wersjach 2.3.10 i wcześniejszych zawiera niekompletną poprawkę podatności GHSA-75h4-... — cron eksportu danych klienta (DataDump) nie waliduje pośrednich komponentów ścieżki docelowej. Funkcja Froxlor\FileDir::makeCorrectDir() ma błąd off-by-one w przechodzeniu komponentów ścieżki, pomijając pierwszy segment poniżej katalogu domowego klienta, a zabezpieczenie w ExportCron.php sprawdza tylko ostatni komponent przez is_link(). Uwierzytelniony klient z włączonym eksportem może zaplanować eksport do podkatalogu swojego webspace, a następnie zastąpić pośredni komponent ścieżki dowiązaniem symbolicznym przed uruchomieniem crona jako root. Wtedy 'chown -R' rekurencyjnie zmienia właściciela drzewa katalogów (np. /etc) na UID klienta, co prowadzi do przejęcia uprawnień roota i kompromitacji między dzierżawcami.
- CVE-2026-100715Krytyczne
Froxlor w wersjach do 2.3.10 jest podatny na dowolne usuwanie plików poprzez podążanie za dowiązaniami symbolicznymi w zadaniu cron usuwania danych FTP. Zadanie cron 8 (deleteFtpData), kolejkowane przy usuwaniu konta FTP, wywołuje FileDir::makeCorrectDir() bez argumentu $fixed_homedir, więc przechodzenie komponentów ścieżki jest pomijane, a następnie wykonuje 'rm -rf' jako root na wynikowej ścieżce z jedynie tekstowymi zabezpieczeniami. Ponieważ makeCorrectDir() dodaje końcowy ukośnik, GNU rm podąża za dowiązaniem symbolicznym użytym jako pośredni lub końcowy komponent ścieżki. Uwierzytelniony klient mogący zapisywać w katalogu domowym FTP może umieścić dowiązanie symboliczne między wstawieniem zadania a wykonaniem crona, powodując rekurencyjne usunięcie dowolnych drzew katalogów przez zadanie roota.
- CVE-2026-100714Krytyczne
Froxlor w wersjach przed 2.3.12 nie ogranicza ani nie escapuje ustawienia system.letsencryptchallengepath — w przeciwieństwie do innych ustawień wzmocnionych w GHSA-33mp, pole nie ma zabezpieczenia string_regexp ani required_otp, a jego wartość jest dołączana bez escapowania do wiersza poleceń acme.sh budowanego w lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php i wykonywanego przez cron roota przez FileDir::safe_exec. Ponieważ safe_exec blokuje tylko metaznaki powłoki takie jak ; | & > < \ $ ~ ?, spacje i cudzysłowy przechodzą, a wartość jest dzielona na dodatkowe argumenty acme.sh. Administrator lub dowolny podmiot mogący zapisywać ustawienia (np. przez API importu ustawień) może wstrzyknąć opcje acme.sh takie jak --renew-hook, --pre-hook lub --post-hook, aby uzyskać wykonanie dowolnych poleceń jako root przy następnym uruchomieniu crona Let's Encrypt, albo użyć --config-home/--cert-home do zapisu dowolnych plików.
- CVE-2026-90937Krytyczne
Froxlor w wersjach przed 2.2.5 nie waliduje znaków nowej linii w adresach URL przekierowań subdomen, co pozwala uwierzytelnionym klientom wstrzyknąć dowolne dyrektywy konfiguracji nginx lub Apache. Złośliwe adresy URL z literalnymi znakami nowej linii są zapisywane dosłownie do plików konfiguracji vhost podczas przebudowy cron, umożliwiając uszkodzenie konfiguracji serwera WWW, atak odmowy usługi lub przejęcie odpowiedzi HTTP dla hostowanych domen.
- CVE-2026-62988Krytyczne
Froxlor 2.3.7 do 2.3.8 w poleceniach API Customers.get, Customers.listing, Admins.get, Admins.listing, Ftps.get i Ftps.listing zwraca pełne wiersze bazy danych bez usuwania pól haseł i data_2fa. Uwierzytelniony wywołujący API z uprawnieniami do tych punktów końcowych może uzyskać hasze haseł klientów, administratorów i FTP oraz zakodowane w Base32 sekrety TOTP dla kont administratorów i klientów. Hasze haseł można złamać offline, a sekrety TOTP mogą generować ważne kody drugiego czynnika, dopóki uwierzytelnianie dwuskładnikowe nie zostanie zresetowane. Ujawnienie obu wartości dla konta może umożliwić przejęcie panelu hostingowego lub hostowanych zasobów i może pokonać oba czynniki uwierzytelniania. Problem naprawiono w wersji 2.3.8.
- CVE-2015-5959Krytyczne
Froxlor w wersji przed 0.9.33.2 z domyślną konfiguracją może umożliwić zdalnym atakującym uzyskanie hasła do bazy danych poprzez odczytanie pliku /logs/sql-error.log.
- CVE-2016-5100Krytyczne
Froxlor w wersjach przed 0.9.35 wykorzystuje funkcję PHP rand do generowania liczb losowych, co ułatwia zdalnym atakującym odgadnięcie tokena resetowania hasła poprzez przewidywanie wartości.
Oryginalny opis (angielski, źródło NVD)
froxlor versions before 2.3.12 fail to invalidate existing panel sessions, API keys, and 2FA trust cookies when a user password is changed. Attackers holding hijacked sessions, valid API keys, or 2FA trust tokens retain full account access after password rotation, bypassing incident response actions.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

