← Back to CVE Explorer

CVE-2026-10595

Full vulnerability record from the local CVENow database.

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.

Severity
HIGH
CVSS score
7.5 (v3.0)
Vulnerability status
Awaiting Analysis
Source identifier
Published
2026-08-09 04:17:29.400000
Last modified
2026-10-23 20:10:00.160000
View original CVE JSON
{
  "id": "CVE-2026-10595",
  "sourceIdentifier": "[email protected]",
  "published": "2026-08-09T04:17:29.400",
  "lastModified": "2026-10-23T20:10:00.160",
  "vulnStatus": "Awaiting Analysis",
  "cveTags": [],
  "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."
    },
    {
      "lang": "es",
      "value": "Una vulnerabilidad de salto de ruta existe en parisneo/lollms versión 2.1.0, específicamente en la ruta ’catch-all’ de SPA implementada en ’backend/routers/ui.py’. La vulnerabilidad surge del manejo inadecuado de la entrada de ruta controlada por el usuario, que se une directamente a una ruta del sistema de archivos sin saneamiento ni comprobaciones de contención. Las secuencias de doble punto codificadas en URL (’%2e%2e’) eluden la normalización de rutas incorporada de Starlette y son resueltas por ’pathlib’ de Python, permitiendo a un atacante no autenticado leer archivos arbitrarios en el servidor. Este problema ha sido resuelto en la versión 3."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "parisneo",
          "product": "parisneo/lollms",
          "versions": [
            {
              "version": "unspecified",
              "lessThan": "3",
              "versionType": "custom",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV30": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.0",
          "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",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "NONE",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 3.9,
        "impactScore": 3.6
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-10T17:14:57.414907Z",
          "id": "CVE-2026-10595",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-23"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/parisneo/lollms/commit/9bc6431ae7b708da76d51e7626a7cf48ff2b1d24",
      "source": "[email protected]"
    },
    {
      "url": "https://huntr.com/bounties/af3f40a3-38a1-49d8-a5ae-3d72b9b05b98",
      "source": "[email protected]"
    },
    {
      "url": "https://huntr.com/bounties/af3f40a3-38a1-49d8-a5ae-3d72b9b05b98",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
    }
  ]
}