Katalog CVE

CVE-2026-57449

WysokieCVSS 7.1
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

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
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