CVE-2026-118782: Forge: PKCS#12 MAC forgery and constant-key PBE via zero iteration count
Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, node-forge accepted a PKCS#12 MAC or PKCS#12 password-based encryption iteration count of zero or less. pki.pbe.generatePkcs12Key() then returned a constant key independent of the password and salt, allowing crafted PKCS#12 input processed by forge.pkcs12.pkcs12FromAsn1() to bypass password-based integrity checks. Predictable encryption keys and IVs also affected PKCS#12 PBE using pbeWithSHAAnd3-KeyTripleDES-CBC or pbewithSHAAnd40BitRC2-CBC, including shrouded key bags, encrypted SafeContents, and PKCS#8 ENCRYPTED PRIVATE KEY input processed independently by forge.pki.decryptPrivateKeyInfo(). PBES2/PBKDF2-encrypted content is unaffected. This issue is fixed in version 1.4.1.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
node-forgeto a version that resolves this vulnerability.Fixed in 1.4.1
Event History
Frequently Asked Questions
Which deployments are exposed?
Deployments using node-forge versions before 1.4.1 are affected when they process PKCS#12 data or PKCS#8 ENCRYPTED PRIVATE KEY input through the affected APIs using the listed legacy PKCS#12 PBE algorithms. PBES2/PBKDF2-encrypted content is unaffected.
What does an attacker need to exploit this issue?
An attacker needs to supply crafted PKCS#12 input that is processed by forge.pkcs12.pkcs12FromAsn1(), with a MAC or password-based encryption iteration count of zero or less. PKCS#8 encrypted private-key input handled by forge.pki.decryptPrivateKeyInfo() is also affected independently for the specified legacy PBE schemes.
What is the remediation?
Upgrade node-forge to version 1.4.1, which fixes the issue. The affected behavior occurs in versions prior to 1.4.1.
Which encryption schemes are affected?
The predictable-key and IV behavior affects PKCS#12 PBE using pbeWithSHAAnd3-KeyTripleDES-CBC and pbewithSHAAnd40BitRC2-CBC. This includes shrouded key bags and encrypted SafeContents.