{"id":"CVE-2026-10595","state":"PUBLISHED","title":"Path Traversal Vulnerability in parisneo/lollms","description":"A path traversal vulnerability exists in parisneo/lollms version 2.1.0, specifically in the SPA catch-all route implemented in `backend/routers/ui.py`. The vulnerability arises from the improper handling of user-controlled path input, which is directly joined into a filesystem path without sanitization or containment checks. URL-encoded dot-dot sequences (`%2e%2e`) bypass Starlette's built-in path normalization and are resolved by Python's `pathlib`, allowing an unauthenticated attacker to read arbitrary files on the server. This issue has been resolved in version 3.","publishedAt":"2026-08-09T03:52:26.218Z","updatedAt":"2026-08-10T17:22:50.879Z","severity":{"score":7.5,"label":"High","version":"3.0","vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","source":"@huntr_ai"},"assigner":"@huntr_ai","products":["parisneo parisneo/lollms"],"affected":[{"vendor":"parisneo","product":"parisneo/lollms","versions":[{"version":"unspecified","status":"affected","lessThan":"3","versionType":"custom"}]}],"references":["https://huntr.com/bounties/af3f40a3-38a1-49d8-a5ae-3d72b9b05b98","https://github.com/parisneo/lollms/commit/9bc6431ae7b708da76d51e7626a7cf48ff2b1d24"],"weaknesses":["CWE-23"],"ingestedAt":"2026-10-29T20:10:33.477Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/10xxx/CVE-2026-10595.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-10595","state":"PUBLISHED","datePublished":"2026-08-09T03:52:26.218Z","dateUpdated":"2026-08-10T17:22:50.879Z","assignerShortName":"@huntr_ai","assignerOrgId":"c09c270a-b464-47c1-9133-acb35b22c19a","dateReserved":"2026-06-01T23:37:24.687Z"},"containers":{"cna":{"title":"Path Traversal Vulnerability in parisneo/lollms","descriptions":[{"lang":"en","value":"A path traversal vulnerability exists in parisneo/lollms version 2.1.0, specifically in the SPA catch-all route implemented in `backend/routers/ui.py`. The vulnerability arises from the improper handling of user-controlled path input, which is directly joined into a filesystem path without sanitization or containment checks. URL-encoded dot-dot sequences (`%2e%2e`) bypass Starlette's built-in path normalization and are resolved by Python's `pathlib`, allowing an unauthenticated attacker to read arbitrary files on the server. This issue has been resolved in version 3."}],"affected":[{"vendor":"parisneo","product":"parisneo/lollms","versions":[{"version":"unspecified","status":"affected","lessThan":"3","versionType":"custom"}]}],"references":[{"url":"https://huntr.com/bounties/af3f40a3-38a1-49d8-a5ae-3d72b9b05b98"},{"url":"https://github.com/parisneo/lollms/commit/9bc6431ae7b708da76d51e7626a7cf48ff2b1d24"}],"metrics":[{"cvssV3_0":{"version":"3.0","attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","confidentialityImpact":"HIGH","integrityImpact":"NONE","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","baseScore":7.5,"baseSeverity":"HIGH"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-23","type":"CWE","lang":"en","description":"CWE-23 Relative Path Traversal"}]}],"providerMetadata":{"shortName":"@huntr_ai","orgId":"c09c270a-b464-47c1-9133-acb35b22c19a","dateUpdated":"2026-08-09T03:52:26.218Z"},"source":{"advisory":"af3f40a3-38a1-49d8-a5ae-3d72b9b05b98","discovery":"EXTERNAL"}},"adp":[{"title":"CISA ADP Vulnrichment","references":[{"url":"https://huntr.com/bounties/af3f40a3-38a1-49d8-a5ae-3d72b9b05b98","tags":["exploit"]}],"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-10T17:14:57.414907Z","id":"CVE-2026-10595","options":[{"Exploitation":"poc"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-08-10T17:22:50.879Z"}}]}}}