CVE-2026-75529 (GCVE-0-2026-75529)
Vulnerability from cvelistv5
Published
2026-08-17 20:52
Modified
2026-08-18 15:16
CWE
  • CWE-79 - Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting')
Summary
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.
Impacted products
Vendor Product Version
pandora-analysis pandora Version: 0    1.12.5
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-75529",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "yes"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-08-18T15:16:41.342178Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-08-18T15:16:47.908Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "pandora",
          "repo": "https://github.com/pandora-analysis/pandora",
          "vendor": "pandora-analysis",
          "versions": [
            {
              "lessThanOrEqual": "1.12.5",
              "status": "affected",
              "version": "0",
              "versionType": "semver"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Jeroen Pinoy"
        },
        {
          "lang": "en",
          "type": "remediation developer",
          "value": "Raphael Vinot"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003ePandora is affected by a stored cross-site scripting vulnerability in the PDF download functionality. The \u003ccode\u003e/task-download/\u0026lt;task_id\u0026gt;/.../pdf\u003c/code\u003e endpoint verifies that the submitted file is a PDF using Pandora\u0027s content-based file-type detection, but previously returned the file using \u003ccode\u003esend_file(task.file.path)\u003c/code\u003e without explicitly specifying the MIME type or forcing it to be downloaded as an attachment. \u003c/p\u003e\n\u003cp\u003eBecause 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. \u003c/p\u003e\n\u003cp\u003eA specially crafted PDF/polyglot file could therefore be served inline and interpreted by a victim\u0027s 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\u0027s session.\u003c/p\u003e\n\u003cp\u003eThe patch prevents the issue by explicitly returning PDF downloads with \u003ccode\u003eContent-Type: application/pdf\u003c/code\u003e, forcing \u003ccode\u003eContent-Disposition: attachment\u003c/code\u003e, and assigning a trusted \u003ccode\u003e.pdf\u003c/code\u003e filename based on the task UUID. \u003c/p\u003e\u003cbr\u003e"
            }
          ],
          "value": "Pandora is affected by a stored cross-site scripting vulnerability in the PDF download functionality. The /task-download/\u003ctask_id\u003e/.../pdf endpoint verifies that the submitted file is a PDF using Pandora\u0027s 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\u0027s 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\u0027s 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."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-209",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-209 XSS Using MIME Type Mismatch"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "Automatable": "NOT_DEFINED",
            "Recovery": "NOT_DEFINED",
            "Safety": "NOT_DEFINED",
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "attackVector": "NETWORK",
            "baseScore": 6.9,
            "baseSeverity": "MEDIUM",
            "privilegesRequired": "NONE",
            "providerUrgency": "NOT_DEFINED",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "NONE",
            "valueDensity": "NOT_DEFINED",
            "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",
            "version": "4.0",
            "vulnAvailabilityImpact": "NONE",
            "vulnConfidentialityImpact": "LOW",
            "vulnIntegrityImpact": "LOW",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-79",
              "description": "CWE-79 Improper Neutralization of Input During Web Page Generation (XSS or \u0027Cross-site Scripting\u0027)",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T20:52:42.520Z",
        "orgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
        "shortName": "CIRCL"
      },
      "references": [
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/pandora-analysis/pandora/commit/668ec65a93cee327e3d925da2698849c9e65625a"
        }
      ],
      "source": {
        "discovery": "UNKNOWN"
      },
      "title": "Stored Cross-Site Scripting via MIME-Type Confusion in PDF Downloads of Pandora",
      "x_generator": {
        "engine": "Vulnogram 0.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
    "assignerShortName": "CIRCL",
    "cveId": "CVE-2026-75529",
    "datePublished": "2026-08-17T20:52:42.520Z",
    "dateReserved": "2026-08-17T20:52:34.285Z",
    "dateUpdated": "2026-08-18T15:16:47.908Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-75529\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-08-18T15:16:41.342178Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-08-18T15:16:44.548Z\"}}], \"cna\": {\"title\": \"Stored Cross-Site Scripting via MIME-Type Confusion in PDF Downloads of Pandora\", \"source\": {\"discovery\": \"UNKNOWN\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"Jeroen Pinoy\"}, {\"lang\": \"en\", \"type\": \"remediation developer\", \"value\": \"Raphael Vinot\"}], \"impacts\": [{\"capecId\": \"CAPEC-209\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-209 XSS Using MIME Type Mismatch\"}]}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV4_0\": {\"Safety\": \"NOT_DEFINED\", \"version\": \"4.0\", \"Recovery\": \"NOT_DEFINED\", \"baseScore\": 6.9, \"Automatable\": \"NOT_DEFINED\", \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"valueDensity\": \"NOT_DEFINED\", \"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\", \"providerUrgency\": \"NOT_DEFINED\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"NONE\", \"subIntegrityImpact\": \"NONE\", \"vulnIntegrityImpact\": \"LOW\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"NONE\", \"subConfidentialityImpact\": \"NONE\", \"vulnConfidentialityImpact\": \"LOW\", \"vulnerabilityResponseEffort\": \"NOT_DEFINED\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"repo\": \"https://github.com/pandora-analysis/pandora\", \"vendor\": \"pandora-analysis\", \"product\": \"pandora\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"1.12.5\"}], \"defaultStatus\": \"unaffected\"}], \"references\": [{\"url\": \"https://github.com/pandora-analysis/pandora/commit/668ec65a93cee327e3d925da2698849c9e65625a\", \"tags\": [\"patch\"]}], \"x_generator\": {\"engine\": \"Vulnogram 0.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"Pandora is affected by a stored cross-site scripting vulnerability in the PDF download functionality. The /task-download/\u003ctask_id\u003e/.../pdf endpoint verifies that the submitted file is a PDF using Pandora\u0027s 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\u0027s 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\u0027s 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.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003ePandora is affected by a stored cross-site scripting vulnerability in the PDF download functionality. The \u003ccode\u003e/task-download/\u0026lt;task_id\u0026gt;/.../pdf\u003c/code\u003e endpoint verifies that the submitted file is a PDF using Pandora\u0027s content-based file-type detection, but previously returned the file using \u003ccode\u003esend_file(task.file.path)\u003c/code\u003e without explicitly specifying the MIME type or forcing it to be downloaded as an attachment. \u003c/p\u003e\\n\u003cp\u003eBecause 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. \u003c/p\u003e\\n\u003cp\u003eA specially crafted PDF/polyglot file could therefore be served inline and interpreted by a victim\u0027s 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\u0027s session.\u003c/p\u003e\\n\u003cp\u003eThe patch prevents the issue by explicitly returning PDF downloads with \u003ccode\u003eContent-Type: application/pdf\u003c/code\u003e, forcing \u003ccode\u003eContent-Disposition: attachment\u003c/code\u003e, and assigning a trusted \u003ccode\u003e.pdf\u003c/code\u003e filename based on the task UUID. \u003c/p\u003e\u003cbr\u003e\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-79\", \"description\": \"CWE-79 Improper Neutralization of Input During Web Page Generation (XSS or \u0027Cross-site Scripting\u0027)\"}]}], \"providerMetadata\": {\"orgId\": \"5a6e4751-2f3f-4070-9419-94fb35b644e8\", \"shortName\": \"CIRCL\", \"dateUpdated\": \"2026-08-17T20:52:42.520Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-75529\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-18T15:16:47.908Z\", \"dateReserved\": \"2026-08-17T20:52:34.285Z\", \"assignerOrgId\": \"5a6e4751-2f3f-4070-9419-94fb35b644e8\", \"datePublished\": \"2026-08-17T20:52:42.520Z\", \"assignerShortName\": \"CIRCL\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…