CVE-2026-77352
ŚrednieCVSS 4.3Streszczenie
Wallos od wersji 2.0.0 do przed 5.0.0 pozwala każdemu uwierzytelnionemu użytkownikowi (bez uprawnień administratora) na zmuszenie serwera do nawiązywania dowolnych połączeń SMTP do adresów wewnętrznych lub link-local, poprzez ustawienie hosta SMTP w ustawieniach powiadomień e-mail na wewnętrzny adres IP. Brak walidacji SSRF w punkcie końcowym zapisu ustawień oraz w cronie powiadomień prowadzi do połączeń z wybranym hostem i portem.
Ocena ryzyka
Atakujący może wykorzystać serwer do skanowania sieci wewnętrznej lub atakowania innych usług, co może prowadzić do naruszenia bezpieczeństwa infrastruktury.
Rekomendacja
Zaktualizuj Wallos do wersji 5.0.0, która zawiera poprawkę blokującą tę podatność SSRF.
Inne podatności w Wallos
Zobacz wszystkie- CVE-2026-77353Średnie
Wallos przed wersją 5.0.0 pozwala uwierzytelnionym użytkownikom na wstrzykiwanie dowolnych właściwości i zdarzeń iCalendar do eksportowanego pliku .ics poprzez osadzenie surowych sekwencji CRLF w nazwach lub notatkach subskrypcji. Atakujący może przełamać bieżący blok VEVENT i wstawić kontrolowane zdarzenia kalendarza, w tym sfałszowanych organizatorów i adresy e-mail, do dowolnej aplikacji kalendarza subskrybującej ten kanał.
- CVE-2026-77351Niskie
Wallos przed wersją 5.0.0 pozwala każdemu uwierzytelnionemu użytkownikowi na zapisanie dowolnego hosta SMTP (w tym prywatnych adresów IP i adresów metadanych chmury) w ustawieniach powiadomień e-mail, bez walidacji SSRF po stronie serwera. Gdy zadanie cron uruchamia powiadomienia, przekazuje zapisany host bezpośrednio do PHPMailer, co powoduje, że serwer Wallos otwiera połączenie TCP do wskazanego adresu. Umożliwia to atakującemu z niskimi uprawnieniami skanowanie wewnętrznych usług sieciowych z perspektywy serwera. Problem naprawiono w wersji 5.0.0.
- CVE-2026-77348Wysokie
Wallos przed wersją 5.0.0 zawiera drugi, prawie identyczny, nieuwierzytelniony endpoint wyszukiwania logo (endpoints/payments/search.php), który nie został zabezpieczony przed SSRF. Przekazuje on zmienną środowiskową HTTP_PROXY/HTTPS_PROXY bezpośrednio do CURLOPT_PROXY.
- CVE-2026-61641Wysokie
Wallos to otwartoźródłowy, samodzielnie hostowany tracker subskrypcji. Od wersji 4.0.0 do przed 4.9.6, logowanie OIDC w Wallos łączy przychodzącą tożsamość OIDC z istniejącym lokalnym kontem, dopasowując wyłącznie adres e-mail, bez weryfikacji, czy IdP oznaczył ten e-mail jako zweryfikowany (email_verified). Gdy Wallos jest skonfigurowany z IdP, który pozwala użytkownikowi przedstawić dowolny lub niezweryfikowany e-mail (IdP wielodostępne, IdP z otwartą samorejestracją lub dowolny IdP częściowo kontrolowany przez atakującego), atakujący bez konta Wallos może uwierzytelnić się przy użyciu e-maila administratora i zalogować się jako administrator — pełne przejęcie konta bez hasła. Problem naprawiono w wersji 4.9.6.
- CVE-2026-61640Wysokie
Wallos to otwartoźródłowy, samodzielnie hostowany tracker subskrypcji. Przed wersją 4.9.6, skonfigurowane przez administratora adresy URL token_url i user_info_url OIDC w includes/oidc/handle_oidc_callback.php:18-49 są używane bezpośrednio w curl_init() bez żadnego filtrowania SSRF. W przeciwieństwie do adresów URL logo/webhook, które mają validate_webhook_url_for_ssrf(), adresy URL OIDC omijają wszystkie zabezpieczenia. Administrator może ustawić URL na http://169.254.169.254/latest/meta-data/ w celu uzyskania dostępu do metadanych chmury lub wewnętrznego przeskoku sieciowego. Problem naprawiono w wersji 4.9.6.
- CVE-2026-61639Wysokie
Wallos przed wersją 4.9.6 zawiera podatność na zapis plików poza katalogiem docelowym (path traversal) w punkcie końcowym POST /endpoints/db/restore.php. Funkcja ZipArchive::extractTo() nie sprawdza nazw wpisów pod kątem sekwencji '../', co pozwala administratorowi na przesłanie spreparowanego archiwum ZIP z plikiem logos/../../endpoints/shell.php, co skutkuje zapisaniem webshella w katalogu głównym serwera. Filtr rozszerzeń dotyczy tylko kopiowania logo po ekstrakcji, więc nie chroni przed tym atakiem.
- CVE-2026-61638Wysokie
Wallos przed wersją 4.9.6 zawiera podatność na SSRF (Server-Side Request Forgery) w punkcie końcowym POST /endpoints/notifications/testemailnotifications.php. Parametry smtpaddress i smtpport są pobierane z ciała żądania bez żadnej walidacji SSRF, a PHPMailer łączy się z hostem i portem podanym przez atakującego. Inne punkty końcowe powiadomień używają ssrf_helper.php, ale ten został pominięty. Każdy uwierzytelniony użytkownik może skanować sieć wewnętrzną i uzyskać dostęp do metadanych chmury.
- CVE-2026-54600Wysokie
Wallos przed wersją 4.9.4 zawiera podatność polegającą na braku uwierzytelnienia w punkcie końcowym endpoints/db/import.php. Jedyną ochroną jest liczba wierszy w tabeli użytkowników – jeśli wynosi zero (świeża lub niekonfigurowana instalacja), nieuwierzytelniony atakujący może zastąpić całą bazę danych.
- CVE-2026-54599Wysokie
Wallos przed wersją 4.9.4 zawiera podatność w mechanizmie OIDC (OpenID Connect). login.php generuje nonce stanu OIDC przechowywany w $_SESSION['oidc_state'], ale checksession.php obsługuje callback OIDC bez porównania przychodzącego stanu z wartością sesji. Atakujący może nakłonić ofiarę do odwiedzenia spreparowanego URL, co powoduje, że Wallos wymienia kod autoryzacyjny atakującego i loguje ofiarę na konto atakującego.
- CVE-2026-54598Wysokie
Wallos przed wersją 4.9.4 zawiera podatność polegającą na braku uwierzytelnienia w punkcie końcowym endpoints/db/migrate.php. Ten punkt wykonuje migracje schematu bazy danych po wywołaniu przez HTTP. Każdy nieuwierzytelniony atakujący może wywołać oczekujące pliki migracji na żywej bazie danych SQLite.
Oryginalny opis (angielski, źródło NVD)
Wallos is an open-source, self-hostable personal subscription tracker. From version 2.0.0 to before version 5.0.0, any authenticated Wallos user (no admin rights required) can make the server open arbitrary outbound SMTP connections to internal/link-local addresses, by setting the SMTP host of their personal email notifications to an internal IP. The per-user notification settings endpoint (endpoints/notifications/saveemailnotifications.php) performs no SSRF validation, and the notification cron (endpoints/cronjobs/sendnotifications.php) feeds that user-controlled host straight into PHPMailer ($mail->Host = $email['smtpAddress']). When the user's subscription notification fires, the server connects to the chosen host:port. This issue has been patched in version 5.0.0.

