CVE-2026-10595
CVE-2026-10595 is a path traversal vulnerability in lollms arising from a mismatch between how Starlette normalizes URL paths at the routing layer and how pathlib resolves those paths during filesystem operations. When a catch-all SPA route receives a path like `/..%2f..%2fetc/passwd`, Starlette's normalization passes it through largely untouched because it operates on a different abstraction layer than the filesystem join. The subsequent code uses pathlib to construct the filesystem path, which independently resolves URL-encoded sequences—so the `%2f` becomes `/` and the traversal executes. This is not a hidden interaction; pathlib's behavior is documented. The vulnerability exists because the developer treated the framework's path normalization as a security boundary when it was merely a routing convenience. The SPA catch-all pattern amplifies this: it's added as a convenience for client-side routing without treating it as a filesystem endpoint requiring containment logic. To verify you're affected, check whether any route handlers in your lollms deployment join user-supplied paths to filesystem operations using pathlib or similar constructs—specifically look for `Path(path_variable).join()` or equivalent patterns in route callbacks. The fix in version 3 adds containment checks (validating that the resolved path stays within the intended directory). Until you can upgrade, audit every route that serves files using path parameters and validate that resolved paths cannot escape the intended root using either canonical path comparison or explicit allowlist patterns. The AI platform context matters significantly here—lollms has access to model weights, training data, and API credentials, so a file read vulnerability potentially exposes your core intellectual property, not just system configuration. This changes the priority from 'routine path traversal' to 'critical exposure' regardless of the generic CVSS 7.5 score.
Reviewed through automated stages and approved by a human before publication.