Executive brief
Actual Sync Server is a backend service that handles file synchronization for the Actual personal finance application. An authenticated user can exploit improper validation of file upload requests to write files outside the intended directory, potentially compromising the integrity of the server's filesystem. This allows an attacker with a valid account to place malicious files in arbitrary locations on the system.
Technical details
Actual Sync Server contains a path traversal vulnerability (CWE-22) in the file upload endpoint POST /sync/upload-user-file. The vulnerability stems from insufficient validation of the user-supplied x-actual-file-id header, which allows attackers to inject traversal sequences (../) to escape the intended userFiles directory. An authenticated attacker can exploit this to write files to arbitrary locations on the filesystem outside the restricted directory. The vulnerability requires valid credentials to exploit (authentication is required) but no user interaction. The attack vector is network-accessible. A filesystem sandbox can mitigate the risk in unpatched versions. The vulnerability has been fixed in version 26.3.0 and later through proper file ID validation.
Affected products
- Actual Budget @actual-app/sync-server <= 26.2.0
Timeline
- 2026-03-07: disclosed
- 2026-03-10: patched: Fixed in version 26.3.0