{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-102923", "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "state": "PUBLISHED", "assignerShortName": "GitHub_M", "dateReserved": "2026-09-29T20:24:43.339Z", "datePublished": "2026-10-16T15:53:05.454Z", "dateUpdated": "2026-10-16T15:53:05.454Z" }, "containers": { "cna": { "title": "SparkyFitness: SSRF via unvalidated custom_url in AI service settings", "problemTypes": [ { "descriptions": [ { "cweId": "CWE-918", "lang": "en", "description": "CWE-918: Server-Side Request Forgery (SSRF)", "type": "CWE" } ] } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "LOW", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 5.4, "baseSeverity": "MEDIUM", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "privilegesRequired": "LOW", "scope": "UNCHANGED", "userInteraction": "NONE", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N", "version": "3.1" } } ], "references": [ { "name": "https://github.com/CodeWithCJ/SparkyFitness/security/advisories/GHSA-rmxj-43xh-mcm3", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/CodeWithCJ/SparkyFitness/security/advisories/GHSA-rmxj-43xh-mcm3" }, { "name": "https://github.com/CodeWithCJ/SparkyFitness/commit/0b43a37003a3fbedf4e38058130460fd4707fe29", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/CodeWithCJ/SparkyFitness/commit/0b43a37003a3fbedf4e38058130460fd4707fe29" }, { "name": "https://github.com/CodeWithCJ/SparkyFitness/releases/tag/v1.6.0", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/CodeWithCJ/SparkyFitness/releases/tag/v1.6.0" } ], "affected": [ { "vendor": "CodeWithCJ", "product": "SparkyFitness", "versions": [ { "version": "< 1.6.0", "status": "affected" } ] } ], "providerMetadata": { "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M", "dateUpdated": "2026-10-16T15:53:05.454Z" }, "descriptions": [ { "lang": "en", "value": "SparkyFitness is a self-hosted, AI-powered health and fitness tracker for families. Prior to 1.6.0, SparkyFitnessServer/services/chatService.ts and SparkyFitnessServer/services/labelScanService.ts do not validate destinations supplied in custom AI service settings. An authenticated user saves a custom AI service URL and invokes an affected AI flow. The user can save a custom AI service URL and trigger an outbound request. Successful exploitation can send server-side POST requests with a controlled bearer value, probe internal services, and disclose the AI system prompt. This issue is fixed in version 1.6.0." } ], "source": { "advisory": "GHSA-rmxj-43xh-mcm3", "discovery": "UNKNOWN" } } } }