{"vuid":"VU#907705","idnumber":"907705","name":"Graphql-upload-minimal has a prototype pollution vulnerability.","keywords":null,"overview":"### Overview\r\nVersion 1.6.1 of the Flash Payments package `graphql-upload-minimal` is vulnerable to prototype pollution. This vulnerability, located in the `processRequest()` function, allows an attacker to inject special property names into the `operations.variables` object and pollute global object prototypes, ultimately impacting the entire Node.js process.   \r\n\r\n### Description\r\n`graphql-upload-minimal` is a lightweight Node.js middleware package that implements the GraphQL multipart request specification, enabling file uploads in GraphQL servers. It parses `multipart/form-data` requests and maps uploaded files into the GraphQL `operations` object, making them accessible to resolvers. \r\nThe vulnerability exists in the `processRequest()` function, which handles multipart file upload requests. It processes a user-supplied `map` parameter that determines where uploaded files should be placed within the GraphQL `operations.variables` object.  \r\nThe issue occurs because user-supplied property paths are not validated before being resolved and written into the target object. Special JavaScript property names such as `__proto__`, `__constructor__`, and `prototype` are not restricted, allowing crafted paths to traverse the prototype chain and modify `Object.prototype`.\r\nBecause `Object.prototype` is the base prototype from which most JavaScript objects inherit, altering it results in global prototype pollution across the Node.js process. Once polluted, manipulated properties may be inherited by all subsequently created objects for the lifetime of the process. \r\n\r\n### Impact\r\nBecause `Object.prototype` is the foundational prototype for most JavaScript objects, modifying it can affect the behavior of all Node.js processes. Since the impact extends across the entire Node.js process and persists until the service is restarted, it can potentially result in logic corruption, denial of service, or unintended privilege escalation. \r\n\r\n### Solution\r\nUsers should upgrade to `graphql-upload-minimal` version 1.6.3 or later, which can be found at https://github.com/flash-oss/graphql-upload-minimal/tree/master . The patched release introduces safeguards to prevent unsafe prototype-chain property assignments during multipart file upload processing. \r\n\r\n### Acknowledgements\r\nThanks to Maor Caplan from Alma Security for reporting this vulnerability. This document was written by Michael Bragg.","clean_desc":null,"impact":null,"resolution":null,"workarounds":null,"sysaffected":null,"thanks":null,"author":null,"public":["https://github.com/flash-oss/graphql-upload-minimal/compare/v1.6.1...flash-oss:graphql-upload-minimal:v1.6.3"],"cveids":["CVE-2025-65587"],"certadvisory":null,"uscerttechnicalalert":null,"datecreated":"2026-03-12T18:47:17.495093Z","publicdate":"2026-03-12T18:47:17.342970Z","datefirstpublished":"2026-03-12T18:47:17.506603Z","dateupdated":"2026-03-12T18:47:17.342965Z","revision":1,"vrda_d1_directreport":null,"vrda_d1_population":null,"vrda_d1_impact":null,"cam_widelyknown":null,"cam_exploitation":null,"cam_internetinfrastructure":null,"cam_population":null,"cam_impact":null,"cam_easeofexploitation":null,"cam_attackeraccessrequired":null,"cam_scorecurrent":null,"cam_scorecurrentwidelyknown":null,"cam_scorecurrentwidelyknownexploited":null,"ipprotocol":null,"cvss_accessvector":null,"cvss_accesscomplexity":null,"cvss_authentication":null,"cvss_confidentialityimpact":null,"cvss_integrityimpact":null,"cvss_availabilityimpact":null,"cvss_exploitablity":null,"cvss_remediationlevel":null,"cvss_reportconfidence":null,"cvss_collateraldamagepotential":null,"cvss_targetdistribution":null,"cvss_securityrequirementscr":null,"cvss_securityrequirementsir":null,"cvss_securityrequirementsar":null,"cvss_basescore":null,"cvss_basevector":null,"cvss_temporalscore":null,"cvss_environmentalscore":null,"cvss_environmentalvector":null,"metric":null,"vulnote":180}