{"id":"CVE-2026-54380","kind":"vulnerability","aliases":["CVE-2026-54380"],"related":[],"title":"VitaFit cloud API: stored XSS via uploaded SVG images","description":"VitaFit cloud API before 2026-10-30 contained a stored cross-site scripting vulnerability that allows authenticated attackers to upload an SVG image containing malicious JavaScript to the shared storage bucket. Attackers can exploit the application's failure to restrict scripts or force downloads for image/svg+xml content, causing the JavaScript to execute when a victim opens the file via direct browser navigation.","summary":"The VitaFit cloud API before 2026-10-30 lets an authenticated user upload an SVG image containing JavaScript to the shared storage bucket. When a victim opens the file directly in a browser, the script runs, because the service does not block scripts or force downloads for image/svg+xml content.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["cloud-api","stored-xss","vendor","vitafit"],"not_affected_if":["no-vitafit-use"],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-11-04T22:18:06+00:00","first_seen_at":"2026-11-04T23:08:49+00:00","triaged_at":"2026-11-04T23:10:04+00:00","updated_at":"2026-11-04T23:10:04+00:00","category":"vendor","confidence":0.6,"triage":{"at":"2026-11-04T23:10:04Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"VitaFit cloud API: stored XSS via uploaded SVG images","impact":"medium","summary":"The VitaFit cloud API before 2026-10-30 lets an authenticated user upload an SVG image containing JavaScript to the shared storage bucket. When a victim opens the file directly in a browser, the script runs, because the service does not block scripts or force downloads for image/svg+xml content.","audience":"businesses","category":"vendor","nicknames":[],"who_cares":["vitafit","cloud-api","stored-xss"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"Script runs in a victim's browser when they open an uploaded file","analyst_note":"Confirm the fixed version or vendor patch and how to check exposure; source only gives NVD and VulnCheck advisory.","how_to_check":"unknown","plain_action":"","needs_analyst":true,"not_affected_if":["no-vitafit-use"],"who_is_affected":"Applications and users of the VitaFit cloud API that serve user-uploaded files from the shared storage bucket are exposed to the stored script. The sources do not say which API versions or deployments are affected beyond the 2026-10-30 date, so the vendor's status is needed to confirm who is exposed. Teams that do not use VitaFit can skip it.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000685,"input_tokens":4288,"output_tokens":513,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-10':30B,79C '-2026':11A,14A '-30':31B,80C '-54380':12A,15A '2026':29B,78C 'allow':90C 'api':3A,18B,27B,76C 'applic':110C 'attack':92C,106C 'authent':34B,91C 'block':65B 'browser':56B,136C 'bucket':46B,105C 'caus':123C 'cloud':2A,17B,26B,75C 'cloud-api':16B 'contain':40B,81C,98C 'content':73B,122C 'cross':85C 'cross-sit':84C 'cve':10A,13A 'direct':53B,135C 'download':69B,118C 'execut':127C 'exploit':108C 'failur':112C 'file':52B,133C 'forc':68B,117C 'imag':9A,39B,97C 'image/svg':71B,120C 'javascript':41B,100C,125C 'let':32B 'malici':99C 'navig':137C 'open':50B,131C 'restrict':114C 'run':59B 'script':58B,66B,87C,115C 'servic':62B 'share':44B,103C 'site':86C 'storag':45B,104C 'store':4A,20B,83C 'stored-xss':19B 'svg':8A,38B,96C 'upload':7A,36B,94C 'user':35B 'vendor':22B 'via':6A,134C 'victim':49B,130C 'vitafit':1A,23B,25B,74C 'vulner':88C 'xml':72B,121C 'xss':5A,21B","nicknames":[],"mitigations":[],"who_affected":"Applications and users of the VitaFit cloud API that serve user-uploaded files from the shared storage bucket are exposed to the stored script. The sources do not say which API versions or deployments are affected beyond the 2026-10-30 date, so the vendor's status is needed to confirm who is exposed. Teams that do not use VitaFit can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["cloudapi","medium","storedxss","vendor","vitafit"],"campaign_type":null,"first_public_at":"2026-11-04T22:18:06+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-54380","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54380","severity":null,"published_at":"2026-11-04T22:18:06+00:00","modified_at":"2026-11-04T22:18:06+00:00","first_seen_at":"2026-11-04T23:08:49+00:00","fetched_at":"2026-11-04T23:08:49+00:00","note":null}],"documents":[{"id":71160,"url":"https://www.vulncheck.com/advisories/vitafit-cloud-api-stored-xss-via-svg-file-upload","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"exploit_sources":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}