{"id":"CVE-2026-92263","kind":"vulnerability","aliases":["CVE-2026-92263"],"related":[],"title":"SparkyFitness: backup restore filename enables OS command execution by admin","description":"SparkyFitness is a self-hosted, AI-powered health and fitness tracker for families. Prior to 1.6.0, the api/admin/backup/restore endpoint interpolates an uploaded filename into a shell command. An authenticated global administrator uploads a restore archive with a crafted filename. The administrator can supply a restore archive with a filename containing shell metacharacters. Successful exploitation can execute arbitrary operating-system commands with the server process privileges. This issue is fixed in version 1.6.0.","summary":"SparkyFitness, a self-hosted health tracker, builds a shell command from the uploaded restore archive's filename on its admin backup restore endpoint. An authenticated global administrator can embed shell metacharacters in the filename and run arbitrary operating-system commands with the server process's privileges.","severity":"high","cvss":7.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["docker","nodejs","package","self-hosted"],"not_affected_if":["no-admin-exposure","patched-version"],"how_to_check":"- Check the installed SparkyFitness version; versions before `1.6.0` are affected.\n- Confirm whether the instance exposes the `api/admin/backup/restore` endpoint and who holds global administrator accounts.","fix":"- Upgrade SparkyFitness to `1.6.0` or later.\n- Until upgraded, restrict global administrator accounts to trusted people.","status":"open","published_at":"2026-10-16T16:22:43+00:00","first_seen_at":"2026-10-23T21:57:13+00:00","triaged_at":"2026-10-25T03:29:32+00:00","updated_at":"2026-10-25T03:29:32+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:29:32Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade SparkyFitness to `1.6.0` or later.\n- Until upgraded, restrict global administrator accounts to trusted people.","reach":"internet","title":"SparkyFitness: backup restore filename enables OS command execution by admin","impact":"high","summary":"SparkyFitness, a self-hosted health tracker, builds a shell command from the uploaded restore archive's filename on its admin backup restore endpoint. An authenticated global administrator can embed shell metacharacters in the filename and run arbitrary operating-system commands with the server process's privileges.","category":"package","nicknames":[],"who_cares":["self-hosted","nodejs","docker"],"confidence":0.7,"needs_auth":"yes","worst_case":"Server process runs arbitrary OS commands, reading secrets and data.","analyst_note":"","how_to_check":"- Check the installed SparkyFitness version; versions before `1.6.0` are affected.\n- Confirm whether the instance exposes the `api/admin/backup/restore` endpoint and who holds global administrator accounts.","needs_analyst":false,"not_affected_if":["patched-version","no-admin-exposure"],"who_is_affected":"Self-hosted SparkyFitness instances running a version before `1.6.0` are exposed. The attack needs a global administrator account, so the risk sits with whoever can log in as an admin on the instance. Teams using only non-admin accounts on a patched build can skip it.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000607,"input_tokens":3379,"output_tokens":538,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-92263':13A,16A '1.6.0':88C,145C 'admin':10A,43B 'administr':50B,103C,113C 'ai':78C 'ai-pow':77C 'api/admin/backup/restore':90C 'arbitrari':60B,129C 'archiv':38B,107C,118C 'authent':48B,101C 'backup':2A,44B 'build':30B 'command':7A,33B,64B,99C,133C 'contain':122C 'craft':110C 'cve':11A,14A 'docker':17B 'emb':52B 'enabl':5A 'endpoint':46B,91C 'execut':8A,128C 'exploit':126C 'famili':85C 'filenam':4A,40B,57B,95C,111C,121C 'fit':82C 'fix':142C 'global':49B,102C 'health':28B,80C 'host':22B,27B,76C 'interpol':92C 'issu':140C 'metacharact':54B,124C 'nodej':18B 'oper':62B,131C 'operating-system':61B,130C 'os':6A 'packag':19B 'power':79C 'prior':86C 'privileg':70B,138C 'process':68B,137C 'restor':3A,37B,45B,106C,117C 'run':59B 'self':21B,26B,75C 'self-host':20B,25B,74C 'server':67B,136C 'shell':32B,53B,98C,123C 'sparkyfit':1A,23B,71C 'success':125C 'suppli':115C 'system':63B,132C 'tracker':29B,83C 'upload':36B,94C,104C 'version':144C","nicknames":[],"mitigations":[],"who_affected":"Self-hosted SparkyFitness instances running a version before `1.6.0` are exposed. The attack needs a global administrator account, so the risk sits with whoever can log in as an admin on the instance. Teams using only non-admin accounts on a patched build can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T16:22:43+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-92263","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-92263","severity":null,"published_at":"2026-10-16T16:22:43+00:00","modified_at":"2026-10-21T03:17:20+00:00","first_seen_at":"2026-10-23T21:57:13+00:00","fetched_at":"2026-10-23T22:28:55+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}