CVE-2026-41687
ŚrednieCVSS 4.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 10 - wyżej niż 10% wszystkich znanych CVE
Streszczenie
W Wallos przed wersją 4.8.1 ochrona SSRF w endpoints/subscription/add.php i endpoints/payments/add.php nie blokuje adresów CGNAT (100.64.0.0/10, RFC 6598). Uwierzytelnieni użytkownicy mogą wykonywać Blind SSRF do usług wewnętrznych w środowiskach Tailscale, Carrier-Grade NAT i innych. Problem naprawiono w wersji 4.8.1.
Ocena ryzyka
Uwierzytelniony użytkownik może sondować i uzyskiwać dostęp do usług wewnętrznych, co może prowadzić do ujawnienia informacji lub dalszych ataków w sieci.
Rekomendacja
Zaktualizuj Wallos do wersji 4.8.1 lub nowszej, która poprawnie blokuje zakres CGNAT w walidacji adresów URL.
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-77352Średnie
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.
- 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.
Oryginalny opis (angielski, źródło NVD)
Wallos is an open-source, self-hostable personal subscription tracker. Prior to version 4.8.1, the SSRF protection in endpoints/subscription/add.php (line 42) and endpoints/payments/add.php (line 40) uses an inline IP validation check (FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) that does not block CGNAT addresses (100.64.0.0/10, RFC 6598). The includes/ssrf_helper.php file explicitly defines is_cgnat_ip() to cover this gap (used by notification endpoints), but the logo/icon URL fetching in subscription and payment endpoints performs its own inline validation that misses this range. This allows authenticated users to perform Blind SSRF to internal services in Tailscale, Carrier-Grade NAT, and other environments using 100.64.0.0/10 addresses. This issue has been patched in version 4.8.1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

