CVE-2026-57449
WysokieCVSS 7.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 10 - wyżej niż 10% wszystkich znanych CVE
Streszczenie
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.
- CVE-2026-33318Wysokie
W aplikacji Actual (narzędzie do finansów osobistych) przed wersją 26.4.0 istnieje łańcuch podatności pozwalający uwierzytelnionemu użytkownikowi z rolą BASIC na eskalację do ADMIN na serwerach migrowanych z uwierzytelniania hasłem na OpenID Connect. Luka wynika z braku kontroli autoryzacji w POST /account/change-password, pozostawienia nieaktywnego wiersza hasła po migracji oraz akceptacji przez loginMethod dostarczanego przez klienta. Wszystkie trzy słabości muszą być wykorzystane sekwencyjnie, aby uzyskać eskalację uprawnień.
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

