← Back to CVE Explorer

CVE-2026-62663

Full vulnerability record from the local CVENow database.

Description

Banks generates meaningful LLM prompts using a simple template language. In versions prior to 2.4.4, all four media filters (image, audio, video, document) in banks accept untrusted user input as file paths via Path(value) and pass them directly to open(file_path, "rb") without any path sanitization, canonicalization, or directory restriction. An attacker who controls template variables passed to a banks Prompt can use path traversal (../) to read arbitrary files accessible to the Python process—including .env files, SSH keys, cloud credentials, source code, /etc/passwd, and /etc/shadow—with the content returned base64-encoded in the rendered prompt output, making exfiltration trivial. This is particularly dangerous for applications that use banks to process user-provided template variables before sending prompts to an LLM. This issue has been fixed in version 2.4.4.

Severity
HIGH
CVSS score
7.5 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-07-30 17:16:33.900000
Last modified
2026-10-23 22:10:00.160000
View original CVE JSON
{
  "id": "CVE-2026-62663",
  "sourceIdentifier": "[email protected]",
  "published": "2026-07-30T17:16:33.900",
  "lastModified": "2026-10-23T22:10:00.160",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Banks generates meaningful LLM prompts using a simple template language. In versions prior to 2.4.4, all four media filters (image, audio, video, document) in banks accept untrusted user input as file paths via Path(value) and pass them directly to open(file_path, \"rb\") without any path sanitization, canonicalization, or directory restriction. An attacker who controls template variables passed to a banks Prompt can use path traversal (../) to read arbitrary files accessible to the Python process—including .env files, SSH keys, cloud credentials, source code, /etc/passwd, and /etc/shadow—with the content returned base64-encoded in the rendered prompt output, making exfiltration trivial. This is particularly dangerous for applications that use banks to process user-provided template variables before sending prompts to an LLM. This issue has been fixed in version 2.4.4."
    },
    {
      "lang": "es",
      "value": "Banks genera prompts significativos para LLM usando un lenguaje de plantilla simple. En versiones anteriores a la 2.4.4, los cuatro filtros de medios (imagen, audio, video, documento) en banks aceptan entrada de usuario no confiable como rutas de archivo a través de Path(value) y las pasan directamente a open(file_path, “rb”) sin ninguna sanitización de ruta, canonicalización o restricción de directorio. Un atacante que controla las variables de plantilla pasadas a un Prompt de banks puede usar salto de ruta (.. / ) para leer archivos arbitrarios accesibles al proceso de Python -incluyendo archivos .env, claves SSH, credenciales de la nube, código fuente, /etc/p4ssd y /etc/sha4dow- con el contenido devuelto codificado en base64 en la salida del prompt renderizado, haciendo que la exfiltración sea trivial. Esto es particularmente peligroso para aplicaciones que usan banks para procesar variables de plantilla proporcionadas por el usuario antes de enviar prompts a un LLM. Este problema ha sido solucionado en la versión 2.4.4."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "masci",
          "product": "banks",
          "versions": [
            {
              "version": "< 2.4.4",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/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-07-30T17:38:03.008311Z",
          "id": "CVE-2026-62663",
          "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-22"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/masci/banks/security/advisories/GHSA-98rr-gvc9-3cjh",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/masci/banks/security/advisories/GHSA-98rr-gvc9-3cjh",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
    }
  ]
}