CVE-2026-57449
WysokieCVSS 7.1Streszczenie
Actual to lokalne narzędzie do finansów osobistych. Przed wersją 26.7.0 serwer synchronizacji Actual ma proxy CORS, które ma umożliwiać uwierzytelnionym użytkownikom pobieranie zasobów tylko z repozytoriów z oficjalnej listy dozwolonych wtyczek. Gdy skonfigurowano ACTUAL_GITHUB_TOKEN, proxy automatycznie dołącza token GitHub serwera do żądań GitHub. Sprawdzanie listy dozwolonych używa surowego testu prefiksu startsWith() dla /repos/{owner}/{repo} bez wymagania granicy ścieżki po nazwie repozytorium. Jeśli dozwolone repozytorium to https://github.com/acme/plugin, proxy akceptuje również adresy URL API GitHub, które są poza dozwolonym repozytorium, ale przechodzą, ponieważ ich ścieżka API zaczyna się od /repos/acme/plugin. Proxy przekazuje żądanie z tokenem ACTUAL_GITHUB_TOKEN, umożliwiając każdemu uwierzytelnionemu użytkownikowi Actual odczyt prywatnych zasobów GitHub dostępnych dla tego tokena. Wersja 26.7.0 naprawia problem.
Ocena ryzyka
Ryzyko wycieku prywatnych danych z GitHub, do których dostęp ma token serwera, co może prowadzić do naruszenia poufności repozytoriów i powiązanych zasobów.
Rekomendacja
Zaleca się aktualizację Actual do wersji 26.7.0 lub nowszej oraz przegląd konfiguracji tokena GitHub, aby ograniczyć jego uprawnienia.
Inne podatności w Actual
Zobacz wszystkie- CVE-2026-50179Średnie
W narzędziu Actual do 26.6.0 funkcje eksportu do CSV nie neutralizują formuł, co pozwala na wstrzyknięcie złośliwych formuł (np. zaczynających się od =, +, -) do plików CSV. Po otwarciu w Excelu, LibreOffice Calc lub Arkuszach Google formuły te są wykonywane, umożliwiając wyciek danych transakcji i manipulację wyświetlanymi wartościami.
- CVE-2026-49229Wysokie
W aplikacji Actual w trybie wieloużytkownikowym OpenID, dezaktywacja użytkownika blokuje jedynie przyszłe logowanie przez OpenID, ale istniejące tokeny sesji pozostają ważne. Brak weryfikacji statusu użytkownika podczas walidacji sesji pozwala dezaktywowanemu użytkownikowi na dalsze wywoływanie uwierzytelnionych endpointów serwera.
- CVE-2026-50007Wysokie
W aplikacji Actual do 26.7.0 brak autoryzacji umożliwia współdzielonemu użytkownikowi z dostępem do pliku budżetu wykonywanie operacji zarządzania plikami zarezerwowanych dla właściciela. Użytkownik niebędący właścicielem może wywoływać endpointy takie jak /delete-user-file, /reset-user-file i /user-create-key, ponieważ funkcja requireFileAccess traktuje zwykły dostęp współdzielony jako wystarczający dla tych operacji.
Oryginalny opis (angielski, źródło NVD)
Actual is a local-first personal finance tool. Prior to 26.7.0, Actual Sync Server's CORS proxy is intended to let authenticated users fetch resources only from repositories listed in the official plugin allowlist. When `ACTUAL_GITHUB_TOKEN` is configured, the proxy automatically attaches the server's GitHub token to GitHub requests. The GitHub API allowlist check uses a raw `startsWith()` prefix test for `/repos/{owner}/{repo}` without requiring a path boundary after the repository name. If an allowlisted public plugin repository is `https://github.com/acme/plugin`, the proxy also accepts GitHub API URLs. Those URLs are outside the allowlisted repository but still pass because their API path starts with `/repos/acme/plugin`. The proxy then forwards the request with the server's `ACTUAL_GITHUB_TOKEN`, allowing any authenticated Actual user to read private GitHub resources reachable by that token. Version 26.7.0 fixes the issue.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

