CVE-2026-54509
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 23 - wyżej niż 23% wszystkich znanych CVE
Streszczenie
TREK to aplikacja do planowania podróży. Od wersji 3.0.0 do 3.1.0 trasa GET /api/journeys/:id/share-link w server/src/routes/journey.ts zwraca wynik getJourneyShareLink() z server/src/services/journeyShareService.ts bez sprawdzenia, czy uwierzytelniony żądający ma dostęp do podróży. Każdy zwykły uwierzytelniony użytkownik może przeglądać sekwencyjne identyfikatory podróży i pobierać tokeny z journey_share_tokens dla podróży innego użytkownika. Token umożliwia nieuwierzytelniony dostęp przez GET /api/public/journey/:token do wpisów, podpisów, lokalizacji, nastrojów, zdjęć galerii, ścieżek zdjęć i identyfikatorów zasobów udostępnionej podróży. Problem naprawiono w wersji 3.1.0.
Ocena ryzyka
Podatność umożliwia nieautoryzowany dostęp do prywatnych danych podróży innych użytkowników, w tym zdjęć i lokalizacji, co narusza poufność i może prowadzić do naruszenia prywatności.
Rekomendacja
Zaktualizuj TREK do wersji 3.1.0 lub nowszej. Dodatkowo sprawdź, czy nie ma nieautoryzowanych dostępów do tokenów udostępniania.
Inne podatności w TREK
Zobacz wszystkie- CVE-2026-78863Średnie
W liketrek TREK do wersji 3.0.22 występuje podatność w funkcji loginUser w pliku server/src/services/authService.ts, w komponencie Pre-2FA mfa_token Handler. Manipulacja prowadzi do nieprawidłowego uwierzytelnienia. Atak może być przeprowadzony zdalnie. Zalecana jest aktualizacja do wersji 3.1.0.
- CVE-2026-62945Średnie
TREK to narzędzie do planowania podróży. Przed wersją 3.1.3, akcje przesyłania, aktualizacji i linkowania plików w TREK akceptują kontrolowane przez atakującego wartości reservation_id, place_id i assignment_id bez użycia findForeignLinkTarget() do weryfikacji, czy odwoływany obiekt należy do podróży pliku. Uwierzytelniony użytkownik z uprawnieniami do edycji plików w dowolnej dostępnej podróży może przesłać obcy identyfikator rezerwacji przez POST /api/trips/:tripId/files/:id/link, POST /api/trips/:tripId/files lub PUT /api/trips/:tripId/files/:id. Kolejne odczyty przez FILE_SELECT lub getFileLinks() łączą obcą rezerwację i zwracają reservation_title, ujawniając istnienie i tytuły rezerwacji poza granicami prywatnych podróży. Problem został naprawiony w wersji 3.1.3.
- CVE-2026-54508Średnie
TREK to aplikacja do planowania podróży. Przed wersją 3.1.0 TREK weryfikuje tylko początkowy URL przed natywnym przekierowaniem w importGoogleList() i importNaverList() w server/src/services/placeService.ts oraz resolveGoogleMapsUrl() w server/src/services/mapsService.ts. Dotknięte funkcje wywołują checkSsrf() z server/src/utils/ssrfGuard.ts, a następnie używają fetch() z redirect: 'follow' zamiast bezpiecznej ścieżki safeFetch() z przypiętym DNS, więc publiczny URL kontrolowany przez atakującego może przekierować serwer na adresy loopback, RFC 1918 lub metadane chmury bez ponownej weryfikacji. Uwierzytelniony członek podróży może uzyskać dostęp do tras importu list, a każdy uwierzytelniony użytkownik może uzyskać dostęp do /api/maps/resolve-url, co pozwala na ślepe żądania GET do wewnętrznych usług bez odbicia treści odpowiedzi. Problem naprawiono w wersji 3.1.0.
- CVE-2026-54505Niskie
TREK przed wersją 3.1.0, gdy włączony jest dodatek Journey, interpoluje nieucieczoną wartość activeSuggestion.title do tekstu sugestii i renderuje ją przez dangerouslySetInnerHTML. Właściciel podróży może przechowywać HTML w tytule, który zostanie wykonany w sesji współpracownika.
- CVE-2026-45410Średnie
W aplikacji TREK przed wersją 3.0.18 wykryto podatność polegającą na różnicy czasu odpowiedzi podczas logowania. Atakujący może wykorzystać tę lukę do enumeracji prawidłowych kont użytkowników, ponieważ brak użytkownika w bazie powoduje natychmiastowy zwrot odpowiedzi (~10 ms), podczas gdy istniejący użytkownik wymaga porównania bcrypt (~370 ms).
Oryginalny opis (angielski, źródło NVD)
TREK is a collaborative travel planner. From 3.0.0 until 3.1.0, the GET /api/journeys/:id/share-link route in server/src/routes/journey.ts returns the result of getJourneyShareLink() from server/src/services/journeyShareService.ts without checking whether the authenticated requester can access the journey. Any ordinary authenticated user can enumerate sequential journey IDs and retrieve tokens from journey_share_tokens for another user's journey. The token grants unauthenticated access through GET /api/public/journey/:token to the shared journey's entries, captions, locations, moods, gallery photos, photo paths, and asset identifiers. This issue is fixed in version 3.1.0.

