Prototype Pollution Vulnerability in exceljs-hardened
The exceljs-hardened library before version 5.0.0 is vulnerable to prototype pollution, allowing unauthenticated remote attackers to inject malicious properties into Object.prototype via crafted cell note data.
CVE search metadata
CVE search record: CVE-2026-78207. Severity: critical. CVSS: 9.4. KEV: no. Product: exceljs-hardened, exceljs-hardened (< 5.0.0). Brief: Prototype Pollution Vulnerability in exceljs-hardened. Brief link: https://feed.craftedsignal.io/briefs/2026-08-exceljs-prototype-pollution/
What's new
The exceljs-hardened library, a hardened fork of the popular exceljs Node.js package, contains a critical prototype pollution vulnerability (CVE-2026-78207) in its deepMerge helper function. The vulnerability exists because the function fails to sanitize or reject sensitive keys such as __proto__, constructor, or prototype during the merging of JSON objects representing Excel cell notes. An attacker capable of influencing the input parsed by the library can leverage this flaw to pollute the global Object.prototype. Once the prototype is polluted, the attacker can modify the behavior of all plain objects within the JavaScript application's process. This can lead to various outcomes depending on the application logic, including remote code execution (RCE) if the application relies on polluted properties for security-sensitive checks, or service disruption. The issue impacts all versions prior to 5.0.0.
Attack Chain
- The application parses untrusted user-supplied JSON data intended for Excel file generation or processing.
- The attacker crafts a malicious JSON payload containing a
__proto__property with arbitrary nested attributes. - The malicious payload is passed to the
exceljs-hardenedlibrary for processing as a cell note object. - The
deepMergehelper function is invoked to merge the object properties. - The function fails to identify or block the
__proto__key during the recursive merge process. - The
Object.prototypeis modified with the malicious property defined by the attacker. - The application subsequently performs operations on other objects that inherit from the modified prototype.
- The attacker achieves code execution or logic bypass by influencing the application's processing of these polluted objects.
Impact
Successful exploitation of CVE-2026-78207 allows an attacker to manipulate the execution environment of a Node.js application. While the direct impact is prototype pollution, this vulnerability serves as a primitive for more severe attacks, such as cross-site scripting (XSS), bypass of security controls, or remote code execution, depending on how the application handles object properties. Any Node.js-based web service that utilizes exceljs-hardened to process user-provided spreadsheet files is at risk.
Recommendation
- Update the
exceljs-hardeneddependency to version 5.0.0 or later immediately to include the required sanitization patches for thedeepMergehelper. - Audit application code for usage of
exceljs-hardenedto confirm exposure and ensure that user-supplied input is validated before being passed to library functions. - Implement Input Validation and Sanitization for all JSON objects processed by the library.
- Restrict the ability of untrusted users to upload or modify spreadsheet content processed by the application.
Immediate actions
Upgrade exceljs-hardened to version 5.0.0 or higher across all development and production environments.
Mitigations
Upgrade dependencies and perform regression testing on spreadsheet processing logic.
CVE-2026-78207