CVE-2026-75529
Full vulnerability record from the local CVENow database.
Description
Pandora is affected by a stored cross-site scripting vulnerability in the PDF download functionality. The /task-download/<task_id>/.../pdf endpoint verifies that the submitted file is a PDF using Pandora's content-based file-type detection, but previously returned the file using send_file(task.file.path) without explicitly specifying the MIME type or forcing it to be downloaded as an attachment. Because Flask determines the response MIME type from the filename when a path is supplied, an attacker could submit a file whose content is recognized by Pandora as a PDF while its filename or extension causes the download endpoint to return it with a different, potentially active MIME type. A specially crafted PDF/polyglot file could therefore be served inline and interpreted by a victim's browser as HTML or another executable web format. If a victim with access to the submitted analysis follows the PDF download link, attacker-controlled script could execute in the security context of the Pandora application, potentially allowing access to application data or actions using the victim's session. The patch prevents the issue by explicitly returning PDF downloads with Content-Type: application/pdf, forcing Content-Disposition: attachment, and assigning a trusted .pdf filename based on the task UUID.
View original CVE JSON
{
"id": "CVE-2026-75529",
"sourceIdentifier": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"published": "2026-08-17T21:16:58.923",
"lastModified": "2026-10-23T16:10:00.313",
"vulnStatus": "Awaiting Analysis",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Pandora is affected by a stored cross-site scripting vulnerability in the PDF download functionality. The /task-download/<task_id>/.../pdf endpoint verifies that the submitted file is a PDF using Pandora's content-based file-type detection, but previously returned the file using send_file(task.file.path) without explicitly specifying the MIME type or forcing it to be downloaded as an attachment. \n\n\nBecause Flask determines the response MIME type from the filename when a path is supplied, an attacker could submit a file whose content is recognized by Pandora as a PDF while its filename or extension causes the download endpoint to return it with a different, potentially active MIME type. \n\n\nA specially crafted PDF/polyglot file could therefore be served inline and interpreted by a victim's browser as HTML or another executable web format. If a victim with access to the submitted analysis follows the PDF download link, attacker-controlled script could execute in the security context of the Pandora application, potentially allowing access to application data or actions using the victim's session.\n\n\nThe patch prevents the issue by explicitly returning PDF downloads with Content-Type: application/pdf, forcing Content-Disposition: attachment, and assigning a trusted .pdf filename based on the task UUID."
},
{
"lang": "es",
"value": "Pandora está afectada por una vulnerabilidad de cross-site scripting almacenado en la funcionalidad de descarga de PDF. El endpoint /task-download/[task_id]/... / pdf verifica que el archivo enviado es un PDF utilizando la detección de tipo de archivo basada en contenido de Pandora, pero previamente devolvía el archivo usando send_file(task.file.path) sin especificar explícitamente el tipo MIME o forzar su descarga como un archivo adjunto.\n\nDebido a que Flask determina el tipo MIME de la respuesta a partir del nombre de archivo cuando se proporciona una ruta, un atacante podría enviar un archivo cuyo contenido es reconocido por Pandora como un PDF mientras que su nombre de archivo o extensión hace que el endpoint de descarga lo devuelva con un tipo MIME diferente, potencialmente activo.\n\nUn archivo PDF/políglota especialmente diseñado podría, por lo tanto, ser servido en línea e interpretado por el navegador de una víctima como HTML u otro formato web ejecutable. Si una víctima con acceso al análisis enviado sigue el enlace de descarga de PDF, script controlado por el atacante podría ejecutarse en el contexto de seguridad de la aplicación Pandora, potencialmente permitiendo el acceso a datos o acciones de la aplicación utilizando la sesión de la víctima.\n\nEl parche previene el problema devolviendo explícitamente las descargas de PDF con Content-Type: application/pdf, forzando Content-Disposition: attachment, y asignando un nombre de archivo .pdf de confianza basado en el UUID de la tarea."
}
],
"affected": [
{
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"affectedData": [
{
"vendor": "pandora-analysis",
"product": "pandora",
"defaultStatus": "unaffected",
"repo": "https://github.com/pandora-analysis/pandora",
"versions": [
{
"version": "0",
"lessThanOrEqual": "1.12.5",
"versionType": "semver",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"baseScore": 6.9,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "LOW",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-18T15:16:41.342178Z",
"id": "CVE-2026-75529",
"options": [
{
"exploitation": "none"
},
{
"automatable": "yes"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-79"
}
]
}
],
"references": [
{
"url": "https://github.com/pandora-analysis/pandora/commit/668ec65a93cee327e3d925da2698849c9e65625a",
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8"
}
]
}