🔍 CVE-2026-57449

0.0
CVSS Score
UNKNOWN
2026-09-25
2026-09-28 14:17
✅ 완료

🇰🇷 한글 설명

Actual Sync Server의 CORS 프록시에서 허용 목록 검증 로직의 결함으로 인해 발생하는 취약점입니다. GitHub 토큰이 설정된 경우, 허용된 저장소 이름으로 시작하는 임의의 GitHub API 요청을 프록시가 승인하여 서버의 GitHub 토큰을 이용해 비공개 리소스에 접근할 수 있습니다. 버전 26.7.0에서 이 문제가 해결되었습니다.

💡 쉬운 설명

허용된 주소인지 확인하는 과정에서 이름의 앞부분만 대충 확인하는 실수가 있었습니다. 이 때문에 공격자가 허용된 주소와 비슷하게 만든 가짜 주소를 통해 서버의 중요한 비밀번호(토큰)를 가로챌 수 있습니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

Actual Sync Server 26.7.0 미만 버전

⚔️ 공격 벡터

허용된 저장소 이름의 접두사를 이용해 검증을 우회하는 GitHub API 요청 전송

🛡️ 대응 방법

Actual Sync Server를 26.7.0 이상의 최신 버전으로 업데이트

🔧 검증 코드

출력된 버전이 26.7.0 미만이면 취약한 상태이며, 26.7.0 이상이면 안전합니다.

Shell / Script
actual-sync-server --version 2>/dev/null || echo 'Check installed version manually'

💻 영향받는 소프트웨어

Git