{"document":{"acknowledgments":[{"urls":["https://kb.cert.org/vuls/id/907705#acknowledgements"]}],"category":"CERT/CC Vulnerability Note","csaf_version":"2.0","notes":[{"category":"summary","text":"### 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.","title":"Summary"},{"category":"legal_disclaimer","text":"THIS DOCUMENT IS PROVIDED ON AN 'AS IS' BASIS AND DOES NOT IMPLY ANY KIND OF GUARANTEE OR WARRANTY, INCLUDING THE WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. YOUR USE OF THE INFORMATION ON THE DOCUMENT OR MATERIALS LINKED FROM THE DOCUMENT IS AT YOUR OWN RISK. ","title":"Legal Disclaimer"},{"category":"other","text":"CERT/CC Vulnerability Note is a limited advisory. It primarily identifies vendors impacted by the advisory and not specific products. We only support \"known_affected\" and \"known_not_affected\" status. Please consult the vendor's statements and advisory URL if provided by the vendor for more details ","title":"Limitations of Advisory"}],"publisher":{"category":"coordinator","contact_details":"Email: cert@cert.org, Phone: +1412 268 5800","issuing_authority":"CERT/CC under DHS/CISA https://www.cisa.gov/cybersecurity also see https://kb.cert.org/ ","name":"CERT/CC","namespace":"https://kb.cert.org/"},"references":[{"url":"https://certcc.github.io/certcc_disclosure_policy","summary":"CERT/CC vulnerability disclosure policy"},{"summary":"CERT/CC document released","category":"self","url":"https://kb.cert.org/vuls/id/907705"},{"url":"https://github.com/flash-oss/graphql-upload-minimal/compare/v1.6.1...flash-oss:graphql-upload-minimal:v1.6.3","summary":"https://github.com/flash-oss/graphql-upload-minimal/compare/v1.6.1...flash-oss:graphql-upload-minimal:v1.6.3"}],"title":"Graphql-upload-minimal has a prototype pollution vulnerability.","tracking":{"current_release_date":"2026-03-12T18:47:17+00:00","generator":{"engine":{"name":"VINCE","version":"3.0.35"}},"id":"VU#907705","initial_release_date":"2026-03-12 18:47:17.342970+00:00","revision_history":[{"date":"2026-03-12T18:47:17+00:00","number":"1.20260312184717.1","summary":"Released on 2026-03-12T18:47:17+00:00"}],"status":"final","version":"1.20260312184717.1"}},"vulnerabilities":[{"title":"A prototype pollution in `processRequest.","notes":[{"category":"summary","text":"A prototype pollution in `processRequest.js` of Flash Payments graphql-upload-minimal version 1.6.1 allows attackers to  inject properties into `Object.prototype`, which allows polluting authentication related properties."}],"cve":"CVE-2025-65587","ids":[{"system_name":"CERT/CC V Identifier ","text":"VU#907705"}]}],"product_tree":{"branches":[]}}