Sourced from node-forge's changelog.
1.3.0 - 2022-03-17
Security
- Three RSA PKCS#1 v1.5 signature verification issues were reported by Moosa Yahyazadeh (moosa-yahyazadeh@uiowa.edu).
- HIGH: Leniency in checking
digestAlgorithm
structure can lead to signature forgery.
- The code is lenient in checking the digest algorithm structure. This can allow a crafted structure that steals padding bytes and uses unchecked portion of the PKCS#1 encoded message to forge a signature when a low public exponent is being used. For more information, please see "Bleichenbacher's RSA signature forgery based on implementation error" by Hal Finney.
- CVE ID: CVE-2022-24771
- GHSA ID: GHSA-cfm4-qjh2-4765
- HIGH: Failing to check tailing garbage bytes can lead to signature forgery.
- The code does not check for tailing garbage bytes after decoding a
DigestInfo
ASN.1 structure. This can allow padding bytes to be removed and garbage data added to forge a signature when a low public exponent is being used. For more information, please see "Bleichenbacher's RSA signature forgery based on implementation error" by Hal Finney.- CVE ID: CVE-2022-24772
- GHSA ID: GHSA-x4jg-mjrx-434g
- MEDIUM: Leniency in checking type octet.
DigestInfo
is not properly checked for proper ASN.1 structure. This can lead to successful verification with signatures that contain invalid structures but a valid digest.- CVE ID: CVE-2022-24773
- GHSA ID: GHSA-2r2c-g63r-vccr
Fixed
- [asn1] Add fallback to pretty print invalid UTF8 data.
- [asn1]
fromDer
is now more strict and will default to ensuring all input bytes are parsed or throw an error. A new optionparseAllBytes
can disable this behavior.
- NOTE: The previous behavior is being changed since it can lead to security issues with crafted inputs. It is possible that code doing custom DER parsing may need to adapt to this new behavior and optional flag.
- [rsa] Add and use a validator to check for proper structure of parsed ASN.1
RSASSA-PKCS-v1_5
DigestInfo
data. Additionally check that the hash algorithm identifier is a known value from RFC 8017PKCS1-v1-5DigestAlgorithms
. An invalidDigestInfo
or algorithm identifier will now throw an error.
- NOTE: The previous lenient behavior is being changed to be more strict since it could lead to security issues with crafted inputs. It is possible that code may have to handle the errors from these stricter checks.
... (truncated)
6c5b901
Release 1.3.0.0f3972a
Update changelog.dc77b39
Fix error checking.bb822c0
Add advisory links.d4395fe
Update changelog.a4405bb
Improve signature verification tests.aa9372d
Add missing RFC 8017 algorithm identifiers.3f0b49a
Fix signature verification issues.c20f309
Adjust remaining length.e27f612
Remove unused option.